node.js - Stripe 从 session 对象中获取 product_id/price_id

标签 node.js stripe-payments backend payment

我目前正在使用 Stripe Webhooks 在用户为产品付款时收到通知。这工作正常。从付款意图我可以得到视讯客户 目的。但我没有找到获得 的方法product_id price_id 用户支付的费用。

有人知道如何获得 product_id price_id ?

最佳答案

谢谢你的提问。正如您注意到的那样, session 数据包含在 checkout.session.completed 中。事件不包括 line_items其中价格 ID 与结账 session 相关联。
line_items是可扩展的属性之一,因此要检索价格 ID,您需要检索结帐 session 并使用 expand在响应中包含行项目。没有办法配置您的 webhook 以让发送给您的数据包含此数据。

有两种方法可以将客户的购买与结帐 session 相关联。首先,您可以将 Checkout Session 的 ID 与购物车或客户购买的商品列表一起存储在您的数据库中。这样,如果结帐 session 成功,您可以通过 ID 查找购物车并知道购买了哪些商品。

或者,您可以收听 checkout.session.completed webhook 事件,然后当您收到成功结帐的新通知时,retrieve the Sessionexpand然后使用相关的价格数据。

使用如下所示的 stripe-node:

const session = await stripe.checkout.sessions.retrieve(
  'cs_test_xxx', {
    expand: ['line_items'],
  },
);
// note there may be more than one line item, but this is how you access the price ID.
console.log(session.line_items.data[0].price.id);
// the product ID is accessible on the Price object.
console.log(session.line_items.data[0].price.product);

更进一步,如果您想要的不仅仅是产品的 ID,您还可以通过传递 line_items.data.price.product 来扩展它。这将包括行项目的相关价格和这些价格的完整产品对象。

关于node.js - Stripe 从 session 对象中获取 product_id/price_id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62248490/

相关文章:

javascript - 不要使用 Stripe 收集邮政编码

node.js - 无法在 nodeJS 中导入 cloudinary,出现 "navigator undefined"错误

java - Google App Engine 后端 servlet 没有响应

javascript - Node.JS Socket.IO 将数据包发送到特定的连接 ID

javascript - Node 长轮询的正确方法

javascript - 从 MongoDB 子文档中的父级检索值

javascript - 苹果网络后端技术

javascript - react-waypoint onEnter/onLeave 没有给出值

javascript - 在 Stripe 自定义结帐流程后提交表格

c# - 未找到 Stripe Webhook Controller