NodeJS Stripe“缺少必需的参数:line_items[0][currency].”节点js

lx0bsm1f  于 2023-06-22  发布在  Node.js
关注(0)|答案(2)|浏览(159)

我在node js后端创建订阅。它一直工作得很好,但今天我得到了这个错误。我没有对代码做任何更改-它只是开始返回此错误。后台代码:

app.post('/api/subscription', async (req, res) => {
  const { priceId } = req.body;
  
  try {
    const session = await stripe.checkout.sessions.create({
      mode: "subscription",
      payment_method_types: ["card"],
      line_items: [
        {
          price: priceId,
          // For metered billing, do not pass quantity
          quantity: 1,
        },
      ],
      // {CHECKOUT_SESSION_ID} is a string literal; do not change it!
      // the actual Session ID is returned in the query parameter when your customer
      // is redirected to the success page.

      success_url: 'https://someurl',
      cancel_url: 'https://someurl',
    });

    res.send({
      sessionId: session.id,
    });
  } catch (e) {
    console.log(e)
    res.status(400);
    return res.send({
      error: {
        message: e.message,
      }
    });
  }
})

从我的委托人那里

fetch("http://localhost:8000/api/subscription", {
      method: "POST",
      body: JSON.stringify({ priceId }),
    });

我已经采取了这个代码从官方条纹的例子在这里https://stripe.com/docs/billing/subscriptions/checkout和正如我所说,它的工作正常,现在我已经测试了两个不同的条纹帐户,并得到相同的错误。它看起来像是在条带上发生了更改,但在其文档中没有发生更改

f45qwnt8

f45qwnt81#

如果priceIdundefined/null,则不会在请求中发送。如果Price不存在,API会假设您正在尝试指定有关行项目的信息而不使用Price,并且它执行的第一个检查之一是有效的currency(您没有),这将导致Missing required param: line_items[0][currency].错误。
要解决这个问题,您需要找出为什么priceId没有按预期填充,并且您可能还需要添加一个检查,以确保priceId在继续Checkout Session创建步骤之前有效。

zlhcx6iw

zlhcx6iw2#

如果其他人正在挣扎-在添加文档时,请确保使用“价格:XXX“而非”priceId:XXX”,如某些教程中所示。它给了我丢失的货币错误。

相关问题