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

已集成Stripe Connect支付流程,转账关联账户时提示余额不足

解决Stripe Connect测试环境转账余额不足的问题

兄弟,我之前也踩过这个测试环境的坑,先给你点明核心问题:测试模式下你的Stripe平台账户(管理员账户)初始是没有可用余额的,哪怕你刚创建了一笔Charge,测试环境里的资金不会像生产环境那样实时到账,所以直接发起Transfer就会触发余额不足的错误。下面给你几个靠谱的解决办法:

1. 手动给测试平台账户加余额

这是最快解决当前问题的办法:

  • 登录Stripe Dashboard的测试模式(记得切换右上角的测试/生产开关)
  • 进入【Balances】页面
  • 点击【Add funds】按钮,随便选个测试金额注入到账户里,之后再发起Transfer就有余额可用了

2. 优化转账逻辑(更符合Stripe最佳实践)

你现在先收费到平台再转账的方式,其实可以换成更高效的模式,从根源上避免余额问题:

方式一:用Destination Charge直接拆分资金

这种方式可以在创建Charge的时候直接指定关联账户,让资金自动拆分,不需要后续手动Transfer,完全绕开平台余额的问题:

// 注意:金额要转成最小货币单位,比如15.00英镑就是1500便士
$totalAmount = 1500;
$transferToStore = ($totalAmount * 98) / 100; // 比如扣除2%平台费,转给商家98%

\Stripe\Charge::create([
    "amount" => $totalAmount,
    "currency" => 'GBP',
    "customer" => $stripeDetails['stripe_customer_id'],
    "destination" => [
        "account" => $storeData['stripe_account_id'],
        "amount" => $transferToStore
    ]
]);

Charge完成后,商家的关联账户会自动收到指定金额,平台留下剩余的费用,全程不用手动处理转账,也不会有余额不足的问题。

方式二:如果坚持用先收费再转账的模式

除了给测试账户加余额,还要注意:测试环境下创建的Charge默认是pending状态,资金不会立刻进入可用余额。你需要在Stripe Dashboard里找到这笔测试Charge,手动点击【Mark as available】,把资金标记为可用,之后再发起Transfer就没问题了。

3. 检查你的金额计算逻辑

看你代码里的这段计算:

$splitAmount = 100 * 2 / 100;
$splitAmount = 90 - $splitAmount;

建议加上注释明确每一步的含义(比如是扣除多少平台费),避免后续维护时搞混。另外,要确保计算结果是整数(因为Stripe只接受最小货币单位的整数金额),如果出现小数可能会触发额外错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:25:35