我在 Node.js 应用程序中使用 Stripe 进行订阅计费。我有两个主要特点:
但是,我遇到了一个问题,当试用结束或订阅续订期间,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
事件?我应该对当前设置进行哪些更改才能确保无缝自动续订?
您应该在 API 调用中省略
payment_settings[payment_method_options][card][request_three_d_secure]
参数。通过将其设置为 any
,您将强制请求 3DS 支付与订阅相关的所有定期/发票付款,而不仅仅是初始付款。