63 lines
1.7 KiB
JavaScript
63 lines
1.7 KiB
JavaScript
const express = require('express');
|
|
const rtgsController = require('../controllers/rtgs.controller');
|
|
const { logger } = require('../util/logger');
|
|
const rtgsValidator = require('../validators/rtgs.validator.js');
|
|
const paymentSecretValidator = require('../validators/payment.secret.validator');
|
|
const { checkLimit } = require('../middlewares/limitCheck.middleware');
|
|
const {
|
|
checkBeneficiaryCooldown,
|
|
} = require('../middlewares/cooldown.middleware');
|
|
|
|
const router = express.Router();
|
|
router.use(
|
|
rtgsValidator,
|
|
paymentSecretValidator,
|
|
checkLimit,
|
|
checkBeneficiaryCooldown
|
|
);
|
|
|
|
const rtgsRoute = async (req, res) => {
|
|
const {
|
|
fromAccount,
|
|
toAccount,
|
|
ifscCode,
|
|
amount,
|
|
beneficiaryName,
|
|
remitterName,
|
|
remarks,
|
|
} = req.body;
|
|
const client = req.client;
|
|
|
|
try {
|
|
const result = await rtgsController.send(
|
|
req.user,
|
|
fromAccount,
|
|
toAccount,
|
|
amount,
|
|
ifscCode,
|
|
beneficiaryName,
|
|
remitterName,
|
|
remarks,
|
|
client
|
|
);
|
|
|
|
if (result.status.startsWith('O.K.')) {
|
|
const utr = result.status.slice(9, 25);
|
|
return res.json({ message: 'SUCCESS', utr });
|
|
} else if (result.status.includes('INSUFFICIENT FUNDS')) {
|
|
return res.status(422).json({ error: 'INSUFFICIENT_FUNDS' });
|
|
} else if (result.status.includes('INVALID CHECK DIGIT')) {
|
|
return res.status(400).json({ error: 'INVALID_ACCOUNT_NUMBER' });
|
|
} else {
|
|
return res.status(400).json({ error: 'PROBLEM_TRANSFERRING_FUNDS' });
|
|
}
|
|
} catch (error) {
|
|
logger.error(error, 'error occured while doing NEFT transaction');
|
|
return res.status(500).json({ error: 'INTERNAL_SERVER_ERROR' });
|
|
}
|
|
};
|
|
|
|
router.post('/', rtgsRoute);
|
|
|
|
module.exports = router;
|