如何通过Stripe实现客户向服务商付款并转账至服务商银行账户的功能?
如何用Stripe实现客户直接向服务商的银行账户付款
当然可以搞定!你的这个「客户仅能向服务商发起付款、资金直达服务商银行账户」的需求,完全适配Stripe Connect的能力,我给你拆解具体操作步骤和可选模式:
1. 先搭建Stripe Connect的基础架构
- 第一步,你得在Stripe后台创建属于你的平台Connect账户(也就是你的应用对应的Stripe账户)。
- 接下来要让每个服务商(Providers)关联到你的平台:因为你已经有他们的银行账户信息,推荐用这两种账户类型:
- Express账户:Stripe提供现成的开户流程,你可以引导服务商自己完成身份验证,也可以通过API直接传入他们的银行账户信息(要符合Stripe的合规要求哦),上手快、合规压力小。
- Custom账户:如果你想完全自定义开户页面和流程,可以选这个,但对应的合规责任会更重,需要自己处理更多身份验证环节。
- 关键提醒:一定要确保每个服务商的Connect账户都绑定好他们的银行账户,不然资金没法转进去。
2. 首选方案:Direct Charges模式(资金直接到服务商账户)
这种模式下,付款是直接在服务商的Connect账户下创建的,资金扣除Stripe手续费后,会直接进入服务商的账户,完美匹配你要的「资金直达」需求:
- 先收集客户的支付方式(比如信用卡、借记卡),生成一个
PaymentMethod对象。 - 然后调用Stripe API创建
PaymentIntent,核心是要指定服务商的Connect账户ID,如果你平台要收服务费,也可以顺便设置相关参数。
给你个Node.js的代码示例参考:
const stripe = require('stripe')('你的平台Secret Key'); const paymentIntent = await stripe.paymentIntents.create({ amount: 1000, // 金额单位是分,这里对应10美元 currency: 'usd', payment_method: 'pm_xxx', // 客户的PaymentMethod ID confirm: true, stripe_account: 'acct_xxx', // 替换成服务商的Connect账户ID application_fee_amount: 100, // 平台收取的服务费,这里是1美元(可选) });
付款完成后,资金会直接进入服务商的Connect账户,之后Stripe会按照默认结算周期(一般是2天,也可以调整)自动把钱转到他们绑定的银行账户里。
3. 替代方案:Destination Charges模式(平台暂存资金再转出)
如果你的业务需要平台先暂时持有资金,再转到服务商账户,也可以用这种模式:
- 创建
PaymentIntent时,通过transfer_data[destination]指定服务商的Connect账户ID,资金会先进入你的平台账户,然后立刻(或延迟)转到服务商账户。
代码示例:
const paymentIntent = await stripe.paymentIntents.create({ amount: 1000, currency: 'usd', payment_method: 'pm_xxx', confirm: true, transfer_data: { destination: 'acct_xxx', // 服务商的Connect账户ID }, application_fee_amount: 100, // 平台服务费(可选) });
不过这种模式资金会经过平台账户,如果你要的是「直接到服务商账户」,还是优先选Direct Charges。
4. 必看的合规与注意事项
- 必须确保服务商的Connect账户完成所有合规验证(比如身份信息、银行账户有效性验证),不然资金没法正常结算到他们的银行账户。
- 平台收取的服务费要提前明确告知客户和服务商,且符合Stripe的相关规定。
- 不同地区的结算规则、手续费率可能有差异,要根据你和服务商的所在地调整设置。
内容的提问来源于stack exchange,提问作者Hahan't




