如何修改Stripe中已创建PaymentIntent的收款目的地?
结论:已创建的PaymentIntent是否支持修改收款目的地,取决于你创建时使用的资金拆分模式
情况1:创建PaymentIntent时指定了transfer_data[destination]参数
- 这种情况下无法直接修改收款目的地:Stripe在PaymentIntent确认后会直接将对应资金划转到指定的Connect账户,资金链路已经锁定,调用更新PaymentIntent接口修改
transfer_data会直接返回报错。 - 如果你属于这种场景,只能先对原PaymentIntent发起全额退款,再创建新的PaymentIntent让用户重新支付,指定新的收款目的地(该方案会影响用户体验,不推荐)。
情况2:使用「单独收费+转账(Separate Charges and Transfers)」模式创建PaymentIntent
- 这种模式下你创建PaymentIntent时不需要指定收款目的地,资金会先全部进入你的平台账户,后续可以随时调用
Transfer接口向任意Connect账户转账,完全支持后续变更、多次调整服务承接方的场景,完美匹配你的业务需求。 - 具体操作步骤:
- 创建PaymentIntent时不添加任何
transfer_data参数,确保资金入账到你的平台Stripe账户 - 确定最终服务承接方后,调用Create Transfer接口向对应Connect账户转账,示例代码参数如下:
const transfer = await stripe.transfers.create({ amount: 1000, // 转账金额,单位为对应货币的最小单位(如人民币为分、美元为美分) currency: "usd", destination: "acct_xxx", // 承接方的Connect账户ID transfer_group: "order_xxx", // 关联对应订单ID,方便后续对账 });- 如果后续需要更换承接方,可以先对原转账发起反转(Create Transfer Reversal),再给新的承接方创建新的Transfer即可。
- 创建PaymentIntent时不添加任何
注意:如果你的平台注册区域是欧盟、印度等有资金留存限制的地区,需要提前申请对应支付服务商资质,才能使用Separate Charges and Transfers模式留存资金超过监管要求的时限。
内容的提问来源于stack exchange,提问作者Clément Duveau
相关产品推荐
相关产品推荐

