使用詐欺防範功能保護付款交易

本頁面說明如何使用 reCAPTCHA Fraud Prevention,有效防範付款交易遭到攻擊,例如卡片測試、竊取付款工具詐欺和帳戶盜用付款詐欺。

reCAPTCHA Fraud Prevention 可協助您識別針對性的人為攻擊和大規模詐欺行為,防範付款交易出現這類情形。系統會自動訓練行為和交易模型,找出可能為詐欺的事件,如果接受這類事件,可能會導致爭議或退款。

reCAPTCHA Fraud Prevention 會檢查交易信號,藉此偵測詐欺行為。舉例來說,如果有一連串低價購買嘗試,可能表示發生盜刷攻擊。在回應中,您會收到不同類型詐欺的風險分數,可用於將交易送交人工審查,或直接封鎖可疑交易。

如要設定 reCAPTCHA Fraud Prevention,請完成下列步驟:

  1. 準備環境

  2. 在 Google Cloud 專案中啟用 reCAPTCHA Fraud Prevention。

  3. 選擇「前端整合」,自動整合前端裝置的信號;如果不想整合前端,請選擇「僅限 API 整合」

    執行 JavaScript 時,reCAPTCHA 會為每個使用者工作階段產生專屬的 reCAPTCHA 權杖,並收集使用者行為資料來評估使用者。

    僅限 API 的整合方式只會使用必要交易資料傳回結果,因此不需要這個權杖。

  4. 使用先前選擇的前端整合僅限 API 整合,從後端提交 create assessment API 要求和交易資料。

    create assessment API 要求的相關回應中,reCAPTCHA 會提供交易風險分數和額外的說明原因 (例如 HIGH_TRANSACTION_VELOCITY,如適用)。

  5. 根據分數判斷使用者的後續動作

    您可以選擇允許交易、要求額外驗證、轉送人工審查,或是封鎖交易。

事前準備

  1. 如果您是 reCAPTCHA 新手,請按照下列步驟操作:

    1. 在 Google Cloud 專案中設定 reCAPTCHA。

    2. 建立計分型 reCAPTCHA 金鑰

  2. 如果您打算進行前端整合,請確認環境支援大於 8 KB 的權杖,因為 reCAPTCHA 詐欺防護功能可能會使用較大的權杖。

啟用 reCAPTCHA Fraud Prevention

  1. 前往 Google Cloud 控制台的 reCAPTCHA 頁面。

    前往 reCAPTCHA

  2. 確認專案名稱顯示在資源選取器中。

    如果沒有看到專案名稱,請按一下資源選取器,然後選取專案。

  3. 按一下「設定」

  4. 在「Fraud Prevention」窗格中,按一下「Configure」

  5. 按一下「啟用」切換鈕,然後按一下「儲存」

前端整合 - 在網站上安裝 reCAPTCHA

搭配 reCAPTCHA 前端整合使用 Fraud Prevention,有助於防範盜刷攻擊和詐欺交易。如要開始偵測攻擊,請在付款使用者流程的各個頁面中安裝計分型 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 方法中的其他欄位,建立含有交易資料的評估。

整合作業至少需要 payment_methodcard_bincard_last_four 欄位。為提升偵測品質,建議您新增選填欄位,例如 emailphone_numberbilling_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"
            }
        }
    }
}

為提高評分準確性,建議您一併傳送其他信號

如要瞭解如何建立評估,請參閱「為網站建立評估」。reCAPTCHA 詐欺防護功能可能會使用較大的權杖,因此請確認要求是透過 POST 要求傳送,而非 GET;且要求位於主體中,而非標頭中。

僅限 API 整合 - 建立評估並提供交易資料

如要接收付款詐欺判定結果,請使用 projects.assessments.create 方法中的其他欄位,建立含有交易資料的評估。

由於 reCAPTCHA API 整合只會使用您提供的交易資料產生詐欺防範評估,因此您必須至少提供下列資訊:

  1. 帳單地址 regionCodepostalCode
  2. 交易資料 paymentMethod
  3. 下列其中一項:
{
  "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"
            }
        }
    }
}

為提高分數品質,建議您盡可能提供輸入內容,並傳送額外信號

解讀評估結果

開始傳送交易資料後,您會收到評估結果,以 riskAnalysis 中的 fraudPreventionAssessment 元件做為 JSON 回應。

以下是回應範例:

{
  "event": {....
  ....
  }
  .....
  ....
  ....
"fraudPreventionAssessment": {
    "transactionRisk": 0.9,
    "riskReasons": HIGH_TRANSACTION_VELOCITY
}
}

您收到的回應中會有分數和原因代碼 (如適用)。分數越高,交易越有可能是有風險的詐欺活動;分數越低,交易越有可能屬於正當活動。舉例來說,0.9 分代表交易較有可能屬於有風險的詐欺活動,0.1 分則代表交易較有可能屬於正當活動。

您必須為根據評估結果採取的行動負責。 如要進行最簡單的整合,您可以在 transactionRisk 上設定門檻, 以協助做出決策。舉例來說,這項資訊有助於將交易送交人工審查,或直接拒絕疑似詐欺的交易。您也可以在自己的詐欺工作流程中使用分數,或將分數納入現有系統的規則。reCAPTCHA 會檢查獨特的信號,並掌握整個網路上獨特的行為可視度,因此即使您已擁有成熟的詐欺偵測引擎,仍可望獲得額外價值。

每個分數區間都經過校正,可達到最高偽陽性率,代表可能遇到額外阻礙的合法使用者比例上限。您需要選取的門檻取決於業務需求。以下列舉幾個使用 transactionRisk 分數的範例:

風險容忍度 建議閾值 最高偽陽率 應用實例
0.5 5% 接受交易前,必須完成額外驗證,例如雙重驗證
0.7 1% 將交易送交人工審查
0.9 0.1% 拒絕交易

後續步驟