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

如何复现Stripe客户已绑定卡片但无默认支付方式、sources为空的状态

核心原因

这种「Stripe dashboard显示客户已绑卡,但API返回sources为空、default_source为null」的状态,是新旧版Stripe支付方法API的逻辑差异导致的,旧平台使用了Payment Methods API绑卡,且未显式设置默认支付方式,可通过以下两种方式复现:

1. API端复现

  • 操作流程:
    • 第一步:调用PaymentMethod.create创建卡支付方法,或直接使用前端Stripe.js收集到的支付方法ID
    • 第二步:调用PaymentMethod.attach将支付方法绑定到对应客户ID,不传入任何设置默认支付方式的参数,也不调用Customer.update修改invoice_settings.default_payment_method字段
    • 第三步:调用Customer.retrieve查询客户数据,默认返回的sources.data为空数组,default_source、invoice_settings.default_payment_method均为null;只有指定expand[]=payment_methods参数时,才能看到已绑定的卡片,和你生产环境的数据结构完全一致。

旧版Sources API绑卡会自动同步到sources集合并设置为默认值,但Payment Methods API默认不会修改上述字段,仅显式指定时才会更新,这就是旧平台能实现该状态的核心逻辑。

2. Stripe Dashboard端复现

  • 操作流程:
    • 进入目标客户的详情页面,点击「添加支付方式」
    • 输入测试卡信息(测试环境可使用通用测试卡4242 4242 4242 4242,任意未来有效期、任意3位CVV)
    • 取消勾选「设置为客户的默认支付方式」选项,完成添加
    • 此时调用API拉取客户数据,即可得到目标状态。

迁移补充提示

如果需要批量修复生产环境客户的默认支付方式配置,可先调用Customer.listPaymentMethods提取客户已绑定的卡支付方法,再调用Customer.update将对应支付方法ID赋值给invoice_settings.default_payment_method字段,即可正常发起扣款。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 20:24:03