Proteja as transações de pagamento com a prevenção de fraudes

Esta página descreve como proteger eficazmente as transações de pagamento contra ataques, como roubo de dados de cartões, fraude de instrumentos roubados e fraude de pagamento de roubo de conta, através da prevenção de fraudes do reCAPTCHA.

A prevenção de fraudes do reCAPTCHA ajuda a proteger as transações de pagamento através da identificação de ataques manuais direcionados e tentativas de fraudes em grande escala. Forma automaticamente modelos de comportamento e transações para identificar eventos que são provavelmente fraudulentos e podem resultar num diferendo ou numa anulação de débito se forem aceites.

Como parte destes modelos, a prevenção de fraudes do reCAPTCHA examina os sinais de transação para permitir a deteção de fraudes. Por exemplo, uma série de tentativas de compra com preços baixos pode indicar um ataque de roubo de dados de cartões. Na resposta, recebe classificações de risco para diferentes tipos de fraude, que pode usar para enviar a transação para uma revisão manual ou bloquear diretamente transações suficientemente suspeitas.

Para configurar a prevenção de fraudes do reCAPTCHA, tem de concluir os seguintes passos:

  1. Prepare o seu ambiente.

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

  3. Instale o JavaScript do reCAPTCHA no frontend de pagamento instalando uma chave do reCAPTCHA baseada em pontuação.

    Quando o JavaScript é executado, o reCAPTCHA gera um token do reCAPTCHA exclusivo para cada sessão do utilizador e recolhe dados comportamentais do utilizador para o avaliar.

  4. Envie um pedido da API create assessment a partir do seu back-end com dados de transações sobre eventos do utilizador no seu fluxo de trabalho de pagamento.

    Na resposta do pedido da API de criação de avaliações, 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.

  5. Determine a próxima ação para os seus utilizadores com base nas pontuações.

    Pode optar por permitir a transação, pedir validação adicional, encaminhar para uma revisão manual ou bloquear a transação.

Antes de começar

  1. Se for a primeira vez que usa 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. Certifique-se de que o seu ambiente suporta tokens superiores a 8 kB, uma vez que a prevenção de fraudes do reCAPTCHA pode usar tokens maiores.

Ative a prevenção contra fraude do reCAPTCHA

  1. Na Google Cloud consola, aceda à página do reCAPTCHA.

    Aceder ao reCAPTCHA

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

    Se não vir o nome do seu projeto, clique no seletor de recursos e, em seguida, selecione o seu projeto.

  3. Clique em Definições.

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

  5. Clique no botão para ativar e clique em Guardar.

Instale o reCAPTCHA no frontend de pagamento

Para começar a detetar ataques, instale uma chave do reCAPTCHA baseado em pontuação em cada página do fluxo do utilizador de pagamento. Isto inclui a interface onde um utilizador revê o carrinho, seleciona o método de pagamento e conclui a compra. Depois de o utilizador fazer a sua seleção em cada passo, chame grecaptcha.enterprise.execute() para gerar um token. Para saber como instalar chaves baseadas em pontuações e chamar execute(), consulte o artigo Instale chaves baseadas em pontuações.

O exemplo seguinte mostra como integrar uma chave baseada em pontuação num 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>

Pode experimentar este 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>

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

Para ativar os veredictos de fraude de pagamentos, crie avaliações com dados de transações através do método projects.assessments.create.

A integração mais simples inclui transaction_id, payment_method, card_bin e value. Para melhorar a qualidade da deteção, recomendamos que adicione 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 envie sinais adicionais.

Para saber como criar avaliações, consulte o artigo Crie uma avaliação para o seu Website. A prevenção de fraudes do reCAPTCHA pode usar tokens maiores, por isso, certifique-se de que o pedido é enviado num pedido POST em vez de GET e no corpo, não num cabeçalho.

Interprete as avaliações

Depois de começar a enviar os dados de transações, recebe avaliações como uma resposta JSON com o componente fraudPreventionAssessment em riskAnalysis.

O exemplo seguinte é uma resposta de exemplo:

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

A resposta que recebe inclui uma classificação e códigos de motivos, sempre que aplicável. Quanto mais elevada for a pontuação, maior é a probabilidade de a transação ser fraudulenta e arriscada; quanto mais baixa for 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 maior probabilidade de ser fraudulenta e arriscada, e uma pontuação de 0,1 indica que a transação tem maior probabilidade de ser legítima.

É responsável pelas ações que tomar com base na avaliação. Para a integração mais simples, pode definir limites em transactionRisk para contribuir para a sua decisão. Por exemplo, pode contribuir para o envio para uma revisão manual ou para a rejeição direta de transações provavelmente fraudulentas. Também pode usar a pontuação nos seus próprios fluxos de trabalho de fraude ou como parte de regras com o seu sistema existente. Uma vez que o reCAPTCHA examina sinais únicos e tem uma visibilidade única do comportamento na Internet, pode esperar um valor incremental, mesmo com um motor de deteção de fraudes já desenvolvido.

Cada grupo de pontuação é calibrado para uma taxa de falsos positivos máxima, que representa a proporção máxima de utilizadores legítimos que podem ter atrito adicional. Os limites que tem de selecionar dependem das necessidades da sua empresa. Seguem-se alguns exemplos de como pode usar a pontuação transactionRisk:

Tolerância ao risco Limite recomendado Taxa de falsos positivos máxima Exemplo de utilização
Baixo 0,5 5% Exigir validação adicional, como a 2FA, antes de aceitar a transação
Médio 0,7 1% Envie a transação para revisão manual
Alto 0,9 0,1% Rejeitar transação

O que se segue?