我正在使用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",
...
},
...
}
}
}
根据文档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已经存在类似的问题: how to handle "use_stripe_sdk" through PHP? 但我的情况是在我无法控制PaymentIntent的情况下创建 Subscription
答案 0 :(得分:2)
据我了解,仅当您选择手动处理3D安全身份验证next_action.type
redirect_to_url
。
根据文档:
要手动处理3D安全身份验证,可以重定向客户。当您手动确认PaymentIntent并提供
return_url
目的地以指示认证完成后应将客户发送到何处时,将使用此方法。可以on the server或在客户with 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
});
使用Stripe Python的示例:
intent = stripe.PaymentIntent.confirm(
'{PAYMENT_INTENT_ID}',
payment_method='{PAYMENT_METHOD_ID}',
return_url='https://example.com/return_url'
)
编辑:根据@karllekko's的评论,在您的情况下,{PAYMENT_INTENT_ID}
将是latest_invoice.payment_intent.id
。
答案 1 :(得分:1)
请阅读https://stripe.com/docs/payments/3d-secure-iframe-它提供了有关“ return_url”流程的更多详细信息-并描述了在“ iframe”等中自定义其可能性的可能性
该文档可能是最新文档-因此,在提出此问题(7月)时,该文档尚不存在