如何通过Webhook获取月度续订订阅的stripe_id?Stripe CLI事件无订阅ID
解决Stripe续订订阅ID获取问题
一、通过Webhook获取月度续订订阅的stripe_id
你需要监听Stripe的两类核心事件来捕获续订订阅的ID:
- customer.subscription.updated:当订阅完成自动续期后,Stripe会触发该事件,事件 payload 的
data.object.id就是订阅的stripe_id。同时可通过data.object.status判断订阅状态是否为active,确认续订成功。 - invoice.payment_succeeded:订阅续订对应的账单支付成功时触发,这是确认续订完成的关键事件,下文会详细说明如何从中提取订阅ID。
二、在invoice.payment_succeeded事件中提取订阅ID
你提到用Stripe CLI触发该事件时找不到订阅ID,是因为订阅ID嵌套在invoice对象的subscription字段里,具体层级为:event.data.object.subscription
简化版的事件结构示例:
{ "data": { "object": { "id": "in_123456", // 账单ID "subscription": "sub_789012", // 目标订阅的stripe_id "status": "paid", "customer": "cus_abcdef" } } }
用Stripe CLI触发事件后,可通过两种方式查看该字段:
- 直接在CLI输出的日志中搜索
"subscription"字段,定位对应的订阅ID; - 本地调试Webhook时,在处理代码里解析事件后,直接提取
event.data.object.subscription的值。
结合你的数据库场景:收到该事件后,提取到subscription值与数据库中存储的stripe_id匹配,即可标记对应订阅已完成续订。
内容的提问来源于stack exchange,提问作者Diego Mendoza
相关产品推荐
相关产品推荐

