为什么调用stripe.Charge.list传入starting_after会报Invalid String错误?
问题原因
stripe.Charge.list(limit=1) 返回的是Stripe封装的分页列表对象,而starting_after参数要求传入的是上一页最后一条资源的ID字符串,你直接将整个列表对象传入,会触发参数类型校验失败,就会报Invalid string错误。
修复方案
你需要先从返回的列表对象的data字段中取出单条Charge记录,再取该记录的id属性传入参数即可,修复后的代码如下:
newer_charge_list = stripe.Charge.list(limit=1) # 先判断返回列表非空,避免索引报错 if newer_charge_list.data: # 取出列表中的第一条Charge对象 latest_charge = newer_charge_list.data[0] # 传入Charge的ID作为分页游标 older_charge = stripe.Charge.list(limit=1, starting_after=latest_charge.id)
补充说明
- Stripe所有批量查询类接口的返回结构统一,实际资源都存储在返回对象的
data数组中,不要直接对外层返回的列表对象做业务操作 - 分页参数
starting_after、ending_before均只接受对应资源的ID字符串,不支持直接传入资源对象或列表对象
内容的提问来源于stack exchange,提问作者Admia
相关产品推荐
相关产品推荐

