'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;