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

Nesta página, descrevemos como proteger transações de pagamento contra ataques, como carding, fraude de instrumentos roubados e fraude de pagamento por invasão de conta, usando a prevenção de fraudes do reCAPTCHA.

A prevenção contra fraudes do reCAPTCHA ajuda a proteger transações de pagamento identificando ataques manuais direcionados e tentativas de fraude em grande 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 forem 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 carding. Na resposta, você recebe pontuações de risco para diferentes tipos de fraude, que podem ser usadas para enviar a transação para uma análise manual ou bloquear diretamente transações suficientemente suspeitas.

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

  1. Preparar o ambiente.

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

  3. Escolha a integração de front-end para incorporar automaticamente indicadores do dispositivo de front-end ou a integração somente de API se preferir não integrar no front-end.

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

    A integração somente com API retorna um veredito usando apenas os dados de transação necessários e não exige esse token.

  4. Envie uma solicitação da API create assessment do seu back-end com dados de transação usando a integração de front-end ou a integração somente de API escolhida anteriormente.

    Na resposta da solicitação da API create assessment, o reCAPTCHA fornece uma pontuação para o risco de transação e outros motivos de explicabilidade (por exemplo, HIGH_TRANSACTION_VELOCITY), se aplicável.

  5. Determine a próxima ação para seus usuários com base nas pontuações.

    Você pode permitir a transação, pedir uma verificação adicional, encaminhar para uma revisão 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 Google Cloud projeto.

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

  2. Se você estiver planejando uma integração de front-end, verifique se o ambiente aceita tokens maiores que 8 kB, porque a prevenção contra fraudes do reCAPTCHA pode usar tokens maiores.

Ativar a prevenção contra fraudes do reCAPTCHA

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

    Acessar o reCAPTCHA

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

    Se você não vir o nome do projeto, clique no seletor de recursos para selecioná-lo.

  3. Clique em Configurações.

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

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

Integração de front-end: instale o reCAPTCHA no seu site

Usar a prevenção contra fraudes com uma integração de front-end do reCAPTCHA ajuda a proteger contra ataques de carding e transações fraudulentas. Para começar a detectar ataques, instale uma chave de reCAPTCHA com base em pontuação em cada página do seu fluxo de usuário para pagamentos. Isso inclui a interface em que um usuário revisa o carrinho, seleciona a forma de pagamento e conclui a compra. Depois que o usuário fizer a seleçã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>

Integração de front-end: criar avaliações com dados de transação

Para receber veredictos de fraude de pagamento, crie avaliações com Dados da transação usando os campos adicionais no método projects.assessments.create.

No mínimo, a integração exige os campos payment_method, card_bin e card_last_four. Para melhorar a qualidade da detecção, recomendamos adicionar campos opcionais, como email, phone_number e billing_address.

Para receber uma avaliação de prevenção contra fraude com integração de front-end, é necessário atender a um dos seguintes requisitos:

{
  "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ê também envie outros indicadores.

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

Integração somente com API: criar avaliações com dados de transação

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

Como a integração somente de API do reCAPTCHA gera uma avaliação de prevenção contra fraude usando apenas os dados de transação fornecidos, você precisa fornecer, no mínimo, o seguinte:

  1. Endereço de faturamento regionCode e postalCode.
  2. Dados de transação paymentMethod.
  3. Uma das seguintes opções:
{
  "event": {
    "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": {
                "account_id": "abcde12345",
                "email": "someEmailAddress@example.com",
                "phone_number": "+18005550175",
            },
            "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 dos índices, recomendamos que você forneça o máximo de entradas possível e também envie outros indicadores.

Interpretar avaliações

Depois de começar a enviar os dados de 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": {....
  ....
  }
  .....
  ....
  ....
"fraudPreventionAssessment": {
    "transactionRisk": 0.9,
    "riskReasons": HIGH_TRANSACTION_VELOCITY
}
}

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 chances de ser fraudulenta e arriscada, e uma pontuação de 0,1 indica que a transação tem mais chances de ser 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, ele pode contribuir para o envio a uma análise manual ou para 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 de regras com seu sistema atual. Como o reCAPTCHA examina indicadores exclusivos e tem uma visibilidade única do comportamento na Internet, você pode esperar um valor incremental mesmo com um mecanismo de detecção de fraude já desenvolvido.

Cada bucket de pontuação é calibrado para uma taxa máxima de falsos positivos, que representa a proporção máxima de usuários legítimos que podem ter mais dificuldades. Os limites que você precisa selecionar dependem das necessidades da sua empresa. Confira alguns exemplos de como usar a pontuação transactionRisk:

Tolerância de risco Limite recomendado Taxa máxima de falso positivo Exemplo de uso
Baixo 0,5 5% Exigir verificação adicional, como a autenticação de dois fatores, antes de aceitar a transação
Médio 0,7 1% Enviar transação para revisão manual
Alta 0,9 0,1% Rejeitar transação

A seguir