NextJS集成Stripe Checkout时recurring price在payment模式下报错如何解决
Stripe Checkout模式与价格类型不匹配问题解决方案
核心报错原因
You specified
paymentmode but passed a recurring price. Either switch tosubscriptionmode or use only one-time prices.
报错本质是Stripe Checkout的mode参数配置,和line_items中传入的price类型不对应:
mode: 'payment'仅支持一次性消费的价格mode: 'subscription'仅支持周期性订阅的价格
代码问题点
你当前代码中price: 1是错误写法,Stripe的价格ID不是数字自增ID,是你在Stripe后台创建产品/价格时生成的字符串格式ID,格式通常为price_xxxxxx。你传入的数字1大概率匹配到了Stripe账户里的某个订阅类价格,导致和payment模式冲突。
解决步骤
- 第一步:登录Stripe后台,进入「产品」管理页,确认你要售卖的商品类型:
- 如果是一次性售卖的商品,创建对应一次性价格,复制它的price ID
- 如果是周期性订阅的商品,创建对应订阅价格,复制它的price ID
- 第二步:根据你的业务场景修改代码参数:
场景1:售卖一次性商品
替换代码中price: 1为你复制的一次性价格ID,保持mode: 'payment'不变,代码片段参考:
场景2:售卖订阅类商品line_items: [ { // 替换为你的一次性价格ID,格式为price_xxxxxx price: 'price_xxxxxxxxx', quantity: 1, }, ], mode: 'payment',
替换代码中price: 1为你复制的订阅价格ID,同时把mode修改为subscription,代码片段参考:line_items: [ { // 替换为你的订阅价格ID,格式为price_xxxxxx price: 'price_xxxxxxxxx', quantity: 1, }, ], mode: 'subscription', - 第三步:重新部署接口测试即可解决报错。
内容的提问来源于stack exchange,提问作者Katherine Pacheco
相关产品推荐
相关产品推荐

