如何通过API查询Stripe客户订阅升级/降级的变更日期?
查询Stripe订阅升级/降级的准确变更日期
以下是几种可靠的查询方式,完全通过Stripe API实现,适合定期同步场景:
1. 订阅历史记录(最精准)
Stripe订阅对象自带history属性,记录了所有订阅变更的关键信息,包括变更时间、类型和前后状态。
- 调用API获取订阅详情时,必须通过
expand[]=history参数展开该字段 - 每条历史记录的
created字段就是变更发生的Unix时间戳,type字段会标记为subscription_update,同时previous_attributes和current_attributes会明确显示价格/套餐的变更内容,完美对应升级/降级操作
Go库调用示例:
import ( "github.com/stripe/stripe-go/v78/subscription" ) params := &stripe.SubscriptionParams{} params.AddExpand("history") sub, err := subscription.Get("sub_your_subscription_id", params) if err != nil { // 处理错误逻辑 } // 遍历历史记录,筛选升级/降级相关的变更 for _, entry := range sub.History { if entry.Type == "subscription_update" { // entry.Created 就是变更的Unix时间戳,可转换为具体日期 // entry.PreviousAttributes、entry.CurrentAttributes 可验证变更内容 } }
2. 发票的 prorate 细节
升级/降级操作通常会生成带有 prorate(按比例计费)的发票,通过发票可以定位变更时间:
- 找到订阅关联的
latest_invoice,在发票的lines.data中筛选proration: true的条目 - 查看该条目对应的
proration_details.subscription_proration_date,这个字段就是订阅变更生效的日期(立即生效则是操作时间,延迟生效则是下个计费周期起始时间)
3. 事件API批量查询
通过Stripe Events API筛选customer.subscription.updated事件,适合批量同步多个订阅的变更记录:
- 调用ListEvents接口,设置参数:
type: customer.subscription.updatedcreated[gte]和created[lte]指定查询时间范围data.object.id: 目标订阅ID(可选,单订阅查询)
- 每个事件的
created字段就是变更发生的时间,data.object包含变更后的订阅状态,可验证是否为升级/降级操作
内容的提问来源于stack exchange,提问作者ashemez
相关产品推荐
相关产品推荐

