Stripe API技术问询:付费月后开启2个月试用并自动取消订阅
实现Stripe先付费1个月再2个月试用期后自动取消订阅的方案
嘿,这个需求完全可以在Stripe中实现,我给你两种实用方案,包括你提到的替代思路的优化版,帮你搞定这个流程:
方案一:利用订阅多阶段(Phases)+ 自动取消(原生无Webhook依赖)
这是最直接的原生实现方式,不需要额外监听Webhook,配置好订阅阶段即可:
- 第一步:创建两个价格对象:一个是每月$xx的付费价格,另一个是每月$0的免费价格(用免费价格比折扣更直观)。
- 第二步:创建订阅时,设置多阶段计划:
- 阶段1:使用付费价格,持续1个计费周期(1个月),设置
payment_behavior: 'default_incomplete'确保立即收取第一个月的费用。 - 阶段2:使用免费价格,持续2个计费周期(2个月)。
- 阶段1:使用付费价格,持续1个计费周期(1个月),设置
- 第三步:设置订阅的
cancel_at参数为订阅创建后3个月的时间戳(也就是两个阶段全部结束的时间点)。这样当所有阶段执行完毕后,订阅会自动取消,不会产生后续费用。
这种方案的优势是全程由Stripe原生处理,不需要依赖外部服务监听事件,稳定性更高。
方案二:订阅+折扣券+Webhook自动取消(你的替代思路优化版)
如果你更倾向于用折扣券的方式,这个方案也很可靠,只需要配合Webhook处理取消逻辑:
- 第一步:创建每月$xx的订阅计划,为用户创建订阅时,立即生成第一张发票并完成收费(确保第一个月的服务是付费的)。
- 第二步:创建一个100%折扣的优惠券,设置
duration: 'repeating',max_redemptions: 2(限制仅可使用2次,对应接下来的2个月试用期)。将这个优惠券应用到订阅上。 - 第三步:监听Stripe的
invoice.created事件,在你的后端服务中编写逻辑:- 当触发该事件时,检查当前发票对应的订阅已生成的发票数量。当是第三张发票时(第一张付费,第二、第三张用折扣),立即调用Stripe的API取消该订阅,避免后续产生费用。
注意:在判断发票数量时,建议通过订阅的latest_invoice关联的周期数来确认,或者记录订阅创建时间来计算当前处于第几个计费周期,避免因发票重试等情况导致判断错误。
两种方案都能满足你的需求,方案一更省心,方案二更灵活(比如后续要调整试用期时长只需要修改优惠券设置),你可以根据自己的技术栈和需求选择。
内容的提问来源于stack exchange,提问作者camdev
相关产品推荐
相关产品推荐

