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

Stripe订阅续订卡在“Incomplete”状态,无法自动续订及扣款问题求助

Stripe订阅续订卡在“Incomplete”状态,无法自动续订及扣款问题求助

我在自己的应用里用Stripe处理订阅业务,首次创建订阅完全没问题,但自动续订的时候遇到了麻烦——每月该续订的时候,订阅状态会变成**"incomplete"**,而且不会自动扣款,导致订阅没法正常续订,用户的订阅就卡在这个状态了。

以下是我目前用到的相关代码片段:

const createProduct = async (productName) => {
    const PRODUCT_TYPE = 'service'

    const product = await stripe.products.create({
        name: productName,
        type: PRODUCT_TYPE,
    });
    return product?.id
}

const createCustomer = async (email) => {
    const customer = await stripe.customers.create({
        email: email,
    })
    return customer.id
}

const createPrice = async (productId, amount, duration) => {
    const CURRENCY = "usd"
    const price = await stripe.prices.create({
        product: productId,
        unit_amount: Number(amount) * 100, // Stripe使用最小货币单位,这里补全常见逻辑
        currency: CURRENCY,
        recurring: {
            interval: duration, // 比如传入"month"表示月付
        },
    });
    return price.id
}

可能的原因和解决方向

作为踩过类似坑的开发者,给你几个实用的排查点:

  • 付款方式失效是头号元凶:用户当初订阅用的信用卡是不是过期了、余额不足,或者发卡行出于安全拦截了自动扣款?Stripe在续订付款失败时,会把订阅标记为incomplete,这时候必须让用户重新验证或更新付款方式才能恢复。
  • 检查Webhook事件监听:你有没有正确配置并处理customer.subscription.updated、payment_intent.payment_failed这类事件?如果没监听这些,你根本没法及时知道付款失败的情况,更没法引导用户去修复。
  • 订阅创建时的payment_behavior设置:如果创建订阅时用了payment_behavior: 'default_incomplete',那后续续订付款失败就会直接变成incomplete状态,不会自动重试。建议改成payment_behavior: 'default',让Stripe按照默认规则自动重试几次扣款(通常是3天内尝试3次)。
  • 去Stripe后台查日志:直接登录Stripe Dashboard,找到对应的订阅记录和相关付款事件,里面会有详细的失败原因(比如insufficient_funds、card_expired),这是最直接的排查方式。

代码优化建议

创建订阅的时候,明确配置付款相关参数可以减少这类问题:

const createSubscription = async (customerId, priceId, paymentMethodId) => {
  const subscription = await stripe.subscriptions.create({
    customer: customerId,
    items: [{ price: priceId }],
    default_payment_method: paymentMethodId, // 指定默认付款方式
    payment_behavior: 'default', // 启用自动重试付款
    payment_settings: {
      save_default_payment_method: 'on_subscription', // 保存付款方式用于后续续订
    },
    expand: ['latest_invoice.payment_intent'],
  });
  return subscription;
};

另外,记得在收到付款失败的Webhook事件时,及时给用户发通知(比如邮件),提醒他们更新付款方式,这样能降低订阅流失率。

备注:内容来源于stack exchange,提问作者muhammad areeb

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 13:08:07