firebase 为什么我不能存储我的订单在Firestore后结帐会话

vkc1a9a2  于 2023-02-25  发布在  其他
关注(0)|答案(1)|浏览(111)

当我点击结帐按钮,它重定向到用户支付的金额从购物车条纹。付款成功,但成功的网址是不工作,所以用户被重定向到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语句时,它不会在数据库中显示。

izj3ouym

izj3ouym1#

如果.retrieve()方法或setDoc函数有问题,则res.redirect("/404")将触发。请确保session_idsession.customer(空值)没有问题,并且创建的docName存在于Firestore中。
此外,在try {} catch (e) {}中记录错误可能会很有用,这样您就可以看到导致404重定向的原因。

相关问题