我正在使用 Stripe 实现 Subscription*(已准备好 SCA)。我尝试处理https://stripe.com/docs/billing/subscriptions/payment#handling-action-required。在 Stripe 端创建订阅后,我得到了上面文档中的答案:
{
"id": "sub_XXXXXXXXXXXXXXXXXXX",
"object": "subscription",
"status": "incomplete",
...
"latest_invoice": {
...
"payment_intent": {
"status": "requires_action",
...
"next_action": {
"type": "use_stripe_sdk",
...
},
...
}
}
}
Run Code Online (Sandbox Code Playgroud)
根据文档https://stripe.com/docs/api/payment_intents/object#payment_intent_object-next_action-type
next_action.type可以有两个值redirect_to_url和use_stripe_sdk
所以我的问题是如何获取next_action.type = redirect_to_url(而不是use_stripe_sdk)以及如何强制填充条纹next_action.redirect_to_url(因为我想在我的 UI 中自己处理它)?
* SO 上已经有一个类似的问题:https : //stackoverflow.com/questions/56490033/how-to-handle-use-stripe-sdk-through-php 但我的情况是创建我没有的订阅控制 PaymentIntent
根据我的理解,仅当您选择手动处理 3D 安全身份验证https://stripe.com/docs/payments/payment-intents/verifying-status#manual-3ds-auth时才next_action.type等于redirect_to_url
根据文档:
要手动处理 3D Secure 身份验证,您可以重定向客户。当您手动确认 PaymentIntent 并提供
return_url目的地以指示身份验证完成后应将客户发送到何处时,将使用此方法。手动 PaymentIntent 确认可以在服务器上执行,也可以在客户端使用 Stripe.js 执行。
使用Stripe.js 的示例:
stripe.confirmPaymentIntent(
'{PAYMENT_INTENT_CLIENT_SECRET}',
{
payment_method: '{PAYMENT_METHOD_ID}',
return_url: 'https://example.com/return_url'
}
).then(function(result) {
// Handle result.error or result.paymentIntent
});
Run Code Online (Sandbox Code Playgroud)
使用条纹 Python 的示例:
intent = stripe.PaymentIntent.confirm(
'{PAYMENT_INTENT_ID}',
payment_method='{PAYMENT_METHOD_ID}',
return_url='https://example.com/return_url'
)
Run Code Online (Sandbox Code Playgroud)
编辑:根据@karllekko 的评论{PAYMENT_INTENT_ID},您的情况将是latest_invoice.payment_intent.id.
| 归档时间: |
|
| 查看次数: |
3131 次 |
| 最近记录: |