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

Stripe一次性Checkout支付成功后如何将Payment Method设为默认

支付方式设为默认的实现方案

用户侧已保存支付方式的Dashboard展示参考:
客户Payment Method

两个需求都可以通过官方API实现,分两种落地方式:

方案1:Checkout完成后主动调用API设置默认

适合已经上线、不想改动现有Checkout创建逻辑的场景,步骤如下:

  • 服务端配置监听checkout.session.completed Webhook事件,不要依赖前端跳转回调做后续逻辑,前端回调存在丢数、篡改风险,Webhook是唯一可信的服务端数据源
  • 解析收到的Webhook事件,从Checkout Session对象中提取两个核心字段:
    • customer:本次支付关联的客户ID,格式为cus_xxxxxx
    • payment_method:本次支付使用的支付方式ID,格式为pm_xxxxxx;支付成功且用户同意保存后,该支付方式会自动关联到对应Customer下
  • 服务端调用更新Customer接口,将该支付方式设为默认,调用示例:
curl https://api.stripe.com/v1/customers/cus_xxxxxx \
  -u 你的Stripe密钥: \
  -d "invoice_settings[default_payment_method]"="pm_xxxxxx"

接口返回200即设置成功,客户Dashboard就会出现默认标识,期望效果参考:
期望实现的默认支付方式设置效果

方案2:创建Checkout时直接配置,支付成功自动设为默认

适合新开发流程,不需要额外编写Webhook处理逻辑,创建一次性支付模式(mode=payment)的Checkout Session时,传入以下参数即可:

curl https://api.stripe.com/v1/checkout/sessions \
  -u 你的Stripe密钥: \
  -d "mode"="payment" \
  -d "customer"="cus_xxxxxx" \
  # 标记支付方式后续可用于离线扣款,触发自动保存逻辑
  -d "payment_intent_data[setup_future_usage]"="off_session" \
  # 开启支付方式自动保存
  -d "saved_payment_method_options[payment_method_save]"="enabled" \
  # 开启自动设为默认支付方式
  -d "saved_payment_method_options[default_payment_method]"="enabled"

配置完成后,用户走完支付流程,本次使用的支付方式保存后会自动被设为该客户的默认支付方式,无需额外调用接口。

注意事项

  • 如果创建Checkout Session时没有传入固定的customer参数,Stripe会为首次支付的用户新建Customer对象,上述配置依然生效,新Customer的默认支付方式就是本次支付使用的方式
  • 如果你还在使用旧版Sources类支付方式(格式为src_xxxxxx/card_xxxxxx),更新默认支付方式时需要传Customer的default_source字段,新接入场景推荐统一使用PaymentMethod API
  • 所有携带密钥的API调用必须放在服务端执行,禁止在前端直接调用更新Customer的接口,避免密钥泄露

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 13:24:21