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

Django集成Stripe Checkout报错No such price: '2.00'问题求助

报错解决方法

核心原因

你遇到的No such price: '2.00'报错是因为Stripe Checkout接口参数规则使用错误:line_items下的price字段要求传入Stripe平台预先创建的Price对象ID(格式通常为price_xxx),而不是直接传入你数据库存储的商品价格数值。

解决方案

你可以从以下两种实现方式里选符合你业务需求的:

方案1:使用动态价格(无需提前在Stripe后台维护商品价格)

直接修改views.py中stripe.checkout.Session.create里的line_items配置,把price字段替换为price_data配置项,同时把价格转换为Stripe要求的最小货币单位(比如美元、人民币都用分作为单位),示例修改后的代码如下:

line_items=[
    {
        'price_data': {
            'currency': 'usd', # 可替换为你实际使用的货币代码,比如人民币填cny
            'product_data': {
                'name': item.title, # 商品名称
                # 可选传入商品描述、图片等
                'description': item.description,
            },
            'unit_amount': int(item.price * 100), # 价格转成分单位,转整数
        },
        'quantity': 1,
    },
],

方案2:使用Stripe后台预创建的价格(适合固定价格商品)

如果你的商品价格是固定的,更推荐用这种方式,方便后续在Stripe后台统一管理价格:

  1. 首先修改你的models.py的Item模型,新增存储Stripe价格ID的字段,执行数据库迁移:
class Item(Visits, models.Model):
    # 原有字段保留
    stripe_price_id = models.CharField(max_length=100, blank=True, null=True) # 新增字段
  1. 登录Stripe后台,创建对应商品和定价,复制生成的Price ID(格式为price_xxxxxx),填入对应Item的stripe_price_id字段。
  2. 修改views.py中的对应配置:
line_items=[
    {
        'price': item.stripe_price_id, # 直接传入Stripe的价格ID即可
        'quantity': 1,
    },
],

注意事项

  • Stripe所有价格相关参数均以最小货币单位计数,不要直接传入元/美元为单位的数值,否则会出现价格异常。
  • 测试阶段请使用Stripe官方提供的测试卡完成支付流程,不要使用真实银行卡。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 06:27:03