如何在当前计费周期结束时变更Stripe订阅价格?
Stripe订阅降级:周期结束时生效的实现方案
Stripe完全支持计费周期结束时才生效的订阅变更,无需自行开发额外逻辑,通过API参数即可实现和「周期结束时取消订阅」一致的效果。
核心实现思路
在更新订阅时,通过两个关键参数控制变更时机和计费行为:
proration_behavior: 'none':禁止自动按比例计费,避免中途产生退款或额外收费payment_behavior: 'default_incomplete':确保变更不会立即触发付款,而是留到下一个计费周期生效
额外可通过effective_date参数明确指定生效时间为当前订阅周期的结束时间(即subscription.current_period_end),进一步确保变更时机准确。
代码示例(Node.js)
const stripe = require('stripe')('你的密钥'); // 获取当前订阅对象(可根据用户ID或订阅ID查询) const currentSubscription = await stripe.subscriptions.retrieve('sub_xxxxxx'); // 更新订阅为basic计划,设置周期结束时生效 const updatedSubscription = await stripe.subscriptions.update( currentSubscription.id, { items: [{ id: currentSubscription.items.data[0].id, price: 'price_basic_xxxxxx' // 替换为你的basic计划价格ID }], proration_behavior: 'none', payment_behavior: 'default_incomplete', effective_date: currentSubscription.current_period_end } );
效果说明
设置完成后:
- 用户当前的Pro订阅会正常使用到当前计费周期结束
- 周期到期时,系统自动切换为Basic计划,并按每月1美元的价格扣费
- 全程不会产生任何中途的按比例计费费用,完全符合需求
内容的提问来源于stack exchange,提问作者Romuloux
相关产品推荐
相关产品推荐

