#node.js #reactjs #express #paypal #razorpay
#node.js #reactjs #экспресс #paypal #razorpay
Вопрос:
Всем привет, поэтому я внедряю два платежных шлюзов, то есть 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)
Ответ №1:
Почему вы не используете поставщика в качестве параметра в своем маршруте
app.get('/api/config/:provider',(req,res) => {
const { provider } = req.params
if(provider === 'paypal'){
// do something related to paypal
}
if(provider === 'Paytm'){
// do something related to Paytm
}
})
Комментарии:
1. Спасибо за ответ. Да, но я хочу сохранить условия в методе updateOrderToPaid, потому что он передается в файл orderRoutes в одиночку. В server.js Я просто хочу отправить ответ в формате json. Для PayPal это было легко, потому что вам нужно отправить только идентификатор клиента, но здесь, с razorpay, вам нужно отправить весь ответ, и я действительно запутался в трех вышеупомянутых файлах