如何从Charge或Balance Transaction中识别订阅项来源并获取subscription item id?
判断Charge/Balance Transaction是否来自订阅项并获取Subscription Item ID
可以通过Stripe对象间的原生关联关系来实现,具体步骤如下:
从Balance Transaction关联到Charge
Balance Transaction的source字段会指向触发该交易的Charge(仅当交易类型与Charge相关时)。通过这个source值调用Charge查询接口,就能拿到Charge的完整详情。判断Charge是否来自订阅
若Charge由订阅触发,它的invoice字段会存在有效值(对应发票ID)。没有invoice字段的Charge一般是单次付款,和订阅无关。从Invoice关联到Subscription
调用Invoice查询接口,通过Charge返回的invoice值获取发票详情。发票的subscription字段会指向对应的订阅ID,说明该发票由订阅生成。提取Subscription Item ID
调用Subscription查询接口获取订阅详情后,查看items.data数组——数组内每个对象的id字段就是对应的subscription item ID。如果需要精准匹配Charge对应的具体订阅项,还可以通过发票的lines.data定位:每个发票行项目的subscription_item字段会直接给出关联的订阅项ID。
补充:如果业务有快速定位需求,也可以在创建订阅时给Charge或Invoice添加自定义metadata,直接标记对应的subscription item ID,这属于业务侧的自定义实现,能简化后续查询流程。
内容的提问来源于stack exchange,提问作者Kalmans
相关产品推荐
相关产品推荐

