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

咨询:Stripe Subscriptions能否自动尝试备份卡与非默认卡扣费

Stripe Smart Retries 不尝试备份卡/非默认卡的解决方案

Stripe 默认的 Smart Retries 确实只针对客户的默认支付方式发起重试,不会自动尝试备份卡或非默认卡,这是当前产品的设计逻辑。不过有几种官方支持的方式可以实现自动尝试其他卡片的需求,无需立刻启动自定义开发:

1. 使用支付方法集合(Payment Method Sets)

在 Stripe Dashboard 的「Billing > Settings > Payment Methods」中,创建支付方法集合,将客户的所有存储卡片加入该集合,然后在订阅配置里指定使用这个集合作为扣费来源。这样当默认卡扣费失败时,Stripe 会自动尝试集合内的其他卡片。

操作要点:

  • 创建集合时选择「包含客户的所有支付方法」,或手动指定允许的卡片类型
  • 创建/更新订阅时,将 default_payment_method 参数替换为 payment_method_collection,传入你创建的集合 ID
  • 确保订阅的 payment_behavior 设置为 default_incomplete 或 allow_incomplete,让 Stripe 自动处理多卡片重试流程

2. 启用自动支付方法选择(Automatic Payment Method Selection)

在「Billing > Settings > Subscriptions and emails」中开启该功能,Stripe 会基于机器学习模型自动选择客户存储的最优支付方式(包括非默认卡)扣费,默认卡失败时会自动尝试其他可用卡片。

注意:该功能需账号已启用 Billing Scale 套餐,可直接在 Dashboard 中检查权限并开启。

3. Webhook 触发手动重试逻辑

如果上述官方功能无法满足需求,可监听 invoice.payment_failed Webhook 事件,在事件触发时遍历客户的所有支付方法,手动尝试用其他卡片支付未付账单。

示例伪代码:

def handle_invoice_payment_failed(event):
    invoice = event.data.object
    customer = stripe.Customer.retrieve(invoice.customer)
    
    # 遍历客户所有非失败的卡片支付方式
    for payment_method in customer.payment_methods.data:
        if payment_method.type == 'card' and payment_method.id != invoice.payment_method:
            try:
                stripe.Invoice.pay(
                    invoice.id,
                    payment_method=payment_method.id
                )
                break
            except stripe.error.CardError:
                # 当前卡片扣费失败,继续尝试下一个
                continue

针对无默认卡的处理方案

如果客户未设置默认卡但存储了其他卡片,可通过以下方式优化:

  • 在客户添加卡片的前端流程中,引导用户设置默认卡,或自动将第一张添加的卡片设为默认
  • 通过 API 自动将客户最新添加的卡片标记为默认支付方式
  • 创建订阅时强制指定一个可用的支付方法,而非依赖默认值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 14:35:08