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

Node.js中如何在Stripe Checkout Session中传入自定义描述等参数

问题原因

你当前的配置写法本身没有语法错误,字段为空的核心原因是:
payment_intent_data 下配置的所有字段,都会同步到该Checkout Session关联的Payment Intent对象中,不会直接挂载在Checkout Session对象的根属性上。如果你查询时直接读Checkout Session的description字段,必然返回空,需要先获取Session关联的Payment Intent ID,再查询对应Payment Intent对象才能拿到你设置的描述。

如果你需要自定义信息直接保存在Checkout Session对象里,或者需要关联到单个商品,应该用Stripe专门提供的metadata字段存储自定义内容。


对应解决方案

1. 需将描述存储到Payment Intent中

保持你现有的payment_intent_data.description配置,取值时展开关联的Payment Intent对象即可:

// 查询Checkout Session时添加expand参数
const session = await stripe.checkout.sessions.retrieve('你的Session ID', {
  expand: ['payment_intent']
});
// 即可获取到你设置的描述字段
const payDescription = session.payment_intent.description;

2. 需将自定义信息直接存储在Checkout Session中

在stripe.checkout.sessions.create的参数根节点添加metadata字段,所有自定义内容都可以放到这里,直接查询Session就能拿到:

const session = await stripe.checkout.sessions.create({
  // 原有其他配置保持不变
  payment_method_types: ['card'],
  customer_email: customer.email,
  // 新增Session级自定义元数据,可自定义任意键值对
  metadata: {
    custom_description: '你要的自定义描述',
    customer_name: customer.name,
    page: customer.page
  },
  line_items: [/* 原有商品配置不变 */],
  success_url: successurl,
  cancel_url: failedurl,
})
// 取值时直接读取session.metadata即可

3. 需设置商品级自定义描述/信息

如果要给单个商品设置显示在结账页的描述,或者商品维度的自定义信息,修改line_items配置即可:

line_items: [
  {
    price_data: {
      currency: 'cad',
      product_data: {
        name: customer.page,
        description: '自定义商品描述,会直接展示给结账用户' // 结账页可见
      },
      unit_amount: customer.price,
    },
    quantity: customer.quantity,
    // 商品级隐藏元数据,仅后台存储可见
    metadata: {
      product_tag: '自定义商品标签',
      other_info: '其他自定义内容'
    }
  }
]

注意:当前你用GET接口接收前端传的price、quantity等交易核心参数,存在严重安全风险,用户可直接修改请求参数篡改支付金额。建议改为POST接口,所有商品价格、库存信息从后端数据库查询,仅允许前端传商品ID、用户身份等非敏感参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 20:45:04