我正在尝试将我的代码迁移为SCA兼容的代码,但问题是似乎没有一个明确的指南来指导如何在Stripe上做到这一点。
我已经尝试了各种方法,但似乎无法让监管测试卡正常工作(这里的那个:https://stripe.com/docs/testing#regulatory-cards)。不过,普通的卡(424244242)可以正常工作。
我尝试的第一件事是confirmCardSetup:https://stripe.com/docs/billing/subscriptions/overview#authentication-failures
我所做的就是一旦用户确认了他们的卡,就通过网络钩子来监听paymentintent.succeeded。我得到了3DS确认在这里显示,但一旦它到达网络挂钩,我不能使用支付方式来创建新的用户订阅。我得到了一个错误,没有附加到用户的支付方式。虽然当我检查条纹仪表板时,我使用的付款方式是附加在那里的。我甚至尝试过手动操作,但它真的无法识别。您似乎不能使用通过confirmCardSetup创建的支付方式来创建订阅。
它是使用createPaymentMethod()实现的。然后将创建的付款方式提交到服务器以创建客户和订阅。此操作失败,并显示以下错误:
the payment attempt failed because additional action is required before it can be completed我尝试的最后一件事是遵循这个指南:https://stripe.com/docs/payments/save-and-reuse它在文档中说它可以用于“循环付款”,所以我假设这是用于订阅。集成是有效的,但它并不是真正用于订阅。它在服务器端使用setupIntent调用,在客户端使用confirmCardSetup。只有当您在paymentIntent::create调用中使用它时,它才有效。
我正在尝试做的是使用通过confirmCardSetup生成的支付方法创建一个客户。然后为该用户创建订阅。我得到了与上面的方法#1相同的问题。它抱怨用户没有附加支付方式。因此,我只是假设通过此调用生成的支付方法仅用于创建支付意图。
这里的代码片段:https://stripe.com/docs/billing/subscriptions/overview#authentication-failures给出了如何实现这一点的提示,但是当我甚至不能创建订阅时,我从哪里获得这个subscription变量:
const {pending_setup_intent} = subscription;
if (pending_setup_intent) {
const {client_secret, status} = subscription.pending_setup_intent;
if (status === "requires_action") {
stripe.confirmCardSetup(client_secret).then(function(result) {
if (result.error) {
// Display error.message in your UI.
} else {
// The setup has succeeded. Display a success message.
}
});
}
}请帮帮忙。即使是关于如何实现这一点的一般步骤也可以做到。谢谢!
发布于 2020-12-07 11:02:10
带条纹的订阅符合SCA标准。您可能遇到的问题是,如果初始付款需要身份验证,则无法继续该过程。
这里有一个完整的集成示例:https://stripe.com/docs/billing/subscriptions/overview#integration-example
您需要做的是创建一个订阅并展开latest_invoice.payment_intent,如果失败,您就有了需要确认的客户端:https://stripe.com/docs/billing/subscriptions/overview#requires-payment-method
https://stackoverflow.com/questions/65168916
复制相似问题