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

Stripe中default_source与default_payment_method的区别及选型疑问

Stripe default_source 与 default_payment_method 的区别及使用建议

我使用以下PHP代码将卡片设置为默认支付方式:

if ($form_state['input']['default'] == TRUE) {
      // Set the current card as default.
      try {
        $stripe->customers->update(
          $customer['id'],
          ['invoice_settings' => ['default_payment_method' => $card['id']]]
        );
      } catch (\Stripe\Exception\InvalidRequestException $e) {
        watchdog('store', $e->getMessage(), array(), WATCHDOG_ERROR);
      }
    }

根据Stripe官方文档建议,应使用default_payment_method参数,这段代码也能正常设置$customer['invoice_settings']['default_payment_method']的值。但通过Stripe UI添加新卡片时,系统会自动设置$customer['default_source']的值,因此有以下疑问:

  • 这两个参数的区别是什么?
  • 应优先使用哪一个?
  • 如果default_source是过时的遗留参数,为何Stripe自身的UI仍在使用它?

解答

1. 参数区别

  • default_source:属于Stripe旧版API的遗留字段,对应早期的Source对象,仅支持卡片、银行账户等有限的支付类型,目前处于维护状态,不再新增功能。
  • default_payment_method:是Stripe主推的新版参数,对应PaymentMethod对象,是统一的支付方式抽象,支持卡片、数字钱包(Apple Pay/Google Pay)等多种支付类型,功能更全面,是当前官方推荐的标准用法。

2. 优先使用建议

优先使用default_payment_method。Stripe官方已明确将其作为设置默认支付方式的标准方案,Source系统已逐步被PaymentMethod替代,后续API更新和新功能都会围绕PaymentMethod展开,使用新版参数能获得更好的兼容性和功能支持。

3. Stripe UI仍使用default_source的原因

这是为了向后兼容。大量存量商户的系统仍依赖旧版Source API和default_source字段,Stripe UI保持该行为是为了避免破坏这些旧集成的正常运行。同时Stripe正在逐步完成过渡,未来会逐步更新UI,仅设置default_payment_method字段。


2023年1月10日更新:Stripe官方支持说明

Stripe官方支持回复:
我们的Dashboard(即Stripe UI)目前在添加新支付方式时,会同时设置default_source和default_payment_method两个字段,目的是兼容仍在使用旧版Source API的商户集成。对于新的集成,我们强烈建议使用default_payment_method,因为Source API已进入维护状态,不再添加新功能。未来我们会逐步更新Dashboard,仅设置default_payment_method字段,但目前为了保障向后兼容性,会同时设置两个字段。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 07:15:38