在进行回退尝试时成功但尚未完成 3DS 验证的收款不在责任转移范围内。一个例外情况是,在 payment_method_details.card.three_d_secure.result
下状态为 attempt_acknowledged
的回退收款将在责任转移范围内。
如果您想阻止不在责任转移范围内的付款成功完成,可以使用 Radar 风控团队版实现此目的。以下是一些适用的建议:
通过 API 请求针对所有收款进行 3DS 验证,并检查 3DS 验证来源。在通过 API 创建付款时,可以通过将 request_three_d_secure 设置为“任何来源”来请求针对收款进行 3DS 验证。完成此操作后,可以使用以下 Radar 规则:Block if not :is_3d_secure: and not :is_off_session:
这使定期订阅收款(请求豁免)仍然能够成功完成,并检查任何会话内收款是否进行了验证。如果商家接受 Apple/Google Pay,他们需要略微修改该规则,如下所示:Block if not :is_3d_secure: and not :is_off_session: and :digital_wallet: != 'apple_pay'
and not (:digital_wallet: = 'android_pay' and :has_cryptogram:)
这是必需的,因为我们绝不允许针对 Apple Pay 银行卡进行 3DS 验证(Apple Pay 仅在欧洲支持责任转移);对于 Google Pay 银行卡,如果我们还在令牌化期间收到密码,则不允许进行 3DS 验证(为此,我们会检查 :has_cryptogram:
)。
请求针对 Radar 进行 3DS 验证,并检查 3DS 验证来源。您可以使用 Radar 请求进行 3DS 验证,而不是在通过 API 创建付款时请求进行 3DS 验证。您可以选择自定义元数据属性来设置所有需要进行 3DS 验证的收款(例如,foo: bar
)。完成此操作后,根据以下 Radar 规则核实该元数据并请求进行 3DS 验证:Request 3D Secure if ::foo:: = 'bar'
然后,您可以添加 Radar 规则,根据该规则检查是否已针对与之前使用的相同请求 3DS 验证条件相匹配的付款运行 3DS 验证。Block if ::foo:: = 'bar' and not :is_3d_secure:
请记住,如果您处理 Apple Pay 或 Google Pay 付款,确保使用如下 Radar 规则:Block if ::foo:: = 'bar' and not :is_3d_secure: and :digital_wallet: != 'apple_pay' and not (:digital_wallet: = 'android_pay' and :has_cryptogram:)