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

Nen*_*vic 6 javascript node.js express stripe-payments

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

付款成功完成后,我获取会话数据以便向客户显示付款成功页面。但由于某种原因,项目的元数据为空。当我在仪表板中检查项目时,项目的元数据存在,但当我使用 API 获取它时,它们是空的。

我尝试使用扩展属性获取整个会话数据line_items

const session = await stripe.checkout.sessions.retrieve(session_id, { expand: ['line_items'] });
Run Code Online (Sandbox Code Playgroud)

我还尝试直接获取项目:

const line_items = await stripe.checkout.sessions.listLineItems(session_id);
Run Code Online (Sandbox Code Playgroud)

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

Nen*_*vic 10

动态创建项目时,元数据最终位于产品属性中,而不是价格属性中。

因此,我通过使用产品数据扩展项目解决了问题:

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

响应具有product属性内的元数据。

  • 你拯救了我的理智,经过近一周的尝试,我不知道为什么你的帖子在我做了所有搜索后从未出现,我碰巧在滚动一段时间后找到了它 (2认同)
  • 我很高兴它对你有帮助。:D (2认同)