Blame view
lib/hit/prepaid.js
2.96 KB
d4661aa84
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
const MODULE_NAME = 'HIT.PREPAID'; const axios = require('axios').default; const urljoin = require('url-join'); const uniqid = require('uniqid'); const config = require('komodo-sdk/config'); const logger = require('komodo-sdk/logger'); const report = require('../report/prepaid'); const translateRc = require('../translate-rc'); const composeCallbackUrl = require('./compose-callback-url'); module.exports = async (task, isAdvice) => { const xid = uniqid(); const params = { request_id: task.trx_id, terminal_name: config.partner.terminal_name, password: config.partner.password, destination: task.destination, product_name: task.remote_product, reverse_url: composeCallbackUrl(xid, false), }; const endpointUrl = isAdvice ? urljoin(config.partner.url, '/trx-status') : urljoin(config.partner.url, '/topup'); try { logger.verbose(`${MODULE_NAME} 4AAD4F99: Going to HIT prepaid endpoint`, { xid, isAdvice, endpointUrl, params, }); const response = await axios.get(endpointUrl, { headers: { 'User-Agent': 'KOMODO-GW-HTTPGETX', }, timeout: config.partner.hit_timeout_ms || 60 * 1000, params, }); if (!response) { const e = new Error(`${MODULE_NAME} 8CF4E04D: Empty response`); e.rc = '68'; e.response = response; throw e; } if (!response.data) { const e = new Error(`${MODULE_NAME} E72B5A53: Empty response data`); e.rc = '68'; e.response = response; throw e; } if (typeof response.data !== 'object') { const e = new Error(`${MODULE_NAME} 507680AB: Response data is not a JSON`); e.rc = '68'; e.response = response; throw e; } logger.verbose(`${MODULE_NAME} E51AFBBA: Got a direct response`, { xid, responseBody: response.data, }); report(xid, { trx_id: task.trx_id, rc: response.data.rc ? translateRc[response.data.rc] || response.data.rc : '68', sn: response.data.sn || null, amount: 0, balance: 0, message: { xid, 'DIRECT-RESPONSE': response.data, 'IS-ADVICE': !!isAdvice, }, }); } catch (e) { const rc = e.rc || '68'; report(xid, { trx_id: task.trx_id, rc, message: { xid, 'KOMODO-GW-ERROR': { eCode: e.code, eMessage: e.message, responseHttpStatus: e.response && e.response.status, responseBody: e.response && e.response.data, }, 'IS-ADVICE': !!isAdvice, }, }); } }; |