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

如何在Stripe结账会话UI中展示元数据?

解决Stripe结账会话UI展示元数据的问题

Stripe Checkout的metadata字段仅用于后台存储,不会自动渲染在托管的结账页面UI上。要在UI中展示元数据内容,你需要将元数据整合到Stripe允许展示的字段中,最直接的方式是利用产品的description字段。

具体实现步骤

  1. 将元数据数组格式化为用户易读的字符串(比如列表形式)
  2. 把格式化后的内容追加到产品的description字段中,同时保留原metadata字段用于后台存储

修改后的代码示例

// 根据你的元数据数组结构,格式化为易读的展示文本
// 假设data是类似 [{name: "端点1", url: "xxx"}, {name: "端点2", url: "xxx"}] 的数组
const metadataDisplay = data.map((item, index) => `${index + 1}. ${item.name}: ${item.url}`).join('\n');

const sessionData = {
  payment_method_types: ["card"],
  shipping_address_collection: {
    allowed_countries: ["US", "CA", "KE"],
  },
  line_items: [
    {
      price_data: {
        currency: "USD",
        product_data: {
          name: title,
          // 合并原有描述和元数据展示内容
          description: `${description}\n\n详细信息:\n${metadataDisplay}`,
          metadata: {
            endpoints: JSON.stringify(data), // 保留后台存储的原始元数据
          },
        },
        unit_amount: totalPrice.toFixed(0) * 100,
      },
      quantity: 1,
    },
  ],
  mode: "payment",
  customer: customer.id,
  success_url: `${getBaseClientUrl}/stripe/success`,
  cancel_url: `${getBaseClientUrl}/stripe/cancel`,
};

const session = await createCheckoutSession(sessionData);

注意事项

  • Stripe对description字段有字符长度限制(一般不超过3000字符),如果元数据内容过多,需要适当精简或调整展示形式
  • 如果你需要更复杂的UI展示,可能需要放弃Stripe托管的Checkout,改用自定义结账页面(集成Stripe Elements),但这样需要自行处理UI和支付流程

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 01:57:31