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, которому нужен только ключ клиента, поэтому я не уверен, где поместить код и как на самом деле реализовать эту условную маршрутизацию.