使用 Fraud Prevention 保护付款交易

本页面介绍如何使用 reCAPTCHA Enterprise Fraud Prevention 有效保护付款交易免受攻击,例如银行卡盗刷、付款方式盗窃欺诈和帐号盗用付款欺诈。

reCAPTCHA Enterprise Fraud Prevention 通过识别有针对性的人工攻击和规模化的欺诈尝试,帮助您保护付款交易。它会自动训练行为和交易模型,以识别可能具有欺诈性的事件,如果事件被接受,则可能会导致争议或退款。

作为这些模型的一部分,reCAPTCHA Enterprise Fraud Prevention 会检查交易信号以便检测欺诈行为。例如,一系列低价购物尝试可能表示银行卡攻击。在响应时,您会收到不同欺诈类型的风险评分,可以使用该评分将交易发送到人工审核,或直接屏蔽足够可疑的交易。

如需设置 reCAPTCHA Enterprise Fraud Prevention,您需要完成以下步骤:

  1. 通过安装基于得分的 reCAPTCHA 密钥在付款前端安装 reCAPTCHA Enterprise JavaScript

    执行 JavaScript 时,reCAPTCHA 会为每个用户会话生成一个唯一的 reCAPTCHA 令牌,并收集用户行为数据以评估用户。

  2. 从后端提交“创建评估 API”请求,其中包含付款工作流程中的用户事件交易数据

    在“创建评估 API”请求的响应中,reCAPTCHA Enterprise 会提供一个交易风险评分和其他原因代码(例如 suspected_carding(如果适用)。

  3. 根据得分确定用户的后续操作

    您可以选择允许交易、要求进行额外验证、转发人工审核或屏蔽交易。

准备工作

  1. 如果您刚开始接触 reCAPTCHA Enterprise,请执行以下操作:

    1. 在 Google Cloud 项目中配置 reCAPTCHA Enterprise

    2. 创建基于得分的 reCAPTCHA 密钥

  2. 为您的 Google Cloud 项目启用 reCAPTCHA Fraud Prevention:

    1. 在 Google Cloud 控制台中,前往 reCAPTCHA Enterprise 页面。

      转到 reCAPTCHA Enterprise

    2. 验证项目的名称是否显示在资源选择器中。

      如果您没有看到项目名称,请点击资源选择器,然后选择您的项目。

    3. 点击 设置

    4. 欺诈防范窗格中,点击配置

    5. 点击启用切换开关,然后点击保存

  3. 请确保您的环境支持大于 8 KB 的令牌,因为 reCAPTCHA Enterprise Fraud Prevention 可能会使用较大的令牌。

在付款前端安装 reCAPTCHA Enterprise

如需开始检测攻击,请在付款用户流程的每个页面上安装基于得分的 reCAPTCHA 密钥。这包括用户查看购物车、选择付款方式并完成购买的界面。用户在每个步骤作出选择后,调用 grecaptcha.enterprise.execute() 以生成令牌。如需了解如何安装基于得分的密钥和调用 execute(),请参阅安装基于得分的密钥

以下示例展示了如何在信用卡交易事件中集成基于得分的键:

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>

您可以通过单击代码窗口右上角的 <> 图标,在 JSFiddle 中尝试此代码。

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

使用交易数据创建评估

如需启用付款欺诈判定,请使用 projects.assessments.create 方法中的其他字段创建包含交易数据的评估。

最简单的集成包括 transaction_idpayment_methodcurrency_codevalue。为了提高检测质量,我们建议添加 emailbilling_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",
        "address": "Apt 1",
        "locality": "Sunnyvale",
        "administrative_area": "CA",
        "region_code": "USA",
        "postal_code": "123456"
  }
 }
}

为了提高得分质量,我们建议您发送其他信号

如需了解如何创建评估,请参阅为网站创建评估。reCAPTCHA Enterprise Fraud Prevention 可能会使用更大的令牌,因此请确保通过 POST 请求(而不是 GET)发送请求,并且在正文中而不是标头中。

解读评估

开始发送交易数据后,您可以通过 riskAnalysis 中的 fraudPreventionAssessment 组件接收 JSON 响应形式的评估。

以下示例是一个响应示例:

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

您收到的回复会包含得分和原因代码(如适用)。 得分越高,交易具有欺诈性且风险的可能性越大;得分越低,交易合法的可能性就越大。例如,0.9 分表示交易更有可能欺诈且有风险,0.1 分表示交易更有可能合法。

您要对根据评估所采取的行动负责。 对于最简单的集成,您可以在 transactionRisk 上设置阈值,以做出明智的决策。例如,它可能造成送交人工审核或直接拒绝可能的欺诈性交易。您还可以在自己的欺诈工作流中使用得分,或将其用作现有系统规则的一部分。由于 reCAPTCHA Enterprise 会检查独特的信号,并且对整个互联网的行为具有独特的可见性,因此即使使用已经成熟的欺诈检测引擎,您也可以有望获得更多价值。

后续步骤