使用 Transaction Defense 保護付款交易

本頁面說明如何使用 Transaction Defense,有效防範付款交易遭受攻擊,例如盜刷、卡片竊取詐欺和帳戶入侵付款詐欺。

Transaction Defense 可找出針對性的人為攻擊和大規模詐欺行為,協助您防範付款交易出現詐欺情形。系統會自動訓練行為和交易模型,找出可能涉及詐欺的事件,避免接受後引發爭議或交易退單。

Transaction Defense 會檢查交易信號,偵測盜刷和交易退單攻擊。舉例來說,如果有一連串低價購買嘗試,可能代表發生盜刷攻擊。在回應中,您會收到不同類型詐欺行為的風險評分,可用於將交易送交人工審查,或直接封鎖可疑程度足夠的交易。

如要設定 Transaction Defense,請完成下列步驟:

  1. 準備環境。

  2. 為 Google Cloud 專案啟用 Transaction Defense。

  3. 選擇整合方法。

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

    在 create assessment API 要求的回應中,reCAPTCHA 會提供交易風險分數和額外的可解釋性原因 (例如 HIGH_TRANSACTION_VELOCITY),如果有的話。

  5. 根據分數決定使用者的後續動作。

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

事前準備

  1. 如果您是第一次使用 reCAPTCHA,請按照下列步驟操作:

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

    2. 建立評分式 reCAPTCHA 金鑰。

  2. 如果您打算整合前端,請確認環境支援大於 8 kB 的權杖,因為 Transaction Defense 可能會使用較大的權杖。

啟用 Transaction Defense

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

    前往 reCAPTCHA

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

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

  3. 按一下「設定」。

  4. 在「Transaction Defense」窗格中,按一下「設定」。

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

選擇整合方法

選擇「前端整合」,即可自動納入前端裝置的信號;如果不想在前端整合,請選擇「僅限 API 整合」。

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

僅限 API 的整合功能只會使用必要的交易資料傳回判定結果,不需要這個權杖。

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

使用 Transaction Defense 並整合 reCAPTCHA 前端,有助於防範盜刷攻擊和詐欺交易。如要開始偵測攻擊,請在付款使用者流程的各個頁面中,安裝計分型 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"></script>

您可以按一下程式碼視窗右上角的 <> 圖示,在 JSFiddle 中測試這個程式碼。

<html>
  <head>
    <title>Protected Payment</title>
    <script src="https://www.google.com/recaptcha/enterprise.js"></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 Defense 評估結果,請至少提供下列其中一項必要 ID 欄位:

為提升偵測品質,建議您新增選填欄位,例如 payment_method、email、phone_number 和 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": "US",
                "postal_code": "123456"
            }
        }
    }
}

如要提高評分品質,建議您一併傳送其他信號。

如要瞭解如何建立評估作業,請參閱「為網站建立評估作業」。Transaction Defense 可能會使用較大的權杖,因此請確認要求是以 POST 要求 (而非 GET) 傳送,且位於主體而非標頭中。

僅限 API 整合 - 使用交易資料建立評估

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

由於 reCAPTCHA API-only Integration 只會使用您提供的交易資料產生 Transaction Defense 評估,因此您必須至少提供下列資訊:

  1. 帳單地址 regionCode 和 postalCode。
  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": "US",
                "postal_code": "123456"
            }
        }
    }
}

為提高評分準確性,建議您盡可能提供更多輸入內容,並傳送其他信號。

解讀評估結果

開始傳送交易資料後,您會收到 JSON 回應形式的評估結果,其中包含 Assessment 回應中的 fraudPreventionAssessment 元件。

以下是回應範例:

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

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

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

每個分數區間都會校正為偽陽率上限,代表可能遇到額外阻礙的合法使用者比例上限。請根據業務需求選取門檻。以下舉例說明如何使用 transactionRisk 分數:

風險容忍度 建議閾值 偽陽率上限 應用實例
低 0.5 5% 要求額外驗證 (例如雙重驗證),才能接受交易
中 0.7 1% 將交易送交人工審查
高 0.9 0.1% 拒絕交易

後續步驟