如何在没有“invoice. payment_action_required”事件的情况下自动执行 Stripe 订阅付款?

问题描述 投票:0回答:1

我在 Node.js 应用程序中使用 Stripe 进行订阅计费。我有两个主要特点:

  1. 试用/非试用期:用户可以在有或没有试用期的情况下订阅。
  2. 年度定期订阅:订阅每年续订。

但是,我遇到了一个问题,当试用结束或订阅续订期间,Stripe 会触发

invoice.payment_action_required
事件。此事件需要额外的用户操作才能完成付款,但我希望自动处理付款而无需用户干预 - 类似于 Netflix 和其他平台处理续订的方式。

我尝试过的:

  • 条纹设置:
    • 我设置了
      collection_method: 'charge_automatically'
    • 我还尝试设置
      payment_behavior: 'default_incomplete'
      default_incomplete: 'error_if_incomplete'
      off_session: true
      save_default_payment_method: 'on_subscription'
    • 对于
      payment_method_options
      ,我使用了
      { card: { request_three_d_secure: 'any' } }
      { card: { request_three_d_secure: 'automatic' } }

尽管有这些设置,我仍然面临

invoice.payment_action_required
事件。

我的目标:

我想确保在试用结束或续订时自动扣除付款,而不需要用户执行任何额外操作,就像 Netflix 等订阅服务管理其定期付款的方式一样。

代码示例:

这是我的代码相关部分的简化版本:

const createSubscriptionOnStripe = async (customerId, priceId, data) => {
    return stripe.subscriptions.create({
        customer: customerId,
        collection_method: 'charge_automatically',
        payment_behavior: 'default_incomplete',
        off_session: true,
        trial_end: data.trialEnd,
        items: [{ price: priceId }],
        payment_settings: {
            payment_method_options: {
                card: { request_three_d_secure: 'any' }
            },
            save_default_payment_method: 'on_subscription',
        },
        expand: ['latest_invoice.payment_intent'],
    });
}

问题:

如何配置 Stripe 在试用期结束或续订时自动从客户的卡中扣费,而不触发

invoice.payment_action_required
事件?我应该对当前设置进行哪些更改才能确保无缝自动续订?

node.js automation stripe-payments subscription recurring-billing
1个回答
0
投票

您应该在 API 调用中省略

payment_settings[payment_method_options][card][request_three_d_secure]
参数。通过将其设置为
any
,您将强制请求 3DS 支付与订阅相关的所有定期/发票付款,而不仅仅是初始付款。

© www.soinside.com 2019 - 2024. All rights reserved.