Member 13347940 Ответов: 0

Express JS conditional routing -как маршрутизировать несколько платежных шлюзов


Здравствуйте, поэтому я внедряю два платежных шлюза, то есть Paypal и Razorpay. Paypal сам по себе работает хорошо, и я хочу включить Razorpay также, когда условие будет выполнено. Но я не уверен, куда поместить код и как классифицировать маршрут по условию. Есть ли способ обойти это? Спасибо

Server.js

app.get('/api/config/paypal',(req,res) => {

     res.send(process.env.PAYPAL_CLIENT_ID)
})

app.get('/api/config/paytm',(req,res) => {

     //What do I put here?
})


orderController.js

const updateOrderToPaid = asyncHandler(async (req,res) => {
    const order = await Order.findById(req.params.id)


    if (order.paymentMethod === 'Paypal') { //Here is the condition
        order.isPaid = true
        order.paidAt = Date.now()
        order.paymentResult = {
            id: req.body.id,
            status: req.body.status,
            update_time: req.body.update_time,
            email_address: req.body.payer.email_address
        }
        const updatedOrder = await order.save()
        res.json(updatedOrder)

    }else if(order.paymentMethod === 'Paytm'){ //Here is the condition
            const options = {
                amount: order.totalPrice,
                currency,
                receipt: Date.now(),
                payment_capture
            }
    
            const razorpay = new Razorpay({
                key_id: 'rzp_test_zsLrxBdRNh3GsJ',
                key_secret: 'qyNk8fVmYi2lqOQC3SR9tjWC'
            })
            const response = await razorpay.orders.create(options)
            order.isPaid = true
            order.paidAt = Date.now()
            order.paymentResult = {
                id: response.id,
                currency: response.currency,
                receipt: response.receipt,
                payment_capture: 1,
                amount:response.amount
            }
            const updatedOrder = await order.save()
            res.json(updatedOrder)
    }else {
        
        res.status(404)
        throw new Error('Order not found')
    }
})


orderRoutes.js

const protect = require('../middleware/auth')
router.route('/:id/pay').put(protect,updateOrderToPaid)


Что я уже пробовал:

Я пробовал много способов, но здесь, в razorpay, мы должны передать объект json, в отличие от paypal, которому нужен только ключ клиента, поэтому я не уверен, где поместить код и как на самом деле реализовать эту условную маршрутизацию.

0 Ответов