StripeInvalidRequestError:您不能使用 `line_items.amount`、`line_items.currency`、`line_items.name`、`line_items.description` 或 `line_items

Nih*_*_20 6 javascript stripe-payments next.js

我正在构建 Amazon 克隆,当我尝试将 stripe 与克隆集成时,出现以下错误。有人可以帮帮我吗?我指的是这个视频:https://www.youtube.com/watch ?v=4E0WOUYF-QI&t=4092s

错误片段:

错误 - StripeInvalidRequestError:您不能在此 API 版本中使用line_items.amountline_items.currencyline_items.nameline_items.description或 。line_items.images请使用line_items.priceline_items.price_data。请参阅 https://stripe.com/docs/ payments/ checkout/migration-prices 了解更多信息。

代码片段:

const stripe = require("stripe")(process.env.STRIPE_SECRET_KEY);

export default async (req, res) => {
    const { items, email } = req.body;

    const transformedItems = items.map((item) => ({
        description: item.description,
        quantity: 1,
        price_data: {
            currency: "gbp",
            unit_amount: item.price * 100,
            product_data: {
                name: item.title,
                images: [item.image],
            },
        },
    }));

    const session = await stripe.checkout.sessions.create({
        payment_method_types: ["card"],
        shipping_rates: ["shr_1LkVMHSArY9HEMGlxjejfRWf"],
        shipping_address_collection: {
            allowed_countries: ["GB", "US", "CA"],
        },
        line_items: transformedItems,
        mode: "payment",
        success_url: `${process.env.HOST}/success`,
        cancel_url: `${process.env.HOST}/checkout`,
        metadata: {
            email,
            images: JSON.stringify(items.map((item) => item.image)),
        },
    });

    res.status(200).json({ id: session.id });
};
Run Code Online (Sandbox Code Playgroud)

小智 5

这里的问题出在函数上transformedItems。您初始化 stripe 所用的 API 版本要求产品的描述(即item.description)位于product_data对象内部。

通过简单地将描述移动到所描述的对象内来重写您的函数将很简单:

const transformedItems = items.map((item) => ({
    quantity: 1,
    price_data: {
        currency: "gbp",
        unit_amount: item.price * 100,
        product_data: {
            name: item.title,
            description: item.description, //description here
            images: [item.image],
        },
    },
}));
Run Code Online (Sandbox Code Playgroud)

此信息显示在错误为您提供的文档链接中,但您可能错过了它。