在14天免费试用期内添加信用卡后,支付状态显示为未完成

后端开发 2026-07-11
const session = await stripe().checkout.sessions.create({
  mode: "subscription",
  payment_method_collection: "if_required",
  subscription_data: {
      trial_period_days: 14,
  }
  payment_method_options: {
     card: { request_three_d_secure: "automatic" },
  },

  // other part of code

});

我创建了一个Stripe Checkout会话,包含一个 14天免费试用,并且 最初不收集卡信息。注册后,用户可以在这14天试用期内的任意时间添加卡片信息。

一切工作正常,但当用户添加卡信息时,Stripe仪表板中的 支付状态显示“Incomplete”,并显示消息 “3D Secure attempt incomplete”

我的预期是在卡片添加后,试用结束(第15天)时,系统会自动扣费。

为什么在添加卡片后,支付仍显示为 Incomplete,以及如何在试用期结束后确保正确扣费?

dashboard image

解决方案

在你的Checkout Session配置中有两个互相矛盾的信号:

  1. payment_method_collection: "if_required" + trial_period_days: 14 → 由于存在免费试用且没有立即收费,Stripe在结账时判断支付方式为“非必需”。用户在未输入卡信息的情况下完成注册。这是按预期工作的。
  2. request_three_d_secure: "automatic" → 当用户稍后在试用期内添加卡时,Stripe会尝试进行3D Secure验证,作为SetupIntent的一部分,以验证卡以备将来使用。然而,由于此时没有实际扣费(用户仍然在试用期),3DS流程会产生一个待处理的身份验证,可能无法完全完成。

因此建议将 request_three_d_securepayment_method_options 中移除。既然在卡片添加时并不扣费,你也无需在试用期设置阶段强制进行3DS。实际扣费发生在第15天时,Stripe将自动处理3DS。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章