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. Escolha a integração de frontend para incorporar automaticamente sinais do dispositivo de frontend ou a integração apenas de API se preferir não integrar no frontend.

    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.

    A integração apenas com a API devolve um veredito usando apenas os dados de transações necessários e não requer este token.

  4. Envie um pedido da API create assessment a partir do seu back-end com dados de transações, usando a integração de front-end ou a integração apenas de API escolhida anteriormente.

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

  5. Determine a ação seguinte para os seus utilizadores com base nas classificações.

    Pode optar por permitir a transação, pedir uma 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. Se estiver a planear uma integração de front-end, verifique se o seu ambiente suporta tokens com mais de 8 KB, porque a prevenção de fraudes do reCAPTCHA pode usar tokens maiores.

Ative a prevenção de fraudes 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, de seguida, em Guardar.

Integração no frontend: instale o reCAPTCHA no seu Website

A utilização da prevenção de fraudes com uma integração de frontend do reCAPTCHA ajuda a proteger contra ataques de roubo de dados de cartões e transações fraudulentas. 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>

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

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

No mínimo, a integração requer os campos payment_method, card_bin e card_last_four. Para melhorar a qualidade da deteção, recomendamos que adicione campos opcionais, como email, phone_number e billing_address.

É necessário um dos seguintes elementos para receber uma avaliação de prevenção de fraudes com integração no front-end:

{
  "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 também 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 símbolos maiores, por isso, verifique se o pedido é enviado num pedido POST em vez de GET e no corpo, não num cabeçalho.

Integração apenas com API: crie avaliações com dados de transações

.

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

Uma vez que a integração apenas da API reCAPTCHA produz uma avaliação de prevenção de fraudes usando apenas os dados de transações que fornece, tem de fornecer, no mínimo, o seguinte:

  1. Endereço de faturação regionCode e postalCode.
  2. Dados de transações 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 das pontuações, recomendamos que forneça o máximo de informações possível e que envie também sinais adicionais.

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": {....
  ....
  }
  .....
  ....
  ....
"fraudPreventionAssessment": {
    "transactionRisk": 0.9,
    "riskReasons": HIGH_TRANSACTION_VELOCITY
}
}

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 realizar 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?