【问题标题】:How to make Stripe Subscriptions SCA-compliant如何使 Stripe 订阅符合 SCA
【发布时间】:2021-03-18 00:04:39
【问题描述】:

我正在尝试迁移我的代码以符合 SCA,但问题是似乎没有关于如何在 Stripe 上执行此操作的明确指南。

我已经尝试了各种方法,但我似乎无法让监管测试卡正常工作(这里的一张:https://stripe.com/docs/testing#regulatory-cards)。普通卡 (4242 4242) 可以。

我尝试的第一件事是confirmCardSetuphttps://stripe.com/docs/billing/subscriptions/overview#authentication-failures

我所做的是在用户确认他们的卡后通过 webhook 收听paymentintent.succeeded。我得到了显示在这里的 3DS 确认,但是一旦它到达 webhook,我就无法使用付款方式来创建新的用户订阅。我收到一个错误,提示用户没有附加付款方式。虽然当我检查 Stripe 仪表板时,我使用的付款方式附在其中。我什至尝试过手动操作,但它真的无法识别它。好像不能使用confirmCardSetup创建的支付方式来创建订阅。

我尝试的第二种方法是本指南:https://codenebula.io/node.js/stripe/sca/2020/03/03/how-to-use-stripes-new-payment-intents-api-with-node-js-to-create-subscriptions-with-built-in-sca/

它是使用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


【解决方案1】:

使用 Stripe 订阅符合 SCA。您可能遇到的问题是,如果初始付款需要身份验证,您将无法继续该流程。

这里有一个完整的集成示例:https://stripe.com/docs/billing/subscriptions/overview#integration-example

您需要做的是创建一个订阅并展开latest_invoice.payment_intent,然后如果失败,您需要确认客户端:https://stripe.com/docs/billing/subscriptions/overview#requires-payment-method

【讨论】:

    猜你喜欢
    • 2023-03-27
    • 2021-04-20
    • 1970-01-01
    • 2020-06-14
    • 2016-06-17
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 2021-02-22
    相关资源
    最近更新 更多