基于Stripe实现买家单次支付同时结算给多个卖家的技术咨询
多卖家单次结账的Stripe技术实现方案
核心方案选型
基于Stripe Connect + Payment Intents/Checkout实现,借助Connect的转账能力完成多卖家分账,让卖家自行承担Stripe交易手续费。
前置准备
- 注册成为Stripe Connect平台账户,完成资质审核。
- 引导入驻卖家通过Stripe Connect完成账户注册(推荐标准账户,卖家可自主管理账户,手续费自行承担),并留存每个卖家对应的
stripe_account_id。
前端实现
使用Stripe Checkout或Elements组件收集买家信用卡信息,仅需一次输入:
- 若用Checkout:创建包含所有商品总金额的Checkout Session,跳转至Stripe支付页,买家完成支付后回调至平台后端。
- 若用Elements:将Elements集成到平台结账页,收集支付信息后把支付令牌(
payment_method_id)传给后端。
后端核心逻辑
1. 创建并确认支付意向(Payment Intent)
根据购物车总金额创建Payment Intent,确保支付成功后资金先进入平台Stripe账户:
# Python示例代码 stripe.PaymentIntent.create( amount=总金额(单位:分), currency="usd", payment_method=前端传入的payment_method_id, confirm=True, return_url="平台回调地址" )
2. 完成多卖家分账转账
支付成功后,遍历每个卖家的订单金额,创建转账至对应卖家的Connected Account:
# 遍历卖家订单列表 for seller_order in seller_orders: stripe.Transfer.create( amount=seller_order['amount_in_cents'], currency="usd", destination=seller_order['stripe_account_id'], )
- Stripe会自动从卖家的Connected Account余额中扣除交易手续费(如2.9%+0.30美元),卖家最终实收金额为转账金额减去手续费。
关键细节
- 手续费规则:标准Connected Account默认由卖家承担自身交易的Stripe手续费,资金流向为:买家付款→平台账户→卖家账户(扣除手续费后)。
- 转账时机:建议在Payment Intent状态变为
succeeded后立即发起转账;若需延迟处理,可设置transfer_group关联支付意向,后续批量操作。 - 异常处理:监听转账失败事件(如卖家账户状态异常),记录并触发重试机制,或通知平台人工介入。
备选方案
若平台需收取服务费,可在转账时设置application_fee_amount,从卖家转账金额中扣除平台服务费,剩余部分转至卖家账户,手续费仍由卖家承担。
内容的提问来源于stack exchange,提问作者JohnC
相关产品推荐
相关产品推荐

