本页面介绍了如何使用 Transaction Defense 有效保护支付交易免受攻击,例如银行卡盗刷、付款方式盗窃欺诈和账号入侵支付欺诈。
Transaction Defense 可识别有针对性的人为攻击和规模化的欺诈尝试,帮助您保护支付交易。它会自动训练行为和交易模型,以识别可能具有欺诈性且在接受后可能导致争议或退款的事件。
作为这些模型的一部分,Transaction Defense 会检查交易信号,以检测刷卡和退款攻击。例如,一系列低价购买尝试可能表明存在信用卡盗刷攻击。在响应中,您会收到不同类型欺诈的风险评分,您可以使用这些评分将交易发送到人工审核,或直接阻止足够可疑的交易。
如需设置 Transaction Defense,您需要完成以下步骤:
准备环境。
使用之前选择的前端集成或仅 API 集成,从后端提交包含交易数据的
create assessmentAPI 请求。在
create assessmentAPI 请求的响应中,reCAPTCHA 会提供交易风险评分和额外的可解释性原因(例如HIGH_TRANSACTION_VELOCITY)(如果适用)。-
您可以选择允许交易、要求进行额外验证、转发以进行人工审核或阻止交易。
准备工作
如果您刚开始使用 reCAPTCHA,请执行以下操作:
如果您计划进行前端集成,请验证您的环境是否支持大于 8 kB 的令牌,因为 Transaction Defense 可能会使用更大的令牌。
启用 Transaction Defense
在 Google Cloud 控制台中,前往 reCAPTCHA 页面。
验证项目名称是否显示在资源选择器中。
如果您没有看到项目名称,请点击资源选择器,然后选择您的项目。
点击 设置。
在 Transaction Defense 窗格中,点击配置。
点击启用切换开关,然后点击保存。
选择集成方法
选择前端集成可自动整合来自前端设备的信号,如果您不想在前端进行集成,请选择仅 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 评估,请至少提供以下一个必需的标识符字段:
为提高检测质量,我们建议您添加可选字段,例如 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 评估,因此您必须至少提供以下信息:
{ "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% | 在接受交易之前,要求进行额外的验证(例如 2FA) |
| 中 | 0.7 | 1% | 将交易发送至人工审核 |
| 高 | 0.9 | 0.1% | 拒绝交易 |
后续步骤
- 如需提高欺诈检测质量,请了解其他信号。
- 如需为评估添加注解,请参阅使用交易事件为评估添加注解。