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

如何创建带试用期的Stripe订阅及支付方式确认报错解决

正确实现带7天试用期Stripe订阅的操作步骤

1 报错原因说明

  • 第一个报错:后端直接调用stripe.SetupIntent.confirm时没有关联支付方式,SetupIntent必须绑定支付方式才能完成确认
  • 第二个报错:confirmCardSetup是旧版Card Element的专用确认方法,你使用的是Payment Element,需要调用对应的confirmSetup方法

2 客户端提交阶段正确代码

把你之前的confirmCardSetup逻辑替换为以下代码:

const {setupIntent, error} = await this.stripe.confirmSetup({
  elements: this.elements,
  confirmParams: {
    // 不需要跳转可设置为null,需要跳转填你的回调页面地址
    return_url: null,
  },
  redirect: 'if_required'
});

if (error) {
  // 处理支付方式验证错误,如卡过期、余额不足等场景
  console.error(error.message);
  return;
}

// 确认成功后,拿到SetupIntent ID和绑定的payment_method ID,传给后端创建订阅
const setupIntentId = setupIntent.id;
const paymentMethodId = setupIntent.payment_method;
// 调用你的后端接口,传递上述两个参数+用户选择的订阅产品对应ID即可

3 后端创建带7天试用期的订阅

拿到客户端传递的参数后,无需再次确认SetupIntent,直接调用Stripe订阅创建接口,新增trial_period_days参数即可:

subscription = stripe.Subscription.create(
  customer=当前用户的Stripe客户ID,
  items=[
    {
      "price": "你的订阅价格ID", # 对应Stripe后台配置的产品价格ID
    },
  ],
  default_payment_method=paymentMethodId, # 客户端传过来的已验证支付方式ID
  trial_period_days=7, # 此处设置7天试用期
  payment_behavior='default_incomplete', # 可选参数,避免试用期前存在其他收费项时报错
  expand=['latest_invoice.payment_intent'],
)

你原本无试用期订阅流程的其他参数可以正常保留,仅新增trial_period_days=7即可自动启用试用期,7天后Stripe会自动发起扣款,无需额外逻辑处理。

注意事项

  • 试用期内用户取消订阅不会产生任何费用,Stripe默认会发送试用期即将结束的通知,你也可以通过webhook监听customer.subscription.trial_will_end事件实现自定义提醒
  • 确保你创建SetupIntent时的usage参数保持为off_session,这样试用期结束后Stripe可以自动发起扣款,不需要用户再次操作验证支付方式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 04:06:03