implemented neft transaction feature
This commit is contained in:
37
src/controllers/neft.controller.js
Normal file
37
src/controllers/neft.controller.js
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
const axios = require('axios');
|
||||||
|
const { logger } = require('../util/logger');
|
||||||
|
|
||||||
|
async function send(
|
||||||
|
fromAccount,
|
||||||
|
toAccount,
|
||||||
|
amount,
|
||||||
|
ifscCode,
|
||||||
|
beneficiaryName,
|
||||||
|
remitterName
|
||||||
|
) {
|
||||||
|
try {
|
||||||
|
const response = await axios.post(
|
||||||
|
'http://localhost:8690/kccb/Neftfundtransfer',
|
||||||
|
{
|
||||||
|
stFromAcc: fromAccount,
|
||||||
|
stToAcc: toAccount,
|
||||||
|
stTranAmt: amount,
|
||||||
|
stCommission: 0,
|
||||||
|
stIfscCode: ifscCode,
|
||||||
|
stFullName: remitterName,
|
||||||
|
stBeneName: beneficiaryName,
|
||||||
|
stAddress1: '',
|
||||||
|
stAddress2: '',
|
||||||
|
stAddress3: '',
|
||||||
|
}
|
||||||
|
);
|
||||||
|
return response.data;
|
||||||
|
} catch (error) {
|
||||||
|
logger.error(error);
|
||||||
|
throw new Error(
|
||||||
|
'API call failed: ' + (error.response?.data?.message || error.message)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = { send };
|
@@ -5,6 +5,7 @@ const transactionRoute = require('./transactions.route');
|
|||||||
const authenticate = require('../middlewares/auth.middleware');
|
const authenticate = require('../middlewares/auth.middleware');
|
||||||
const transferRoute = require('./transfer.route');
|
const transferRoute = require('./transfer.route');
|
||||||
const beneficiaryRoute = require('./beneficiary.route');
|
const beneficiaryRoute = require('./beneficiary.route');
|
||||||
|
const neftRoute = require('./neft.route.js');
|
||||||
const { npciResponse } = require('../controllers/npci.controller');
|
const { npciResponse } = require('../controllers/npci.controller');
|
||||||
|
|
||||||
const router = express.Router();
|
const router = express.Router();
|
||||||
@@ -13,6 +14,7 @@ router.use('/auth', authRoute);
|
|||||||
router.use('/customer', authenticate, detailsRoute);
|
router.use('/customer', authenticate, detailsRoute);
|
||||||
router.use('/transactions/account/:accountNo', authenticate, transactionRoute);
|
router.use('/transactions/account/:accountNo', authenticate, transactionRoute);
|
||||||
router.use('/payment/transfer', authenticate, transferRoute);
|
router.use('/payment/transfer', authenticate, transferRoute);
|
||||||
|
router.use('/payment/neft', authenticate, neftRoute);
|
||||||
router.use('/beneficiary', authenticate, beneficiaryRoute);
|
router.use('/beneficiary', authenticate, beneficiaryRoute);
|
||||||
router.use('/npci/beneficiary-response', npciResponse);
|
router.use('/npci/beneficiary-response', npciResponse);
|
||||||
|
|
||||||
|
49
src/routes/neft.route.js
Normal file
49
src/routes/neft.route.js
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
const express = require('express');
|
||||||
|
const neftController = require('../controllers/neft.controller');
|
||||||
|
const { logger } = require('../util/logger');
|
||||||
|
const neftValidator = require('../validators/neft.validator.js');
|
||||||
|
const paymentSecretValidator = require('../validators/payment.secret.validator');
|
||||||
|
|
||||||
|
const router = express.Router();
|
||||||
|
router.use(neftValidator, paymentSecretValidator);
|
||||||
|
|
||||||
|
const neftRoute = async (req, res) => {
|
||||||
|
const {
|
||||||
|
fromAccount,
|
||||||
|
toAccount,
|
||||||
|
ifscCode,
|
||||||
|
amount,
|
||||||
|
beneficiaryName,
|
||||||
|
remitterName,
|
||||||
|
} = req.body;
|
||||||
|
|
||||||
|
try {
|
||||||
|
const result = await neftController.send(
|
||||||
|
fromAccount,
|
||||||
|
toAccount,
|
||||||
|
amount,
|
||||||
|
ifscCode,
|
||||||
|
beneficiaryName,
|
||||||
|
remitterName
|
||||||
|
);
|
||||||
|
logger.info(result);
|
||||||
|
|
||||||
|
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.include('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('/', neftRoute);
|
||||||
|
|
||||||
|
module.exports = router;
|
Reference in New Issue
Block a user