Stripe API PHP部分退款失效:执行后总是全额退款
Stripe PHP SDK部分退款变全额退款的排查方案
可能的原因及排查步骤
核对退款明细与支付意向状态
登录Stripe后台找到对应Payment Intent,查看以下信息:amount_received:确认实际到账金额是否为预期的3 CHFamount_refunded:查看已退款总金额- 逐条查看退款记录的单条金额,确认是否是多次小额退款累计成全额,而非单次触发全额退款。
验证参数传入是否正确
在createRefund函数中添加日志,输出传入的$refundAmount和转换后的$refundAmount * 100值,确认调用函数时传入的退款金额确实是0.5 CHF(转换后应为50),而非误传了3 CHF。检查支付方式是否支持部分退款
查看该Payment Intent的payment_method_types字段,部分支付方式(如特定预付卡、线下支付渠道)不支持部分退款。CHF主流信用卡通常支持,但需确认具体支付方式的官方规则。排查重复调用情况
检查是否存在前端重复触发退款请求、后端逻辑重复调用createRefund函数的情况,多次小额退款累计可能会被误认为是单次全额退款。确认Payment Intent状态
确保Payment Intent处于succeeded状态后再发起退款,若处于requires_confirmation等未完成状态,退款可能会直接取消整个支付意向,导致全额退款。
内容的提问来源于stack exchange,提问作者sveta ivanova
相关产品推荐
相关产品推荐

