Proteger transações de pagamento com a Prevenção contra fraudes

Nesta página, descrevemos como proteger as transações de pagamento contra ataques, como fraude de cartão, roubo de instrumentos e invasão de contas, usando a Prevenção de fraudes do reCAPTCHA.

A prevenção de fraudes do reCAPTCHA ajuda a proteger transações de pagamento identificando ataques manuais direcionados e tentativas de fraude em larga escala. Ele treina automaticamente modelos de comportamento e transação para identificar eventos que provavelmente são fraudulentos e podem resultar em uma disputa ou estorno se aceitos.

Como parte desses modelos, a prevenção contra fraudes do reCAPTCHA examina os indicadores de transação para permitir a detecção de fraudes. Por exemplo, uma série de tentativas de compra com preços baixos pode indicar um ataque de falsificação de cartões. Na resposta, você recebe pontuações de risco para diferentes tipos de fraude, que podem ser usadas para enviar a transação a uma análise manual ou bloquear diretamente transações suspeitas.

Para configurar a prevenção contra fraudes do reCAPTCHA, siga estas etapas:

  1. Instale o reCAPTCHA JavaScript no front-end de pagamento instalando uma chave reCAPTCHA baseada em pontuação.

    Quando o JavaScript é executado, o reCAPTCHA gera um token reCAPTCHA exclusivo para cada sessão de usuário e coleta dados comportamentais para avaliar o usuário.

  2. Envie uma solicitação de API de criação de avaliação do back-end com dados de transação sobre eventos do usuário no fluxo de pagamento.

    Na resposta da solicitação da API de criação de avaliação, o reCAPTCHA fornece uma pontuação para o risco de transação e um código de motivo adicional (por exemplo, suspected_carding), se aplicável.

  3. Determine a próxima ação dos usuários com base nas pontuações.

    Você pode permitir a transação, pedir uma verificação adicional, encaminhar para uma análise manual ou bloquear a transação.

Antes de começar

  1. Se você não conhece o reCAPTCHA, faça o seguinte:

    1. Configure o reCAPTCHA no seu projeto do Google Cloud.

    2. Crie uma chave reCAPTCHA baseada em pontuação.

  2. Ative a prevenção contra fraudes do reCAPTCHA no seu projeto do Google Cloud:

    1. No console do Google Cloud, acesse a página reCAPTCHA.

      Acessar o reCAPTCHA

    2. Verifique se o nome do projeto aparece no seletor de recursos.

      Se você não encontrar o nome do projeto, clique no seletor de recursos e selecione o projeto.

    3. Clique em Configurações.

    4. No painel Prevenção contra fraudes, clique em Configurar.

    5. Clique no botão Ativar e em Salvar.

  3. Verifique se o ambiente oferece suporte a tokens maiores que 8 KB, porque a prevenção contra fraudes do reCAPTCHA pode usar tokens maiores.

Instalar o reCAPTCHA no front-end de pagamento

Para começar a detectar ataques, instale uma chave reCAPTCHA com base em pontuação em cada página do seu fluxo de usuário para pagamentos. Isso inclui a interface em que o usuário analisa o carrinho, seleciona a forma de pagamento e finaliza a compra. Depois que o usuário escolher uma opção em cada etapa, chame grecaptcha.enterprise.execute() para gerar um token. Para saber como instalar chaves baseadas em pontuação e chamar execute(), consulte Instalar chaves baseadas em pontuação.

O exemplo a seguir mostra como integrar uma chave baseada em pontuação a um evento de transação de cartão de crédito:

function submitForm() {
  grecaptcha.enterprise.ready(function() {
    grecaptcha.enterprise.execute(
      'reCAPTCHA_site_key', {action: 'purchase'}).then(function(token) {
       document.getElementById("token").value = token;
       document.getElementByID("paymentForm").submit();
    });
  });
}
<form id="paymentForm" action="?" method="POST">
  Total: $1.99
  Credit Card Number: <input name="cc-number" id="cc-number" autocomplete="cc-number"><br/>
  <input type="hidden" id="token" name="recaptcha_token"/>
  <button onclick="submitForm()">Purchase</button>
</form>
<script src="https://www.google.com/recaptcha/enterprise.js" async defer></script>

Você pode experimentar esse código no JSFiddle clicando no ícone <> no canto superior direito da janela de código.

<html>
  <head>
    <title>Protected Payment</title>
    <script src="https://www.google.com/recaptcha/enterprise.js" async defer></script>
    <script>
    function submitForm() {
      grecaptcha.enterprise.ready(function() {
        grecaptcha.enterprise.execute(
          'reCAPTCHA_site_key', {action: 'purchase'}).then(function(token) {
           document.getElementById("token").value = token;
           document.getElementByID("paymentForm").submit();
        });
      });
    }
    </script>
  </head>
  <body>
    <form id="paymentForm" action="?" method="POST">
      Total: $1.99
      Credit Card Number: <input name="cc-number" id="cc-number" autocomplete="cc-number"><br/>
      <input type="hidden" id="token" name="recaptcha_token"/>
      <button onclick="submitForm()">Purchase</button>
    </form>
  </body>
</html>

Criar avaliações com dados de transações

Para ativar os vereditos de fraude de pagamento, crie avaliações com dados de transação usando os campos adicionais no método projects.assessments.create.

A integração mais simples inclui transaction_id, payment_method, card_bin e value. Para melhorar a qualidade da detecção, recomendamos adicionar campos opcionais, como email e billing_address.

{
  "event": {
    "token": "YOUR_TOKEN",
    "site_key": "KEY_ID",
    "expected_action": "YOUR_CHECKOUT_ACTION_NAME",
    "transaction_data": {
            "transaction_id": "txid-1234567890",
            "payment_method": "credit-card",
            "card_bin": "411111",
            "card_last_four": "1234",
            "currency_code": "USD",
            "value": 39.98,
            "user": {
                "email": "someEmailAddress@example.com"
            },
            "billing_address": {
                "recipient": "name1 name2",
                "address": [
                    "123 Street Name",
                    "Apt 1"
                ],
                "locality": "Sunnyvale",
                "administrative_area": "CA",
                "region_code": "USA",
                "postal_code": "123456"
            }
        }
    }
}

Para melhorar a qualidade das pontuações, recomendamos que você envie outros indicadores.

Para saber como criar avaliações, consulte Criar uma avaliação para seu site. A prevenção de fraude do reCAPTCHA pode usar tokens maiores. Portanto, verifique se a solicitação é enviada em uma solicitação POST, e não GET, e no corpo, não em um cabeçalho.

Interpretar avaliações

Depois de começar a enviar os dados da transação, você vai receber avaliações como uma resposta JSON com o componente fraudPreventionAssessment em riskAnalysis.

Confira a seguir um exemplo de resposta:

{
  "event": {....
  ....
  }
  .....
  ....
  ....
"riskAnalysis": {
    "score": "0.5"
    "reasons": SUSPECTED_CARDING
}
"fraudPreventionAssessment": {
    "transactionRisk": 0.9,
}
}

A resposta que você receber vai incluir uma pontuação e códigos de motivo, quando aplicável. Quanto maior a pontuação, maior a probabilidade de a transação ser fraudulenta e arriscada. Quanto menor a pontuação, maior a probabilidade de a transação ser legítima. Por exemplo, uma pontuação de 0,9 indica que a transação tem mais probabilidade de ser fraudulenta e arriscada, e uma pontuação de 0,1 indica que a transação é mais provável que seja legítima.

Você é responsável pelas ações que tomar com base na avaliação. Para a integração mais simples, defina limites em transactionRisk para contribuir com sua decisão. Por exemplo, ela pode contribuir para o envio para uma revisão manual ou a rejeição direta de transações provavelmente fraudulentas. Você também pode usar a pontuação nos seus próprios fluxos de trabalho de fraude ou como parte das regras do seu sistema atual. Como o reCAPTCHA examina indicadores exclusivos e tem uma visibilidade única do comportamento na Internet, é possível esperar um valor incremental mesmo com um mecanismo de detecção de fraudes já maduro.

A seguir