Node.js 在条带签出中发送额外参数

Node.js 在条带签出中发送额外参数,node.js,woocommerce,stripe-payments,next.js,Node.js,Woocommerce,Stripe Payments,Next.js,我在购物车上使用Next.js、Node.js和woocommerce,当我结账并发回会话时,我会看到我所有的订单详细信息,但产品ID是stripe生成的,而不是woocommerce产品ID。我需要woocommerce ID,因为通过stripe成功收到付款后,我想将订单保存到woocommerce,没有产品ID我无法执行此操作 我已经查找了是否可以发送带有行项目的自定义参数,但我找不到任何内容,也不知道stripe会话是否会返回该参数 Node.js代码,我想在其中发送Woocomece产

我在购物车上使用Next.js、Node.js和woocommerce,当我结账并发回会话时,我会看到我所有的订单详细信息,但产品ID是stripe生成的,而不是woocommerce产品ID。我需要woocommerce ID,因为通过stripe成功收到付款后,我想将订单保存到woocommerce,没有产品ID我无法执行此操作

我已经查找了是否可以发送带有行项目的自定义参数,但我找不到任何内容,也不知道stripe会话是否会返回该参数

Node.js代码,我想在其中发送Woocomece产品ID,然后在会话中将其发送回我。我可以尝试在这里提交给woocommerce,但如果订单没有通过,我在woocommerce有一个订单实际上没有通过条纹

app.post('/create-checkout-session', async (req, res) => {
  const session = await stripe.checkout.sessions.create({
    payment_method_types: ['card'],
    line_items: [
      {
        price_data: {
          currency: 'usd',
          product_data: {
            name: 'T-shirt',
          },
          unit_amount: 2000,
        },
        quantity: 1,
      },
    ],
    mode: 'payment',
    success_url: 'http://localhost:4242/success.html',
    cancel_url: 'http://localhost:4242/cancel.html',
  });

  res.json({ id: session.id });
});

如果需要按行项目/产品列出,则应将其作为
元数据
包含在
产品数据
()中:

当然,如果会话只需要一个值,您还可以在会话本身或上发送
元数据

更新:检索行项目

要检查此产品级别的
元数据
,您需要检索会话。请注意,
line\u项
是一个可包含属性()-默认情况下不会返回它们。您必须使用指定它们,并且需要使用
产品
对象执行更多操作:

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

谢谢你。我在产品数据中放置元数据的地方做了完全相同的尝试,但是当我检查日志时,我在那里看不到元数据。你说看不到是什么意思?不知道在哪里?您需要检索会话并使用扩展来包括行项目。如果您在会话上设置
元数据
,您将通过webhook事件获得该元数据。我将编辑我的答案以显示检索此内容。
const session = await stripe.checkout.sessions.retrieve(
  'cs_test_123',
  { 
    expand: ['line_items.data.price.product']
  }
);