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

Stripe Connect API技术问询:延迟扣款与分佣实现及问题排查

你的需求完全可行,方案如下

核心结论

你需要用 Payment Intent API 结合 Stripe Connect 的关联账户配置,完全可以实现延迟扣款+平台抽成的需求。

具体实现步骤

1. 用户下单时创建待授权的Payment Intent

创建Payment Intent时,关键配置这几个参数:

  • capture_method: manual:设置为手动捕获,下单时仅授权用户支付方式,不会实际扣款,资金处于待确认状态。
  • transfer_data[destination]:指定商家的connected_account_id,交易资金最终会转入该关联账户。
  • application_fee_amount:填写平台要收取的手续费金额(单位为最小货币单位,比如人民币分),这笔钱会直接进入你的平台Stripe账户。

指定关联账户有两种方式:

  • 在请求头里添加 Stripe-Account: {{商家的connected_account_id}}
  • 或者在Payment Intent参数中设置 on_behalf_of: {{商家的connected_account_id}}

示例伪代码:

final paymentIntent = await stripe.paymentIntents.create(
  PaymentIntentCreateParams(
    amount: 1000, // 10元,单位分
    currency: 'cny',
    captureMethod: PaymentIntentCaptureMethod.manual,
    transferData: PaymentIntentTransferData(
      destination: 'acct_xxxxxx', // 商家的connected_account_id
    ),
    applicationFeeAmount: 100, // 1元手续费
  ),
  requestOptions: RequestOptions(
    headers: {'Stripe-Account': 'acct_xxxxxx'},
  ),
);

2. 用户取餐完成后触发实际扣款

当用户确认取餐并点击完成按钮时,调用Payment Intent的capture接口,此时才会实际从用户账户扣款,资金自动拆分:商家收到扣除手续费后的金额,平台手续费直接到账。

示例捕获请求伪代码:

await stripe.paymentIntents.capture(
  paymentIntent.id,
  requestOptions: RequestOptions(
    headers: {'Stripe-Account': 'acct_xxxxxx'},
  ),
);

关于你之前的尝试说明

  • 关联账户直接扣款会话(Checkout Session):其实也能实现延迟捕获,只需创建Checkout Session时设置payment_intent_data[capture_method] = manual,但Payment Intent灵活性更高,更适合你需要后端手动触发扣款的场景。
  • Payment Intent API指定关联账户:你之前没找到是因为该配置不在Payment Intent顶层参数里,而是通过请求头Stripe-Account或on_behalf_of参数设置,需结合Connect场景查看文档。

注意事项

  • 商家关联账户建议选Standard或Express类型,支持直接接收转账,配置更简单。
  • 支付授权有效期一般为7天,需确保用户在有效期内完成取餐,否则授权失效需重新创建Payment Intent。
  • 所有Stripe API请求必须在你的Flutter后端代码中处理,禁止在前端(FlutterFlow)暴露Secret Key,避免安全风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 12:37:05