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

Invertase Stripe支付扩展计量定价问题:未设置quantity却收到需移除该字段的错误提示

Invertase Stripe支付扩展计量定价问题:未设置quantity却收到需移除该字段的错误提示

我之前也踩过这个一模一样的坑!你遇到的问题其实是Invertase Stripe扩展的一个隐性默认逻辑在搞鬼——哪怕你代码里半字没提quantity,当你用单个price字段创建订阅型结账会话时,扩展会自动给你往Stripe Checkout Session的line_items里塞一个默认的quantity: 1,而计量(metered)定价的订阅完全不允许存在这个字段,这就直接触发了Stripe的报错。

先看你的代码,你在创建checkout_sessions文档时只传了price、mode这些参数,确实没碰quantity,但架不住扩展好心办坏事自动给你加了。那怎么解决呢?

核心解决方案:用line_items数组替代单个price字段

你需要把原来直接传price的写法,改成显式传入line_items数组,并且在数组的对象里只写price,完全不要加quantity。这样扩展就会严格按照你提供的参数生成Stripe Checkout Session,不会自作主张加多余的字段。

修改后的代码片段如下:

// 1️⃣ Create the Checkout-Session request doc
const sessionRef = await addDoc(collection(db, 'stripe_customers', user.uid, 'checkout_sessions'), {
  // 把单个price字段替换成line_items数组
  line_items: [
    { price: PRICE_ID }
  ],
  mode: 'subscription',
  success_url: window.location.href,
  cancel_url: window.location.href,
  metadata: { storeId: user.uid },
});

额外需要确认的几个点

  • 确保你的价格确实是计量类型:去Stripe Dashboard里检查PRICE_ID对应的价格,确认它的「Usage type」是「Metered」,如果是「Licensed」的话,这个报错逻辑就反过来了,必须传quantity。
  • 更新扩展到最新版本:旧版本的Invertase Stripe扩展可能存在这个自动填充quantity的bug,升级到最新版能避免很多莫名其妙的问题。
  • 别瞎试quantity: null或0:Stripe对计量定价的line item要求是「完全不存在quantity字段」,不管你给的是null还是0,只要这个字段存在就会报错,所以千万不要画蛇添足。

排查小技巧

如果修改后还是有问题,可以去Firebase控制台做两件事:

  • 查看stripe_customers/{uid}/checkout_sessions下新建的文档,看看有没有被扩展偷偷加上quantity字段;
  • 打开扩展的日志页面,查看扩展处理这个结账会话文档时的具体参数,确认有没有把quantity塞到line_items里。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 10:14:29