Blame view
lib/hit/prepaid.js
3.46 KB
d4661aa84
|
1 2 3 4 5 6 7 8 9 10 11 12 |
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'); |
385d8ff59
|
13 |
const dumpReqRes = require('./dump-req-res'); |
d4661aa84
|
14 15 16 |
module.exports = async (task, isAdvice) => { const xid = uniqid(); |
385d8ff59
|
17 18 19 20 21 |
logger.verbose(`${MODULE_NAME} 2272F01F: Processing task`, { xid, isAdvice, task, }); |
d4661aa84
|
22 23 24 25 26 27 28 29 30 31 32 33 |
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'); |
385d8ff59
|
34 |
let lastResponse = null; |
d4661aa84
|
35 36 37 |
try { logger.verbose(`${MODULE_NAME} 4AAD4F99: Going to HIT prepaid endpoint`, { xid, |
d4661aa84
|
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 |
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; } |
385d8ff59
|
70 |
lastResponse = response; |
d4661aa84
|
71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
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'; |
385d8ff59
|
91 |
lastResponse = e.response; |
d4661aa84
|
92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
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, }, }); |
385d8ff59
|
106 107 108 109 110 111 112 113 114 115 116 |
} finally { dumpReqRes( xid, task, 'GET', endpointUrl, params, lastResponse && lastResponse.data, lastResponse && lastResponse.status, lastResponse, ); |
d4661aa84
|
117 118 |
} }; |