如何通过Stripe API查询指定Payment Intent的退款金额?
查询Stripe Payment Intent退款金额的可靠方式
你的方法的局限性
你当前通过latest_charge查询退款金额的方式不可靠,确实存在退款不在latest_charge中的情况:
- 当Payment Intent经历多次支付尝试(比如首次支付失败后重试成功),
latest_charge仅指向最后一次成功的Charge,但如果之前失败的Charge存在退款(比如预授权撤销),这部分退款不会被统计到latest_charge的amount_refunded中。 - 部分场景下,Payment Intent可能关联多个Charge(比如拆分支付、多阶段授权),仅查询
latest_charge会遗漏其他Charge的退款记录。
正确的查询方式
方式1:直接通过Payment Intent API获取汇总退款数据
使用Stripe CLI执行以下命令,返回结果中的amount_refunded字段即为该Payment Intent的总退款金额;通过对比amount_refunded和amount字段,可判断是否全额退款(两者相等则为全额退款,否则为部分退款):
stripe payment_intents retrieve pi_3NnXXYKI47gqqtmf0eR178Es --expand "charges.data"
添加--expand "charges.data"参数后,还能同时获取所有关联Charge的详情,可逐一核对每笔Charge的退款情况。
方式2:查询关联的所有Refund记录
直接查询该Payment Intent关联的所有退款记录,手动累加退款金额:
stripe refunds list --payment_intent pi_3NnXXYKI47gqqtmf0eR178Es
返回结果会列出每笔退款的amount、创建时间、原因等详情,累加所有amount值即可得到总退款金额。
关键结论
- 不要依赖
latest_charge统计Payment Intent的总退款,它仅代表最后一次成功的Charge,无法覆盖所有关联退款场景。 - 优先使用Payment Intent自身的
amount_refunded字段,或直接查询所有关联Refund记录汇总金额,这两种是官方认可的可靠方法。
内容的提问来源于stack exchange,提问作者WebSpence
相关产品推荐
相关产品推荐

