未指定客户时Stripe发票项列表为空,如何获取所有客户待处理发票项?
获取Stripe所有客户的待处理发票项解决方案
你遇到的问题根源在于使用了已被Stripe API弃用的pending=true参数来筛选待处理发票项,且全局查询时该参数无法正常生效。以下是正确的解决方法:
1. 使用正确的筛选参数
Stripe当前推荐通过invoice=null来筛选未关联到任何发票的待处理发票项(这类发票项就是你所说的"待处理"状态)。替换后的curl请求如下:
curl -G https://api.stripe.com/v1/invoiceitems -u "api_key:" -d "invoice=null"
2. 处理分页获取全部数据
Stripe API的列表接口默认单次返回10条数据,若你的待处理发票项数量较多,需要通过分页参数获取全部数据:
- 设置
limit=100:单次请求最多返回100条数据,减少请求次数 - 使用
starting_after:当响应中has_more为true时,传入上一页最后一条发票项的ID,继续获取下一页数据
示例分页请求流程:
- 首次请求:
curl -G https://api.stripe.com/v1/invoiceitems -u "api_key:" -d "invoice=null" -d limit=100
- 若响应中
has_more为true,提取最后一条发票项的ID(如ii_123456),发起下一页请求:
curl -G https://api.stripe.com/v1/invoiceitems -u "api_key:" -d "invoice=null" -d limit=100 -d starting_after=ii_123456
- 重复上述步骤,直到响应中
has_more为false,此时已获取所有待处理发票项。
为什么指定客户时pending=true能生效?
针对单个客户的查询场景中,Stripe API仍对旧参数做了兼容处理,但全局查询时该参数已不再生效,因此必须使用invoice=null来替代。
内容的提问来源于stack exchange,提问作者Zahin Zaman
相关产品推荐
相关产品推荐

