订阅场景下,使用Webhooks需监听哪些Stripe事件?
Stripe订阅状态同步数据库的实操方案
核心事件监听逻辑
- 免费试用期激活:监听
customer.subscription.created事件,提取订阅对象的trial_end字段。只要当前时间早于该时间点,直接把数据库内对应用户的付费状态设为active(已付费)。 - 月度付款成功同步:监听
invoice.paid事件,确认关联的订阅状态为active后,更新数据库用户的付费状态为active,同时记录付款时间、金额等明细。 - 付款失败处理:监听
invoice.payment_failed事件,将用户付费状态标记为pending(待付款),方便后续触发支付提醒。
避坑要点
- 做幂等处理:用Stripe事件的
id作为唯一键,避免同一事件重复更新数据库。 - 不要过度依赖
customer.subscription.updated:该事件触发场景多(比如试用结束、计划变更),不如聚焦付款和订阅创建的核心事件更可靠。 - 试用到期预警:可以监听
customer.subscription.trial_will_end事件,提前通知用户添加支付方式,减少订阅流失。
内容的提问来源于stack exchange,提问作者Sebastian Trygg
相关产品推荐
相关产品推荐

