ReactJS+Stripe:trial_period_days在Node函数中失效问题求助
Stripe订阅中trial_period_days参数未被识别的可能原因
以下是几个常见的排查方向:
价格对象自带试用期配置:你使用的
price_1KZ3nTGxUje7SlyIDUfIXkr3这个价格,如果在Stripe后台已经设置了固定的试用期,订阅创建时传入的trial_period_days会被后台配置覆盖,甚至引发参数冲突错误。先去Stripe后台检查这个价格的试用期设置。API版本不兼容:不同版本的Stripe API对参数的处理可能有差异,如果你用的Stripe Node.js SDK版本较旧,可能存在参数不兼容的情况。可以尝试升级SDK到最新稳定版,或者在代码中指定明确的API版本(比如
stripe.setApiVersion('2024-04-10'))。参数冲突:如果订阅同时设置了
trial_end参数(哪怕是代码里没显式写,但后台配置或其他逻辑自动生成了),trial_period_days会被trial_end覆盖。检查是否有其他地方设置了试用期结束时间。参数位置错误:虽然你的场景是全局试用期,参数位置没问题,但如果是针对单个订单项的试用期,需要把参数放在
items数组的每个对象里。不过你的代码写法是对的,这条可以作为额外排查点。
你的代码示例:
const subscription = await stripe.subscriptions.create({ customer: customer.id, items: [{ price: "price_1KZ3nTGxUje7SlyIDUfIXkr3" }], payment_settings: { payment_method_options: { card: { request_three_d_secure: "any", }, }, payment_method_types: ["card"], save_default_payment_method: "on_subscription", }, trial_period_days: 7, expand: ["latest_invoice.payment_intent"], });
内容的提问来源于stack exchange,提问作者Paul VI
相关产品推荐
相关产品推荐

