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

如何将Stripe Checkout Session自定义字段纳入生成的发票?

解决方案

方法1:把自定义字段同步到Checkout Session的metadata,再配置发票模板显示

这是最省心的方案,不用改结账流程,只需要调整Session创建逻辑和后台发票模板:

  • 第一步:创建Checkout Session时同步自定义字段到metadata
    如果你的自定义字段是客户在进入Checkout页面前就填好的,或者你能在前端拿到Checkout页面里客户输入的字段值,调用Stripe API创建Session时,把这些值塞进metadata参数里就行:

    // Node.js后端创建Checkout Session示例
    const session = await stripe.checkout.sessions.create({
      payment_method_types: ['card'],
      line_items: [/* 你的商品列表 */],
      mode: 'payment',
      success_url: 'https://yourdomain.com/success',
      cancel_url: 'https://yourdomain.com/cancel',
      // 把自定义字段同步到metadata
      metadata: {
        customer_note: req.body.customerNote, // 客户填的备注
        order_ref: req.body.orderRef // 自定义订单号
      }
    });
    

    要是你用的是Stripe Checkout原生的custom_fields(就是Checkout页面里自带的输入框),那最好让客户先在你的页面填好这些字段,再跳转去Stripe Checkout,这样就能提前把值传到后端,塞进Session的metadata里。

  • 第二步:在Stripe后台配置发票模板显示metadata字段
    登录Stripe后台,按这个路径操作:

    1. 设置 → 发票设置 → 发票模板
    2. 选择你正在使用的模板,点击编辑
    3. 找到自定义字段区域,点击添加自定义字段
    4. 填写字段显示名称(比如“客户备注”),然后选择对应的metadata键(比如customer_note)
    5. 保存设置

    之后客户完成结账生成的发票,就会自动显示这些自定义字段和对应的值了。

方法2:用invoice_creation参数预设发票自定义字段(适合固定字段)

如果你的自定义字段是固定值(比如内部订单编号),可以直接在创建Checkout Session时指定发票的自定义字段:

const session = await stripe.checkout.sessions.create({
  // 其他必要参数...
  invoice_creation: {
    enabled: true,
    invoice_data: {
      custom_fields: [
        {
          name: '内部订单号',
          value: 'ORD-2024-0001'
        }
      ]
    }
  }
});

这种方式适合不需要客户输入的固定字段,填好后会直接显示在发票上,不用额外配置模板。

注意事项

  • 要是你非得用Stripe Checkout内置的custom_fields(客户在Checkout页面填写),而且没法提前收集值,那可以试试在checkout.session.completed webhook里调用Stripe API更新发票的metadata,但要注意:只有草稿状态的发票才能修改。如果是一次性支付的Checkout,付款完成后发票会自动定稿,这时候就改不了了。所以这种情况还是建议让客户先在你的页面填好自定义字段,再跳转去Stripe Checkout。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 17:53:14