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

Nesta página, descrevemos como proteger de maneira eficaz as transações de pagamento contra ataques, como cartão de crédito, fraude de instrumento roubado e fraude de pagamento por invasão de conta usando a prevenção contra fraudes do reCAPTCHA Enterprise.

A prevenção contra fraudes do reCAPTCHA Enterprise ajuda você a proteger transações de pagamento identificando ataques manuais direcionados e tentativas de fraude dimensionadas. Ele treina automaticamente modelos de comportamento e transação para identificar eventos que provavelmente são fraudulentos e que podem resultar em disputa ou estorno, se aceito.

Como parte desses modelos, a prevenção contra fraudes do reCAPTCHA Enterprise examina os sinais 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 a uma revisão manual ou bloquear diretamente transações suspeitas o suficiente.

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

  1. Instale o reCAPTCHA Enterprise no front-end de pagamento.

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

  3. Anote as avaliações com eventos de transação.

  4. Interprete respostas para resolver possíveis fraudes.

Antes de começar

  1. Consulte as informações de preços do reCAPTCHA Enterprise Fraud Prevention.

  2. Prepare seu ambiente para o reCAPTCHA Enterprise.

  3. Crie chaves baseadas em pontuação.

  4. Confirme se sua integração é compatível com tokens maiores que 8 KB. A prevenção contra fraudes do reCAPTCHA Enterprise pode usar tokens maiores. Portanto, confirme se eles são enviados em solicitações POST, em vez de GET, e no corpo, não em um cabeçalho.

Instalar o reCAPTCHA Enterprise no front-end de pagamento

Para começar a detectar ataques, instale uma chave 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 analisa 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.

No exemplo a seguir, mostramos como integrar uma chave com base em pontuação em 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 uma avaliação com dados de transação

Para ativar vereditos de fraude de pagamento, crie avaliações com dados de transação usando os campos adicionais no método projects.assessments.create. Para usar esse recurso, o Google precisa ativá-lo na sua organização. Para solicitar acesso a esse recurso, entre em contato.

A integração mais simples inclui o ID da transação, a forma de pagamento, a moeda e o valor da transação.

{
  "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,
    }
  }
}

Os campos a seguir são opcionais, mas recomendamos que você os forneça para melhorar a qualidade da detecção de fraudes.

{
  "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,
      "shipping_value": 7.99,
      "shipping_address": {
        "recipient": "name1 name2",
        "address": "123 Street Name",
        "address": "Apt 1",
        "locality": "Sunnyvale",
        "administrative_area": "CA",
        "region_code": "USA",
        "postal_code": "123456"
      },
      "billing_address": {
        "recipient": "name1 name2",
        "address": "123 Street Name",
        "address": "Apt 1",
        "locality": "Sunnyvale",
        "administrative_area": "CA",
        "region_code": "USA",
        "postal_code": "123456"
      },
      "user": {
        "account_id": "abcde12345",
        "creation_ms": 1650000000000,
        "email": "user@example.com",
        "email_verified": true,
        "phone_number": "+16502530000",
        "phone_verified" false
      },
      "merchant": {
        "account_id": "abcde12345",
        "creation_ms": 1650000000000,
        "email": "user@example.com",
        "email_verified": true,
        "phone_number": "+16502530000",
        "phone_verified": false
      },
      "items": {
        "name": "first item",
        "value": 19.99,
        "quantity": 1,
        "merchant_account_id": "abcde12345",
      },
      "items": {
        "name": "second item",
        "value": 19.99,
        "quantity": 1,
        "merchant_account_id": "abcde12345",
      },
      "gateway_info": {
        "name": "google",
        "gateway_response_code": "SUCCESS",
        "avs_response_code": "Y",
        "cvv_response_code": "Y",
      }
    }
  }
}

Para saber como criar avaliações, consulte Criar uma avaliação para seu site.

Anotar avaliações com eventos de transação

Para ter o melhor desempenho, a prevenção contra fraudes do reCAPTCHA Enterprise precisa de visibilidade dos eventos do ciclo de vida do pagamento das transações. Portanto, você precisa enviar anotações para as avaliações que criou com os dados da transação. Por exemplo, é necessário fornecer as informações da transação para a prevenção contra fraudes do reCAPTCHA Enterprise como um evento de transação nos seguintes cenários:

  • O provedor de pagamento aceita ou recusa a transação.

  • O comerciante emite um reembolso

  • O emissor do pagamento solicita um reembolso

Para saber mais sobre como enviar anotações, consulte Anotar avaliações.

Recomendamos que você faça essas solicitações automaticamente como parte da lógica correspondente no sistema quando os dados estiverem disponíveis, como quando o status de uma transação muda.

Depois que você cria uma avaliação com os dados de transação incluídos, a prevenção contra fraudes do reCAPTCHA Enterprise retorna um veredito e um assessment_id. Anote a avaliação com eventos de transação nos seguintes estágios importantes do ciclo de vida do pagamento, quando eles ocorrerem:

Tipo de evento Descrição Exemplo de motivo Exemplo de valor
MERCHANT_APPROVE | MERCHANT_DENY Quando você decide se a transação tem permissão para continuar. IN_HOUSE N/A
AUTHORIZATION | AUTHORIZATION_DECLINE Quando você envia a transação a ser processada, e o emissor do cartão decide se vai permitir que ela prossiga. 82 (um código de motivo que significa que o código de segurança do cartão estava incorreto) N/A
CHARGEBACK Quando a transação é estornada. Card Reported Stolen 20 (representando um estorno parcial de 20 unidades de moeda)

Com o tipo de evento CHARGEBACK, inclua o código do motivo do estorno fornecido pelo emissor do cartão usando o campo reason. Além disso, inclua o valor monetário cobrado no campo value se a transação tiver sido parcialmente estornada.

No campo reason do evento de transação, inclua termos de esclarecimento para fornecer mais contexto sobre o motivo do evento ou forneça códigos de motivo recebidos diretamente da rede de pagamentos ou do emissor do cartão. Esses termos e códigos diferem dependendo do tipo de evento.

A tabela a seguir especifica a lista completa de tipos de evento de transação:

Motivo da anotação Descrição
MERCHANT_APPROVE Indica que a transação foi aprovada pelo comerciante. Os motivos relacionados podem incluir termos como IN_HOUSE, ACCERTIFY, CYBERSOURCE ou MANUAL_REVIEW.
MERCHANT_DENY Indica que a transação foi negada e concluída devido aos riscos detectados pelo comerciante. Os motivos relacionados podem incluir termos como IN_HOUSE, ACCERTIFY, CYBERSOURCE ou MANUAL_REVIEW.
MANUAL_REVIEW Indica que a transação está sendo avaliada por um ser humano devido a suspeita ou risco.
AUTHORIZATION Indica que a tentativa de autorização com o emissor do cartão foi bem-sucedida.
AUTHORIZATION_DECLINE Indica que a tentativa de autorização com o emissor do cartão falhou. Os motivos incluídos podem incluir o 54 da Visa indicando que o cartão está vencido ou 82 indicando que o código de segurança do cartão (CSC) está incorreto.
PAYMENT_CAPTURE Indica que a transação foi concluída porque os fundos foram liquidados.
PAYMENT_CAPTURE_DECLINE Indica que não foi possível concluir a transação porque os fundos não foram liquidados.
CANCEL Indica que a transação foi cancelada. Especifique o motivo do cancelamento. Por exemplo, INSUFFICIENT_INVENTORY.
CHARGEBACK_INQUIRY Indica que o comerciante recebeu uma consulta de estorno devido a uma fraude na transação. Ele solicita mais informações antes da emissão oficial de um estorno por fraude e do envio de uma notificação formal de estorno.
CHARGEBACK_ALERT Indica que o comerciante recebeu um alerta de estorno devido a uma fraude na transação. O processo para resolver a disputa sem envolver a rede de pagamentos é iniciado.
FRAUD_NOTIFICATION Indica que uma notificação de fraude foi emitida para a transação, enviada pelo banco emissor do instrumento de pagamento porque a transação parece ser fraudulenta. Recomendamos incluir dados TC40 ou SAFE no campo reason para esse tipo de evento. Para estornos parciais, recomendamos que você inclua um valor no campo value.
CHARGEBACK Indica que o comerciante foi informado pela rede de pagamentos de que a transação entrou no processo de estorno devido a uma fraude. Os exemplos de código de motivo incluem 6005 e 6041 do Discover. Para estornos parciais, recomendamos que você inclua um valor no campo value.
CHARGEBACK_REPRESENTMENT Indica que a transação entrou no processo de estorno devido a fraude e que o comerciante optou por participar da representação. Os exemplos de motivo incluem 6005 e 6041 do Discover. Para estornos parciais, recomendamos que você inclua um valor no campo value.
CHARGEBACK_REVERSE Indica que a transação sofreu um estorno por fraude que era ilegítimo e, por isso, foi revertido. Para estornos parciais, recomendamos que você inclua um valor no campo value.
REFUND_REQUEST Indica que o comerciante recebeu um reembolso por uma transação concluída. Para reembolsos parciais, recomendamos que você inclua um valor no campo value. Exemplo de motivo: FRAUD.
REFUND_DECLINE Indica que o comerciante recebeu uma solicitação de reembolso referente à transação, mas que a recusou. Para reembolsos parciais, recomendamos que você inclua um valor no campo value. Exemplo de motivo: FRAUD.
REFUND Indica que a transação concluída foi reembolsada pelo comerciante. Para reembolsos parciais, recomendamos que você inclua um valor no campo value. Exemplo de motivo: PROACTIVE_FRAUD.
REFUND_REVERSE Indica que a transação concluída foi reembolsada pelo comerciante, e que ele foi estornado. Para reembolsos parciais, recomendamos que você inclua um valor no campo value.

No exemplo a seguir, mostramos um payload de anotação de amostra que contém um evento de transação. Para mais detalhes, consulte Anotar avaliações.

POST https://recaptchaenterprise.googleapis.com/v1/ASSESSMENT_ID:annotate
{
  "transaction_event": {
    "event_type": "CHARGEBACK",
    "reason": "Card Reported Stolen",
    "value": 20
  }
}

Interpretar avaliações

Depois de começar a enviar os dados da transação, você verá o componente fraudPreventionAssessment na resposta riskAnalysis.

O componente fraudPreventionAssessment inclui uma pontuação de risco de transação e várias pontuações de fraude que identificam diferentes tipos de ataques. A pontuação transactionRisk da Prevenção contra fraudes do reCAPTCHA Enterprise varia de 0,0 a 1,0, resumindo o risco associado a essa transação dos componentes abaixo. A pontuação de risco 0,0 indica que o risco é baixo e que a transação provavelmente é legítima. Já 1,0 indica que o risco é alto e que a interação é provavelmente fraudulenta.

Ao instalar a prevenção contra fraudes do reCAPTCHA Enterprise e adicionar o componente TransactionData, você terá acesso ao valor cardTestingVerdict, que detecta adversários que usam seu site para testar listas de instrumentos roubados ou informações de força bruta. Quando são bem-sucedidos, isso resulta em perdas para seu negócio.

Você também tem acesso ao valor behavioralTrustVerdict, que indica a confiança em uma sessão com base em sinais comportamentais no seu site e na Internet. Essa pontuação é particularmente útil se você usa um mecanismo de fraude e quer reduzir os falsos positivos. Como essa pontuação inclui informações exclusivas e ortogonais para a detecção convencional com base em dados de transações, ela é eficaz em adicionar confiança em determinadas transações arriscadas ou neutras.

Depois de enviar eventos de ciclo de vida, incluindo informações de estorno, você terá acesso ao valor stolenInstrumentVerdict. Isso detecta ataques mesmo em uma escala muito baixa que provavelmente são fraudulentas com base nos sinais que o reCAPTCHA Enterprise analisa sobre a transação e no comportamento do usuário na rede de milhões de sites.

O acesso às pontuações adicionais (risco de instrumento roubado, risco de teste de cartão) será ativado após uma análise de segurança. Entre em contato com nossa equipe de vendas para iniciar a análise de segurança.

O bloco a seguir mostra um exemplo de resposta com os valores transactionRisk, cardTestingVerdict, stolenInstrumentVerdict e behavioralTrustVerdict.

"riskAnalysis": {
    "score": "BOT_SCORE"
}
"fraudPreventionAssessment": {
    "transactionRisk": 0.9,
    "stolenInstrumentVerdict": {
        "risk": 0.7
    },
    "cardTestingVerdict": {
        "risk": 1.0
    }
    "behavioralTrustVerdict": {
        "trust": 0.0
    }
}

Você é responsável pelas ações que realiza com base nessa avaliação. Para a integração mais simples, defina limites no transactionRisk de nível superior para contribuir para sua decisão. Por exemplo, ele pode contribuir para o envio de uma análise manual ou rejeitar diretamente transações prováveis fraudulentas. Também é possível usar essas pontuações nos seus próprios fluxos de trabalho de fraude ou como parte de regras do sistema atual. Como o reCAPTCHA Enterprise examina indicadores diferentes e tem uma visibilidade de comportamento diferente, é possível esperar um valor incremental mesmo com um mecanismo de detecção já maduro.

A seguir