借助Stripe API通过银行令牌创建支付方式技术咨询
实现方案(基于Stripe Financial Connect + OAuth)
完全可以实现你说的需求——通过Stripe OAuth授权获取银行账户信息,再用拿到的bank token创建可留存的支付方式用于入金转账,全程不用自己收集路由号/账户号。我之前做过类似场景,给你梳理下关键步骤:
第一步:完成Stripe OAuth授权流程
引导用户跳转到Stripe的OAuth授权页面,请求获取银行账户的访问权限(scope需包含read_write或对应银行账户的特定权限,具体看你使用的产品)。用户授权后,后端会拿到authorization_code,用这个code调用Stripe API交换得到access_token和refresh_token,同时就能获取到用户的银行账户相关凭证(和你当前拿到的bank token衔接)。第二步:用bank token创建可留存的PaymentMethod
调用Stripe的PaymentMethod CreateAPI,参数重点注意:type设为us_bank_account(非美国账户对应调整类型)token传入前端获取到的bank token- 必须指定
customer参数(关联你的Stripe客户ID),这样PaymentMethod会被留存到客户名下,后续可重复使用
示例代码(后端Node.js):
const stripe = require('stripe')('你的API秘钥'); const paymentMethod = await stripe.paymentMethods.create({ type: 'us_bank_account', token: '前端传来的bank_token', customer: '你的Stripe客户ID', });第三步:验证PaymentMethod(按需)
美国银行账户默认会触发微存款验证(几分钱的小额转账),用户确认金额后支付方式会变为verified状态;部分通过OAuth授权的合作银行支持即时验证,无需等待。只有验证通过的支付方式才能发起入金转账。第四步:发起入金转账
用留存的PaymentMethod创建Transfer,具体API取决于你使用的Stripe金融产品(比如Connect入金或自定义金融账户转账)。示例:const transfer = await stripe.transfers.create({ amount: 1000, // 单位:分 currency: 'usd', source: paymentMethod.id, destination: '你的目标金融账户ID', });
关键注意事项:
- 确保你的Stripe账户已开通Financial Connect或对应银行账户接入权限
- OAuth授权的scope要准确,避免权限不足导致无法获取银行账户信息
- 留存PaymentMethod时必须关联Customer,否则只能单次使用
- 入金转账的金额、币种需符合Stripe规则和你的账户限制
内容的提问来源于stack exchange,提问作者user2738145
相关产品推荐
相关产品推荐

