【发布时间】:2022-02-05 15:54:14
【问题描述】:
const combineData = function (prod, pot, data) {
const newData = [...prod, ...pot];
const finalCheckout = [];
for (let i = 0; i < newData.length; i++) {
finalCheckout.push({
name: newData[i].plantName || newData[i].potName,
images: [newData[i].images[0]],
amount: newData[i].price * 100,
currency: "inr",
quantity: data[i].quantity,
metadata: { id: String(newData[i]._id) },// **Mongoose ID**
});
}
return finalCheckout;
};
exports.getCheckOutSession = catchAsync(async (req, res, next) => {
const [product, pot] = filterVal(req.body.product);
const userId = req.user._id;
const products = await ProductModel.find({ _id: { $in: product } });
const pots = await PotModel.find({ _id: { $in: pot } });
const newData = combineData(products, pots, req.body.product);
// 2. create the checkout session
const session = await stripe.checkout.sessions.create({
payment_method_types: ["card"],
success_url: `${req.protocol}://${req.get("host")}/?alert=booking`,
cancel_url: `${req.protocol}://${req.get("host")}/products/`,
customer_email: req.user.email,
client_reference_id: userId,
line_items: newData,
});
res.status(200).json({
status: "success",
url: session.url,
});
});
我正在建立一个电子商务网站,当用户付款时,我想将存储在我的 mongodb 数据库中的产品 ID 作为条带元数据发送。但是我遇到了一个错误,如何解决这个问题。
错误:parameter_unknown - line_items[0][元数据] 收到未知参数:line_items[0][元数据]
Stripe 拒绝 mongodb id 的元数据
“元数据”:{ “id”:“61e40a5a7d83539092e7a92f” }
注意:我在上面的 combineData 函数中发送了所有成功的数据,例如价格、名称、图像数量、数量。
- 我已经在没有元数据键的情况下测试了上面的代码。它工作正常,我的付款已注册,并且 webhook 事件已在条带中注册。
- 当我使用元数据关键字时,上述错误出现在条带中。
【问题讨论】:
-
我在 combineData 函数中传递有关产品的所有数据,如产品名称、数量、价格、图像、数量等。我想发送额外的数据,即元数据中的产品 ID 怎么做?
标签: javascript node.js mongodb backend payment