# 为什么有些付款即使已请求 3DS 验证，也能在未验证的情况下成功完成？

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