当我点击结帐按钮,它重定向到用户支付的金额从购物车条纹。付款成功,但成功的网址是不工作,所以用户被重定向到404页,我把我的代码,以防有一个错误的付款。这里是我的代码:
app.get('/success', async (req, res) => {
let { order, session_id } = req.query;
try{
const session = await stripeGateway.checkout.sessions.retrieve(session_id);
const customer = await stripeGateway.customers.retrieve(session.customer);
let date = new Date();
let orders_collection = collection(db, "orders");
let docName = `${customer.email}-order-${date.getTime()}`;
setDoc(doc(orders_collection, docName), JSON.parse(order))
.then(data => {
res.redirect('/checkout?payment=done')
})
} catch{
res.redirect("/404")
}
})
当我尝试使用console.log(order)而不使用try和catch时,它会在我的终端中显示顺序,但使用try语句时,它不会在数据库中显示。
1条答案
按热度按时间izj3ouym1#
如果
.retrieve()
方法或setDoc
函数有问题,则res.redirect("/404")
将触发。请确保session_id
、session.customer
(空值)没有问题,并且创建的docName
存在于Firestore
中。此外,在
try {} catch (e) {}
中记录错误可能会很有用,这样您就可以看到导致404重定向的原因。