You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

测试模式下获取Stripe处理费遇BalanceTransaction为空的问题排查

在测试模式下获取Stripe BalanceTransaction的解决方案

以下是针对你遇到的测试模式下BalanceTransaction返回nil问题的具体解决步骤:

  • 先确认PaymentIntent的核心状态
    只有状态为succeeded的PaymentIntent才会生成关联的Charge对象。先单独调用不带expand参数的查询:

    Stripe.PaymentIntent.retrieve("pi_3N6CwERjTBykGSI00hRClHKK", [connect_account: "acct_1LQdkARjTBykGSI0"])
    

    检查返回结果的status字段是否为succeeded,同时查看charges.data数组是否有元素——如果数组为空,说明该PaymentIntent还未完成付款流程,自然不会有BalanceTransaction。

  • 验证Charge本身是否关联BalanceTransaction
    如果charges.data有数据,提取其中的Charge ID(比如ch_xxx),直接查询该Charge并展开BalanceTransaction:

    Stripe.Charge.retrieve("ch_xxx", [connect_account: "acct_1LQdkARjTBykGSI0", expand: ["balance_transaction"]])
    

    如果这里能返回BalanceTransaction,说明问题出在PaymentIntent的展开参数写法;如果还是nil,继续排查下面的配置问题。

  • 调整Expand参数的写法
    Stripe的expand参数对数组元素的支持可以更明确,你可以尝试指定数组索引来展开第一个Charge的BalanceTransaction:

    Stripe.PaymentIntent.retrieve("pi_3N6CwERjTBykGSI00hRClHKK", [connect_account: "acct_1LQdkARjTBykGSI0", expand: ["charges.data.0.balance_transaction"]])
    

    这种写法可以避免因数组为空或多元素导致的展开异常。

  • 检查Connect账户的配置状态
    测试模式下的Connect账户也需要完成基础激活流程(比如填写必要的测试信息),否则可能无法生成BalanceTransaction。另外要确认你的收费模式:

    • 如果是直接收费(Direct Charge):Charge和BalanceTransaction都归属于指定的Connect账户,你的调用参数是正确的;
    • 如果是目的地收费(Destination Charge):Charge创建在平台账户,BalanceTransaction会拆分到平台和Connect账户,此时需要调整查询的账户参数或展开对应的拆分字段。
  • 测试模式的特殊情况排查
    测试模式下,使用某些测试卡号(比如4242开头的标准测试卡)完成付款后,Stripe会立即生成BalanceTransaction,不会有延迟。如果使用的是特殊测试卡(比如模拟失败或延迟的卡号),可能不会生成有效Charge和BalanceTransaction,建议更换标准测试卡重试。

内容的提问来源于stack exchange,提问作者uzair aslam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 15:32:05