Stripe不支持subscription_schedule.completed事件 应如何进行测试?
处理方案
本地测试模拟subscription_schedule.completed事件
Stripe CLI支持手动发送自定义事件,无需等待官方内置对该事件类型的支持,操作步骤如下:
- 首先启动本地webhook监听:
stripe listen --forward-to localhost:{{你的服务端口}}/{{你的webhook接收路径}} - 新开终端窗口,使用
stripe events send命令直接构造目标事件发送到本地端点:
你可以先调用stripe subscription_schedules retrieve {{你的测试schedule ID}}获取真实的schedule结构,调整状态为完成后作为payload传入,也可以仅保留后端逻辑需要的核心字段构造简化payload,命令参考:stripe events send subscription_schedule.completed --data "subscription_schedule={{调整后的JSON结构}}"
测试环境提前触发schedule完成
Stripe后台没有提供可视化操作入口,但可以直接调用API主动触发schedule完成:
- 调用
subscription_schedules.release接口,传入目标schedule ID,设置参数preserve_cancel_date=false,调用后schedule会直接标记为completed,同时触发对应事件。 - 如果你需要保留原订阅的后续配置逻辑,也可以调用
subscription_schedules.update接口,将phases的结束时间修改为当前时间前1秒,同时将end_behavior设置为release,调用后Stripe会立即判定schedule到期,触发完成事件。
生产兜底逻辑补充
为了避免事件漏发导致业务逻辑不执行,可以增加两层兜底校验:
- 每日定时拉取前一天状态变更为
completed的subscription schedule列表,和系统内已处理记录做比对,对未处理的记录执行补偿逻辑。 - 用户访问订阅相关功能页时,实时查询关联schedule的状态,如果发现已完成但未处理,当场触发对应业务逻辑。
内容的提问来源于stack exchange,提问作者usman12121
相关产品推荐
相关产品推荐

