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

Stripe迁移:Charge API的bank_account类型在Payments API中的等价物是什么?

Stripe Source API 转 Payments API:银行账户支付方式适配方案

问题背景

正在将代码库从Stripe Source API迁移至Payments API,Charge读取逻辑中,原Source API通过source.object判断card/bank_account两种支付方式,其中card已适配为payment_method_details.type='card',但找不到bank_account对应的Payments API类型及字段,需要适配指导。

原Source API代码示例:

const source = charge.source;  // charge is of type Stripe.Charge

if (source.object === 'card') {
   let month = source.exp_month;
   let lastFour = source.last4;
   ... 
} else if (source.object === 'bank_account') {
   let bank = source.metadata.bank;
   let fingerprint = source.fingerprint;
   ...
} else {
   ...
}

迁移中待适配代码:

const paymentMethodDetails = charge.payment_method_details;  // charge is of type Stripe.Charge

if (paymentMethodDetails.type === 'card') {
   let month = paymentMethodDetails.card.exp_month;
   let lastFour = paymentMethodDetails.card.last4;
   ... 
} else if (paymentMethodDetails.type === ?????) { // <-- 待填充类型
   let bank = paymentMethodDetails.?????? // <-- 待填充字段
   let fingerprint = paymentMethodDetails.?????? // <-- 待填充字段
   ...
} else {
   ...
}

适配方案

在Payments API中,原bank_account类型对应区域化的银行账户支付方式类型,核心适配规则如下:

  1. 类型匹配
    原source.object='bank_account'根据业务覆盖的地区,对应不同的payment_method_details.type值:

    • 美国银行账户:us_bank_account
    • 澳大利亚银行账户:au_becs_debit
    • 欧盟银行账户:sepa_debit
    • 英国银行账户:gb_bacs_debit
  2. 字段映射

    原Source API字段Payments API对应字段
    source.metadata.bank(自定义元数据)payment_method_details.[类型].metadata.bank
    银行名称(原需自定义存储)payment_method_details.[类型].bank_name(官方提供)
    source.fingerprintpayment_method_details.[类型].fingerprint
  3. 适配后代码示例

const paymentMethodDetails = charge.payment_method_details;  // charge is of type Stripe.Charge

if (paymentMethodDetails.type === 'card') {
   let month = paymentMethodDetails.card.exp_month;
   let lastFour = paymentMethodDetails.card.last4;
   ... 
} else if (['us_bank_account', 'au_becs_debit', 'sepa_debit'].includes(paymentMethodDetails.type)) {
   const bankAccountDetails = paymentMethodDetails[paymentMethodDetails.type];
   // 优先取自定义元数据,无则用官方提供的银行名称
   let bank = bankAccountDetails.metadata?.bank || bankAccountDetails.bank_name;
   let fingerprint = bankAccountDetails.fingerprint;
   ...
} else {
   ...
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 18:16:05