Stripe中PaymentMethod与Card的选择:用default_source还是default_payment_method?
关于Stripe支付方式检查与API选择的解答
核心结论
- 优先使用
default_payment_method:Sources API已被Stripe官方弃用,新集成完全基于PaymentMethod体系即可,invoice_settings.default_payment_method是当前官方推荐的默认支付方式字段。 - 新开发不要用Card API:
stripe.Customer.card.create属于旧的Sources体系接口,仅适用于维护历史遗留系统,新项目直接采用PaymentMethod API即可。
支付方式检查逻辑
要判断客户是否有可用支付方式,按以下顺序验证:
- 首先检查客户对象的
invoice_settings.default_payment_method是否存在且有效; - 若需兼容历史数据(比如之前用Sources集成的老客户),再补充检查
default_source; - 两者均为空时,提示用户填写账单详情表单。
为什么推荐第二种方案
你提供的第二种方案(前端创建PaymentMethod + 后端绑定到客户 + 设置为默认支付方式)完全符合Stripe当前最佳实践:
- PaymentMethod是统一的支付方式接口,支持卡片、ACH转账、PayPal等多种支付类型,扩展性更强;
- 绑定后的PaymentMethod可直接在账单门户、订阅管理等Stripe原生功能中正常显示和使用;
- 后续Stripe的新功能都会基于PaymentMethod开发,能避免因API弃用带来的维护成本。
Card API的适用场景
仅在维护旧的Sources体系集成时需要用到Card API,比如你的系统之前已用Sources创建了大量卡片支付源,需要继续管理这些历史数据。新开发场景下,完全无需考虑Card API。
内容的提问来源于stack exchange,提问作者gentlehopper
相关产品推荐
相关产品推荐

