Stripe创建Checkout会话报错:必须指定product或product_data
解决Stripe Checkout报错:"You must specify either
product or product_data when creating a price" 问题分析
你代码里确实声明了price_data.product_data,但仍触发该报错,大概率是以下几个原因导致:
可能的原因及修复方案
cartItems数据不完整
Stripe要求product_data.name是必填字段,如果前端传递的cartItems中存在item.name为空/undefined的情况,就会触发该错误。
修复:- 先打印
cartItems确认数据有效性:console.log('cartItems:', cartItems); - 后端添加兜底处理,避免空值:
product_data: { name: item.name || '未命名商品', },
- 先打印
重复声明
mode字段
代码里连续写了两次mode: "payment",虽然不直接导致当前报错,但属于冗余代码,建议删除其中一次。Stripe SDK版本兼容问题
旧版SDK可能对price_data的结构校验更严格,升级到最新稳定版即可:npm install stripe@latest
额外验证方案
如果动态创建商品的方式仍有问题,也可以改用已在Stripe后台创建好的商品ID:
price_data: { currency: "inr", product: 'prod_你的商品ID', unit_amount: item.price * 100, },
内容的提问来源于stack exchange,提问作者Krishna Bharadwaj
相关产品推荐
相关产品推荐

