Verify transaction implemented

This commit is contained in:
2023-08-06 12:57:04 +08:00
parent 8dea39f0d3
commit fcfa13f53f
4 changed files with 98 additions and 6 deletions
+22
View File
@@ -45,3 +45,25 @@ echo '{
---
## Test Create Transfer
```
curl -X POST -H 'Content-Type: application/json' -d '{
"account_bank": "044",
"account_number": "0690000031",
"amount": 1337,
"narration": "This is a test",
"currency": "NGN",
"reference": "202308051237",
"debit_currency": "NGN",
"money_transfer_id": 67
}' http://localhost:3000/create
```
## Test Get Transfer
http://localhost:3000/status/415801
## Test Verify Transaction
http://localhost:3000/verifyTransaction/4499305
+15 -6
View File
@@ -1,6 +1,7 @@
'use strict';
const properties = require('../package.json')
const transaction = require('../service/transaction');
const transfer = require('../service/transfer');
const account = require('../service/account');
@@ -21,13 +22,21 @@ var controllers = {
});
},
getStatus: function(req, res) {
transfer.get(req, res, function(err, dist) {
if (err) {
res.send(err);
}
res.json(dist);
});
transfer.get(req, res, function(err, dist) {
if (err) {
res.send(err);
}
res.json(dist);
});
},
verifyTransaction: function(req, res) {
transaction.verify(req, res, function(err, dist) {
if (err) {
res.send(err);
}
res.json(dist);
});
},
verifyAccount: function(req, res) {
account.verify(req, res, function(err, dist) {
if (err) {
+2
View File
@@ -9,6 +9,8 @@ module.exports = function(app) {
.post(controller.postTransfer);
app.route('/status/:id')
.get(controller.getStatus);
app.route('/verifyTransaction/:id')
.get(controller.verifyTransaction);
app.route('/verify')
.post(controller.verifyAccount);
};
@@ -0,0 +1,59 @@
'use strict';
const axios = require('axios');
const request = require('request');
const db = require('../app/db')
const logger = require('../app/logger');
const flutterwaveConfigBuffer = new Buffer(process.env.FLUTTERWAVE_API, 'base64');
const flutterwaveConfig = JSON.parse(flutterwaveConfigBuffer.toString('ascii'));
var transaction = {
verify: function(req, res, next) {
// https://developer.flutterwave.com/reference/endpoints/transactions/#verify-a-transaction
var url = flutterwaveConfig.BaseApiUrl + '/v3/transactions/' + req.params.id + '/verify';
var headersOpt = {
"Authorization": "Bearer " + flutterwaveConfig.SecretKey,
};
var options = {
headers: headersOpt
};
logger.info(url);
axios.get(url, options)
.then(response => {
//res.json(response);
logger.info('-------------------------------');
logger.info(response.data);
logger.info('-------------------------------');
var json = {
status: response.status,
statusText: response.statusText,
data: response.data
};
res.json(json);
})
.catch(err => {
logger.error(err.message);
//logger.error(err.stack);
logger.error(err.response.data);
//logger.error(err.response.headers);
res.send({
status: "failure",
message: "Invalid response",
details: err.message,
code: err.response.status,
data: err.response.data
});
});
// TODO: Do we save the response in the DB? I assume: YES
db.query('SELECT NOW()', (err, res) => {
if (err) {
throw err;
}
logger.info('time:', res.rows[0])
});
}
};
module.exports = transaction;