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

Stripe webhook返回line_item的price ID与后台不一致、无法获取nickname问题咨询

问题原因

你遇到的Price ID不一致、nickname为空的核心原因是:你在创建Stripe Checkout Session时使用了price_data动态生成临时价格,而非直接传入后台提前创建好的固定Price ID。
Stripe会为每个price_data生成一次性的 ad-hoc 临时Price对象:

  • 该Price仅关联当前Checkout Session,每次生成的ID都不固定
  • 临时Price默认active为false,不会继承你后台提前创建的Price的nickname、metadata等配置
  • 关联的Product也是自动生成的临时对象,和你后台创建的原始Product没有关联
解决方法

推荐优先使用第一种方案,兼容性最高:

  • 方案1:创建Checkout Session时直接传入后台已创建的固定Price ID
    修改你生成Checkout Session的代码,line_items配置中去掉price_data参数,替换为price: '你后台对应尺寸的Price ID'(比如示例里的price_1JxC8kFE4oPSz5YOc391IZ9I)。无需修改现有Webhook逻辑,后续在邮件模板中直接取值即可:
    <% @order.line_items.data.each do |line| %>
      <p>商品名称:<%= line.description %></p>
      <p>商品尺寸:<%= line.price.nickname %></p>
      <p>购买数量:<%= line.quantity %></p>
    <% end %>
    
  • 方案2:如果业务必须使用动态价格无法提前创建固定Price
    在创建Checkout Session的price_data或line_item的metadata中主动写入尺寸信息,示例配置:
    line_items: [
      {
        price_data: {
          currency: 'eur',
          product_data: {name: 'Soleil Levant'},
          unit_amount: 4000,
          metadata: {size: 'S'} # 主动写入尺寸
        },
        quantity: 1
      }
    ]
    
    后续在邮件模板中从metadata取值即可:
    <p>商品尺寸:<%= line.price.metadata['size'] %></p>
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 21:15:01