在我的 nodejs 应用程序中使用条带结帐时未显示产品图片
product image not showing up when using stripe checkout in my nodejs application
下面是我的结帐路径的代码。
除一行外一切正常:images: [`${process.env.SERVER_URL}/public${item.itemData.images[0]}`]
我尝试通过控制台记录这条路径并得到正确的路径:“http://localhost:5000/public/image/test_image_2.webp” 因此,我很困惑为什么这不起作用。我很确定图像字段为每个产品采用了一系列图像路径,这就是我给它的,但我仍然看到小的无法找到图像符号而不是我的产品图像。我该怎么办?
const router = require("express").Router();
const Product = require("../models/product-schema");
const { default: Stripe } = require("stripe");
const { getUser, authUser, authAdmin, authAdmin404 } = require("../middleware/authentication");
const stripe = require("stripe")(process.env.STRIPE_PRIVATE_KEY);
router.post("/create-checkout-session", authUser, async (req, res) => {
try {
const unresolved = req.body.items.map(async (item, index, arr) => {
const storeItem = await Product.findById(item.id);
return arr[index] = { itemData: storeItem, quantity: item.quantity };
});
const items = await Promise.all(unresolved);
const session = await stripe.checkout.sessions.create({
payment_method_types: ["card"],
mode: "payment",
line_items: items.map((item) => {
return {
price_data: {
currency: 'eur',
product_data: {
name: item.itemData.product_name,
images: [`${process.env.SERVER_URL}/public${item.itemData.images[0]}`]
},
unit_amount: item.itemData.price_in_cents,
},
quantity: item.quantity,
}
}),
success_url: `${process.env.SERVER_URL}/`,
cancel_url: req.body.url,
});
res.json({ url: session.url });
} catch (err) {
res.status(500).json({ error: err.message });
}
});
module.exports = router;
Stripe 将在您提供的 URL(s) 下载每张图片并在本地缓存它们。当你给出一个基于 localhost 的 URL 时,它无法访问数据,所以它无法缓存它并在以后显示它。
您需要确保您提供的 URL 可公开访问以供他们缓存。您的服务器也可能是 mis-configured(例如错误的 TLS 证书)导致尝试获取图像失败,因此在这种情况下 Stripe 将不会呈现它。
下面是我的结帐路径的代码。
除一行外一切正常:images: [`${process.env.SERVER_URL}/public${item.itemData.images[0]}`]
我尝试通过控制台记录这条路径并得到正确的路径:“http://localhost:5000/public/image/test_image_2.webp” 因此,我很困惑为什么这不起作用。我很确定图像字段为每个产品采用了一系列图像路径,这就是我给它的,但我仍然看到小的无法找到图像符号而不是我的产品图像。我该怎么办?
const router = require("express").Router();
const Product = require("../models/product-schema");
const { default: Stripe } = require("stripe");
const { getUser, authUser, authAdmin, authAdmin404 } = require("../middleware/authentication");
const stripe = require("stripe")(process.env.STRIPE_PRIVATE_KEY);
router.post("/create-checkout-session", authUser, async (req, res) => {
try {
const unresolved = req.body.items.map(async (item, index, arr) => {
const storeItem = await Product.findById(item.id);
return arr[index] = { itemData: storeItem, quantity: item.quantity };
});
const items = await Promise.all(unresolved);
const session = await stripe.checkout.sessions.create({
payment_method_types: ["card"],
mode: "payment",
line_items: items.map((item) => {
return {
price_data: {
currency: 'eur',
product_data: {
name: item.itemData.product_name,
images: [`${process.env.SERVER_URL}/public${item.itemData.images[0]}`]
},
unit_amount: item.itemData.price_in_cents,
},
quantity: item.quantity,
}
}),
success_url: `${process.env.SERVER_URL}/`,
cancel_url: req.body.url,
});
res.json({ url: session.url });
} catch (err) {
res.status(500).json({ error: err.message });
}
});
module.exports = router;
Stripe 将在您提供的 URL(s) 下载每张图片并在本地缓存它们。当你给出一个基于 localhost 的 URL 时,它无法访问数据,所以它无法缓存它并在以后显示它。
您需要确保您提供的 URL 可公开访问以供他们缓存。您的服务器也可能是 mis-configured(例如错误的 TLS 证书)导致尝试获取图像失败,因此在这种情况下 Stripe 将不会呈现它。