如果付款需要进行 3DS 验证,但我们无法发起该验证,我们会进行最后尝试,在不验证的情况下完成付款。这种回退收款会导致将 PaymentIntent 状态更新为以下各项中的一项:
succeeded
:付款完成,通过提供的支付方式创建收款。无需进一步操作。
requires_capture
:在未进行验证的情况下完成请求,您可以继续捕获资金。
requires_payment_method
:收款失败,可能需要使用其他支付方式
通常,触发 3DS 验证的付款会导致 PaymentIntent 的状态为
requires_action
。
以下是对请求 3DS 验证的典型支付流程的说明:
您的客户提供他们的付款信息并将其附加到 PaymentIntent。
Stripe 检查是否需要进行 3DS 验证。这可以根据
Radar 规则
、是否
手动请求付款
以及其他因素来确定
Stripe 确定是否需要进行 3DS 验证
如果确定
不需要
,我们会继续尝试对银行卡扣款。此时,银行可以发回“软拒付”,表示需要进行验证才能确保成功扣款
如果确定
需要
,我们会继续下一步以触发 3DS 验证
-
Stripe 发起 3DS 验证
过去 Stripe 能够请求进行 3DS 验证,现在我们需要等待客户进行验证。Payment Intent 的状态转换为
requires_action
。
如果第 4 步或第 5 步不成功,则上述支付流程将更改为如下所示:
-
您的客户提供他们的付款信息并将其附加到 PaymentIntent。
-
Stripe 检查是否需要进行 3DS 验证(根据 Radar 规则、是否手动请求付款以及其他因素来确定)。
-
Stripe 确定需要进行 3DS 验证并尝试发起验证流程。
-
我们在发起 3DS 验证流程时遇到问题。发生这种情况的原因有很多,例如银行卡不支持 3DS 验证、处理错误、发卡行的 3DS 验证服务器停机等。
即使 3DS 验证没有成功完成,我们也会继续在不验证的情况下进行最后的付款尝试。这会导致 PaymentIntent 的状态转换为
succeeded
、
requires_capture
或
requires_payment_method
,
具体取决于付款结果。
我们尝试这样做而不是立即阻止付款或返回错误的原因是,我们希望优化
转化率
。
如果此回退收款失败,PaymentIntent 的状态会更新为
requires_payment_method
。如果此回退收款成功,则收款不在责任转移范围内,除非回退收款在
payment_method_details.card.three_d_secure.result
下的
状态
为
attempt_acknowledged
。
有关未进行验证的付款和责任转移的更多信息,请参阅
使用 Radar 风控团队版来防止在没有责任转移的情况下收款