有人知道如何使用新的 PaymentsIntent SCA 方法使 Stripe 订阅在未来的付款时自动从卡中扣费吗?
Stripe 的文档需要进行重大修改。我从来没有见过像这些这样复杂和令人困惑的文档。
令人困惑的部分之一是他们在 PaymentsIntents 文档中所说的内容:
confirmation_method:
automatic
(Default) PaymentIntent can be confirmed using a publishable key. After next_actions are handled, no additional confirmation is required to complete the payment.
manual
All payment attempts must be made using a secret key. The PaymentIntent returns to the requires_confirmation state after handling next_actions, and requires your server to initiate each payment attempt with an explicit confirmation.
Run Code Online (Sandbox Code Playgroud)
如果我设置为自动,handleCardAction 将不再在前端工作。如果必须是手动的,这是否意味着所有未来的定期付款(例如第 2、3 个月等)都需要用户进行某种 SCA 确认?
我还没有找到任何 SCA 的付款意图和订阅的元素示例,以及未在后端预先设置的不同计划和价格,因为它们取决于每个人的参数。
如果我使用手动和handleCardAction,尽管付款正在进行,但订阅仍然不完整。如果我使用confirmCardPayment,SCA 弹出窗口永远不会显示。
进一步研究订阅和意图对象,我注意到在服务器上创建的新订阅带有自己的 paymentIntent 对象。那么这是否意味着人们必须停止使用自己的 id 创建单独的 paymentIntent ?如果这样做,则无法完成订阅,订阅仍然不完整。
但是,订阅的 paymentIntent 默认将确认方法设置为自动 - 这会导致前端 SCA 后出现错误:“您无法确认此 PaymentIntent,因为它在先前确认后已成功”。有趣的是,为什么它要求 SCA 然后状态为:“requires_action”?我们是否应该手动更改订阅“手动”的确认方法?
所有这些都让我们很困惑如何使订阅 / paymentIntent 与 SCA 一起工作。
我的逻辑很简单:用户自定义订阅并输入卡详细信息,所有这些都会发送到服务器 => 服务器创建新计划、产品、客户和订阅 => 将意图(来自订阅?)发送回 FE => 如果需要时,执行 SCA 并确认订阅。这不是应该做的吗?我没有预先设定的计划,因为它们可能会有所不同。我只需要能够自动向用户收取与他们下一期支付的金额相同的费用。
到目前为止我看到的示例和文档并未解决上述用例。如果有人知道如何做到这一点,或者可以指出一个示例,说明条带元素和 paymentIntents 如何与 SCA 和订阅一起工作,从而实际工作并激活订阅?
Stripe 有一个关于 Elements 固定价格订阅的完整指南,听起来它涵盖了您想要做的事情。
当您使用 Stripe Billing(订阅和发票)时,您很少需要与底层付款意图进行交互;这些是每个发票内部的实现细节。