3DS 验证失败时的 Stripe 收款处理
如果付款需要进行 3DS 验证,但无法发起验证,Stripe 会尝试在不验证的情况下完成付款。这种处理会导致 PaymentIntent 状态更新为以下之一:
succeeded
:付款成功,无需进一步操作。requires_capture
:未验证情况下完成请求,可继续捕获资金。requires_payment_method
:收款失败,可能需要更换支付方式。
典型 3DS 验证支付流程
客户提供付款信息并附加到 PaymentIntent。
Stripe 根据 Radar 规则、是否手动请求付款等因素检查是否需要 3DS 验证。
如果不需要验证,则直接尝试扣款(银行可能返回“软拒付”要求验证);如果需要验证,则触发 3DS 流程。
Stripe 发起 3DS 验证,PaymentIntent 状态转为
requires_action
。
3DS 验证失败后的回退处理
客户提交付款信息。
Stripe 检查是否需要 3DS 验证。
若需验证但验证失败(如银行卡不支持 3DS 或服务器停机等),系统会尝试不验证情况下的最后一次收款。
根据结果,PaymentIntent 状态可能更新为
succeeded
、requires_capture
或requires_payment_method
。
我们采取此措施而非立即阻止付款或返回错误,旨在优化转化率。如果回退收款失败,状态将更新为 requires_payment_method
。成功情况下,责任转移仅在 payment_method_details.card.three_d_secure.result
状态为 attempt_acknowledged
时适用。
关于未验证付款及责任转移的详细信息,请参阅 Stripe 文档中的相关内容。