You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Stripe中实现最长90天的付款托管?含关联账户分账场景

Stripe付款托管+分账配置问题解决方案

你要的资金暂存(最长90天)+分账的需求,其实是通过Stripe Connect的延迟转账功能实现的,我帮你把代码和逻辑理清楚:

为什么原来的代码没有托管效果?

你之前用的destination参数会自动立即完成转账给关联账户,相当于直接把分账资金打过去,自然看不到“托管”选项。要实现暂存,得换用transfer_data参数组合,把转账逻辑从“自动”改成“手动触发”。

修改后的收款代码(带暂存逻辑)

\Stripe\Stripe::setApiKey(STRIPE_SECRET_KEY);

$charge = \Stripe\Charge::create([
    "amount" => 400,
    "currency" => "usd",
    "source" => "tok_visa",
    // 替换原destination为transfer_data,指定关联账户但不自动转账
    "transfer_data" => [
        "destination" => "acct_1CVDnsDG3NG0OLEa",
        // 用transfer_group标记这笔收款对应的订单/业务ID,后续转账要用到
        "transfer_group" => "order_12345"
    ]
]);

手动/API释放分账资金

当你确认可以把资金转给关联账户时,调用Transfer API发起转账,记得带上之前的transfer_group来关联对应的收款:

\Stripe\Transfer::create([
    "amount" => 200,
    "currency" => "usd",
    "destination" => "acct_1CVDnsDG3NG0OLEa",
    "transfer_group" => "order_12345"
]);

关键注意点

  • 暂存的资金会留在你的Stripe平台账户下,最长可保留90天,超时会自动退款给付款用户
  • 如果需要先锁定用户资金再确认收款(比如先授权后实际扣款),可以在Charge参数里加"capture" => false,之后调用$charge->capture()完成收款后再发起转账
  • transfer_group建议用你的业务唯一标识(比如订单ID),确保转账和收款一一对应

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

火山引擎 最新活动