如何在 Stripe 结帐会话中访问项目元数据

How to access items metadata in Stripe checkout session

当我创建结帐会话时,我正在使用 price_dataproduct_data 属性即时创建价格。对于每个项目,我将元数据放入 product_data.metadata 属性.

支付成功后,为了向客户展示支付成功页面,我获取session数据。但由于某种原因,项目的元数据是空的。当我在仪表板中检查时,项目的元数据存在,但当我使用 API.

获取时,它们是空的

我试图通过扩展 line_items 属性:

获取整个会话数据
const session = await stripe.checkout.sessions.retrieve(session_id, { expand: ['line_items'] });

我也尝试过直接获取项目:

const line_items = await stripe.checkout.sessions.listLineItems(session_id);

在这两种情况下,每个项目的元数据都是空的。

动态创建项目时,元数据最终出现在 产品 属性 中,而不是 价格 属性.

所以我通过使用产品数据扩展项目解决了这个问题:

const line_items = await stripe.checkout.sessions.listLineItems(session_id, {
  expand: ['data.price.product'],
});

响应中包含元数据 product 属性。