如何为Stripe Connect自定义账户绑定银行账户?Node.js/TS技术求助
关于Stripe Connect Custom账户绑定银行账户的流程梳理
你已经基于Node.js/TS搭建了采用Stripe Connect Custom账户的第三方支付处理平台,且能完成账户创建,下面针对你的三个疑问逐一说明:
1. 为Custom账户绑定银行账户的两种方式
方式一:通过API直接关联账户
若已收集到银行账户的合规信息,可调用Stripe的accounts.createExternalAccount接口,将银行账户绑定到已创建的Custom账户上。TS示例代码如下:
// accountId为之前创建的Custom账户ID const externalAccount = await stripe.accounts.createExternalAccount( accountId, { external_account: { object: "bank_account", country: "US", // 根据实际国家调整 currency: "usd", routing_number: "110000000", // 美国路由号示例 account_number: "000123456789", // 美国账户号示例 account_holder_name: "John Doe", // 账户持有人姓名 account_holder_type: "individual" } } );
方式二:用Stripe Elements安全收集信息(推荐)
直接收集银行敏感数据会涉及PCI合规风险,推荐用Stripe Elements在前端生成银行账户令牌,再将令牌传给后端完成绑定:
- 前端引入Stripe.js和Elements组件,搭建银行账户收集表单
- 用户输入完成后,调用
stripe.createToken('bank_account')生成令牌 - 后端接收令牌后,调用API完成绑定:
// btok_xxxxxx为前端传来的银行账户令牌 const externalAccount = await stripe.accounts.createExternalAccount( accountId, { external_account: "btok_xxxxxx" } );
2. 有效银行账户所需的数据(按常见国家区分)
银行账户必填字段因国家/地区而异,核心信息包括:
- 通用字段:
country(账户所属国家)、currency(结算货币)、account_holder_name(账户持有人姓名)、account_holder_type(此处为individual) - 美国(US):
routing_number(9位数字)、account_number - 欧盟/英国:
iban(国际银行账户号码,格式随国家微调) - 加拿大(CA):
institution_number(3位)、transit_number(5位)、account_number - 澳大利亚(AU):
bsb_number(6位)、account_number
部分国家可能要求额外验证信息(如地址),具体以对应国家的Stripe规则为准。
3. 发送至服务器前的数据验证方案
方案一:利用Stripe Elements内置验证
使用Stripe Elements收集信息时,组件会实时验证格式(如检查路由号位数、IBAN格式),并阻止无效内容提交,同时避免你直接接触敏感数据,降低合规风险。
方案二:自定义前端校验(自行收集场景)
若需自行收集信息,可针对不同国家规则做前端校验:
- 美国路由号:正则匹配
^\d{9}$ - IBAN:用专用校验库(如
iban-validator)验证格式 - 账户号码:按对应国家的长度规则校验(如美国账户号通常为8-17位数字)
方案三:预生成令牌验证
前端调用stripe.createToken('bank_account')时,Stripe会先验证数据有效性,若无效会返回错误信息,可直接在前端捕获并提示用户,无需将无效数据传到后端。
内容的提问来源于stack exchange,提问作者Arturo Arroyo
相关产品推荐
相关产品推荐

