Verify transaction implemented
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
const properties = require('../package.json')
|
const properties = require('../package.json')
|
||||||
|
const transaction = require('../service/transaction');
|
||||||
const transfer = require('../service/transfer');
|
const transfer = require('../service/transfer');
|
||||||
const account = require('../service/account');
|
const account = require('../service/account');
|
||||||
|
|
||||||
@@ -21,13 +22,21 @@ var controllers = {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
getStatus: function(req, res) {
|
getStatus: function(req, res) {
|
||||||
transfer.get(req, res, function(err, dist) {
|
transfer.get(req, res, function(err, dist) {
|
||||||
if (err) {
|
if (err) {
|
||||||
res.send(err);
|
res.send(err);
|
||||||
}
|
}
|
||||||
res.json(dist);
|
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) {
|
verifyAccount: function(req, res) {
|
||||||
account.verify(req, res, function(err, dist) {
|
account.verify(req, res, function(err, dist) {
|
||||||
if (err) {
|
if (err) {
|
||||||
|
|||||||
@@ -9,6 +9,8 @@ module.exports = function(app) {
|
|||||||
.post(controller.postTransfer);
|
.post(controller.postTransfer);
|
||||||
app.route('/status/:id')
|
app.route('/status/:id')
|
||||||
.get(controller.getStatus);
|
.get(controller.getStatus);
|
||||||
|
app.route('/verifyTransaction/:id')
|
||||||
|
.get(controller.verifyTransaction);
|
||||||
app.route('/verify')
|
app.route('/verify')
|
||||||
.post(controller.verifyAccount);
|
.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;
|
||||||
|
|
||||||
Reference in New Issue
Block a user