调用Stripe::Customer.retrieve查询客户为何不返回subscription订阅字段
Rails项目Stripe客户查询返回订阅字段解决方案
根本原因
Stripe API默认仅返回资源的基础字段,嵌套关联类资源(比如客户关联的订阅、支付方式等)不会默认同步返回,以此压缩响应体积、提升接口响应速度。你单独查询订阅可以拿到数据,是因为直接请求了订阅资源的接口。
实现方法
调用Stripe::Customer.retrieve时主动传入expand参数,指定需要展开返回的关联资源即可,代码示例如下:
# 单个客户查询,同步返回关联的订阅列表 customer = Stripe::Customer.retrieve({ id: "cus_XYZ", expand: ["subscriptions"] }) # 执行后可直接获取客户下所有订阅信息 puts customer.subscriptions.data
扩展说明
- 如果需要同时返回订阅关联的价格、产品等更深层的关联信息,可以按层级声明expand参数:
customer = Stripe::Customer.retrieve({ id: "cus_XYZ", expand: ["subscriptions", "subscriptions.data.items.data.price.product"] }) - Stripe API最多支持同时展开4层嵌套资源,超出层级会触发参数报错。
内容的提问来源于stack exchange,提问作者Samuel Da Costa
相关产品推荐
相关产品推荐

