【发布时间】:2021-03-18 00:04:39
【问题描述】:
我正在尝试迁移我的代码以符合 SCA,但问题是似乎没有关于如何在 Stripe 上执行此操作的明确指南。
我已经尝试了各种方法,但我似乎无法让监管测试卡正常工作(这里的一张:https://stripe.com/docs/testing#regulatory-cards)。普通卡 (4242 4242) 可以。
我尝试的第一件事是confirmCardSetup:https://stripe.com/docs/billing/subscriptions/overview#authentication-failures
我所做的是在用户确认他们的卡后通过 webhook 收听paymentintent.succeeded。我得到了显示在这里的 3DS 确认,但是一旦它到达 webhook,我就无法使用付款方式来创建新的用户订阅。我收到一个错误,提示用户没有附加付款方式。虽然当我检查 Stripe 仪表板时,我使用的付款方式附在其中。我什至尝试过手动操作,但它真的无法识别它。好像不能使用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 相同的问题。它抱怨用户没有附加付款方式。所以我只是假设通过此调用生成的付款方式仅用于创建付款意图。
这里的代码sn-p: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.
}
});
}
}
请帮忙。即使只是关于如何实现这一点的一般步骤也可以。谢谢!
【问题讨论】:
-
您好,Wern,我也有同样的担忧。你找到解决办法了吗?
标签: php stripe-payments