Commit 56a753a4a7422629ca585f66903200e822e43a62
1 parent
3e11e40a82
Exists in
master
Fix require axios
Showing 3 changed files with 3 additions and 6 deletions Inline Diff
lib/hit/postpaid.js
1 | const MODULE_NAME = 'HIT.POSTPAID'; | 1 | const MODULE_NAME = 'HIT.POSTPAID'; |
2 | 2 | ||
3 | // const axios = require('axios').default; | 3 | const axios = require('axios'); |
4 | const axios = require('axios/dist/node/axios.cjs'); | ||
5 | const urljoin = require('url-join'); | 4 | const urljoin = require('url-join'); |
6 | const uniqid = require('uniqid'); | 5 | const uniqid = require('uniqid'); |
7 | 6 | ||
8 | const config = require('komodo-sdk/config'); | 7 | const config = require('komodo-sdk/config'); |
9 | const logger = require('tektrans-logger'); | 8 | const logger = require('tektrans-logger'); |
10 | 9 | ||
11 | const translateRc = require('../translate-rc'); | 10 | const translateRc = require('../translate-rc'); |
12 | const composeCallbackUrl = require('./compose-callback-url'); | 11 | const composeCallbackUrl = require('./compose-callback-url'); |
13 | const dumpReqRes = require('./dump-req-res'); | 12 | const dumpReqRes = require('./dump-req-res'); |
14 | const report = require('../report/postpaid'); | 13 | const report = require('../report/postpaid'); |
15 | const axiosErrorIsSafe = require('./axios-error-is-safe'); | 14 | const axiosErrorIsSafe = require('./axios-error-is-safe'); |
16 | 15 | ||
17 | module.exports = async (task, isPay) => { | 16 | module.exports = async (task, isPay) => { |
18 | const xid = uniqid(); | 17 | const xid = uniqid(); |
19 | const hitType = isPay ? 'PAY' : 'INQUIRY'; | 18 | const hitType = isPay ? 'PAY' : 'INQUIRY'; |
20 | 19 | ||
21 | logger.verbose(`${MODULE_NAME} 0EDCEB4F: Processing task`, { | 20 | logger.verbose(`${MODULE_NAME} 0EDCEB4F: Processing task`, { |
22 | xid, | 21 | xid, |
23 | hitType, | 22 | hitType, |
24 | task, | 23 | task, |
25 | }); | 24 | }); |
26 | 25 | ||
27 | const params = { | 26 | const params = { |
28 | request_id: task.trx_id, | 27 | request_id: task.trx_id, |
29 | terminal_name: config.partner.terminal_name, | 28 | terminal_name: config.partner.terminal_name, |
30 | password: config.partner.password, | 29 | password: config.partner.password, |
31 | destination: task.destination, | 30 | destination: task.destination, |
32 | product_name: task.remote_product, | 31 | product_name: task.remote_product, |
33 | reverse_url: composeCallbackUrl(xid, task, true), | 32 | reverse_url: composeCallbackUrl(xid, task, true), |
34 | }; | 33 | }; |
35 | 34 | ||
36 | const endpointUrl = urljoin( | 35 | const endpointUrl = urljoin( |
37 | config.partner.url, | 36 | config.partner.url, |
38 | isPay ? 'pay' : 'inquiry', | 37 | isPay ? 'pay' : 'inquiry', |
39 | ); | 38 | ); |
40 | 39 | ||
41 | let lastResponse = null; | 40 | let lastResponse = null; |
42 | 41 | ||
43 | try { | 42 | try { |
44 | logger.verbose(`${MODULE_NAME} EFCF6C2A: Going to HIT POSTPAID endpoint`, { | 43 | logger.verbose(`${MODULE_NAME} EFCF6C2A: Going to HIT POSTPAID endpoint`, { |
45 | xid, | 44 | xid, |
46 | endpointUrl, | 45 | endpointUrl, |
47 | params, | 46 | params, |
48 | }); | 47 | }); |
49 | 48 | ||
50 | const response = await axios.get(endpointUrl, { | 49 | const response = await axios.get(endpointUrl, { |
51 | headers: { | 50 | headers: { |
52 | 'User-Agent': 'KOMODO-GW-HTTPGETX', | 51 | 'User-Agent': 'KOMODO-GW-HTTPGETX', |
53 | }, | 52 | }, |
54 | timeout: config.partner.hit_timeout_ms || 30 * 1000, | 53 | timeout: config.partner.hit_timeout_ms || 30 * 1000, |
55 | params, | 54 | params, |
56 | }); | 55 | }); |
57 | 56 | ||
58 | if (!response) { | 57 | if (!response) { |
59 | const e = new Error(`${MODULE_NAME} 364AB160: Empty response`); | 58 | const e = new Error(`${MODULE_NAME} 364AB160: Empty response`); |
60 | e.rc = isPay ? '68' : '90'; | 59 | e.rc = isPay ? '68' : '90'; |
61 | e.response = response; | 60 | e.response = response; |
62 | throw e; | 61 | throw e; |
63 | } | 62 | } |
64 | 63 | ||
65 | if (!response.data) { | 64 | if (!response.data) { |
66 | const e = new Error(`${MODULE_NAME} E64BCD17: Empty response data`); | 65 | const e = new Error(`${MODULE_NAME} E64BCD17: Empty response data`); |
67 | e.rc = isPay ? '68' : '90'; | 66 | e.rc = isPay ? '68' : '90'; |
68 | e.response = response; | 67 | e.response = response; |
69 | throw e; | 68 | throw e; |
70 | } | 69 | } |
71 | 70 | ||
72 | if (typeof response.data !== 'object') { | 71 | if (typeof response.data !== 'object') { |
73 | const e = new Error(`${MODULE_NAME} E64BCD17: Response data is not a JSON`); | 72 | const e = new Error(`${MODULE_NAME} E64BCD17: Response data is not a JSON`); |
74 | e.rc = isPay ? '68' : '90'; | 73 | e.rc = isPay ? '68' : '90'; |
75 | e.response = response; | 74 | e.response = response; |
76 | throw e; | 75 | throw e; |
77 | } | 76 | } |
78 | 77 | ||
79 | lastResponse = response; | 78 | lastResponse = response; |
80 | 79 | ||
81 | logger.verbose(`${MODULE_NAME} 924E4510: Got a direct response`, { | 80 | logger.verbose(`${MODULE_NAME} 924E4510: Got a direct response`, { |
82 | xid, | 81 | xid, |
83 | responseBody: response.data, | 82 | responseBody: response.data, |
84 | }); | 83 | }); |
85 | 84 | ||
86 | report(xid, { | 85 | report(xid, { |
87 | command: response.data.command || hitType, | 86 | command: response.data.command || hitType, |
88 | trx_id: task.trx_id, | 87 | trx_id: task.trx_id, |
89 | rc: response.data.rc ? translateRc[response.data.rc] || response.data.rc | 88 | rc: response.data.rc ? translateRc[response.data.rc] || response.data.rc |
90 | : '68', | 89 | : '68', |
91 | sn: response.data.sn || null, | 90 | sn: response.data.sn || null, |
92 | amount: Number(response.data.amount) || undefined, | 91 | amount: Number(response.data.amount) || undefined, |
93 | amount_to_charge: Number(response.data.amount_to_charge) || undefined, | 92 | amount_to_charge: Number(response.data.amount_to_charge) || undefined, |
94 | balance: Number(response.data.ending_balance) | 93 | balance: Number(response.data.ending_balance) |
95 | || Number(response.data.balance) | 94 | || Number(response.data.balance) |
96 | || undefined, | 95 | || undefined, |
97 | base_bill_amount: (response.data.base_bill_amount) || undefined, | 96 | base_bill_amount: (response.data.base_bill_amount) || undefined, |
98 | bill_count: Number(response.data.bill_count) || undefined, | 97 | bill_count: Number(response.data.bill_count) || undefined, |
99 | message: { | 98 | message: { |
100 | xid, | 99 | xid, |
101 | 'DIRECT-RESPONSE': response.data, | 100 | 'DIRECT-RESPONSE': response.data, |
102 | }, | 101 | }, |
103 | info: response.data.info || undefined, | 102 | info: response.data.info || undefined, |
104 | detail: response.data.detail || undefined, | 103 | detail: response.data.detail || undefined, |
105 | data: response.data.data || undefined, | 104 | data: response.data.data || undefined, |
106 | struk: response.data.struk || undefined, | 105 | struk: response.data.struk || undefined, |
107 | }); | 106 | }); |
108 | } catch (e) { | 107 | } catch (e) { |
109 | const rc = e.rc | 108 | const rc = e.rc |
110 | || (axiosErrorIsSafe(e) && '91') | 109 | || (axiosErrorIsSafe(e) && '91') |
111 | || (!isPay && '91') | 110 | || (!isPay && '91') |
112 | || '68'; | 111 | || '68'; |
113 | 112 | ||
114 | logger.warn(`${MODULE_NAME} 57764852: Exception`, { | 113 | logger.warn(`${MODULE_NAME} 57764852: Exception`, { |
115 | xid, | 114 | xid, |
116 | eCode: e.code, | 115 | eCode: e.code, |
117 | eMessage: e.message, | 116 | eMessage: e.message, |
118 | eRc: e.rc, | 117 | eRc: e.rc, |
119 | rc, | 118 | rc, |
120 | responseHttpStatus: e.response && e.response.status, | 119 | responseHttpStatus: e.response && e.response.status, |
121 | responseBody: e.response && e.response.data, | 120 | responseBody: e.response && e.response.data, |
122 | }); | 121 | }); |
123 | 122 | ||
124 | lastResponse = e.response; | 123 | lastResponse = e.response; |
125 | 124 | ||
126 | report(xid, { | 125 | report(xid, { |
127 | command: hitType, | 126 | command: hitType, |
128 | trx_id: task.trx_id, | 127 | trx_id: task.trx_id, |
129 | rc, | 128 | rc, |
130 | message: { | 129 | message: { |
131 | xid, | 130 | xid, |
132 | 'KOMODO-GW-ERROR': { | 131 | 'KOMODO-GW-ERROR': { |
133 | eCode: e.code, | 132 | eCode: e.code, |
134 | eMessage: e.message, | 133 | eMessage: e.message, |
135 | responseHttpStatus: e.response && e.response.status, | 134 | responseHttpStatus: e.response && e.response.status, |
136 | responseBody: e.response && e.response.data, | 135 | responseBody: e.response && e.response.data, |
137 | }, | 136 | }, |
138 | }, | 137 | }, |
139 | }); | 138 | }); |
140 | } finally { | 139 | } finally { |
141 | dumpReqRes( | 140 | dumpReqRes( |
142 | xid, | 141 | xid, |
143 | task, | 142 | task, |
144 | 'GET', | 143 | 'GET', |
145 | endpointUrl, | 144 | endpointUrl, |
146 | params, | 145 | params, |
147 | lastResponse && lastResponse.data, | 146 | lastResponse && lastResponse.data, |
148 | lastResponse && lastResponse.status, | 147 | lastResponse && lastResponse.status, |
149 | lastResponse, | 148 | lastResponse, |
150 | false, | 149 | false, |
151 | ); | 150 | ); |
152 | } | 151 | } |
153 | }; | 152 | }; |
154 | 153 |
lib/hit/prepaid-advice.js
1 | const MODULE_NAME = 'HIT.PREPAID-ADVICE'; | 1 | const MODULE_NAME = 'HIT.PREPAID-ADVICE'; |
2 | 2 | ||
3 | // const axios = require('axios').default; | 3 | const axios = require('axios'); |
4 | const axios = require('axios/dist/node/axios.cjs'); | ||
5 | const urljoin = require('url-join'); | 4 | const urljoin = require('url-join'); |
6 | 5 | ||
7 | const config = require('komodo-sdk/config'); | 6 | const config = require('komodo-sdk/config'); |
8 | const logger = require('tektrans-logger'); | 7 | const logger = require('tektrans-logger'); |
9 | 8 | ||
10 | const report = require('../report/prepaid'); | 9 | const report = require('../report/prepaid'); |
11 | const translateRc = require('../translate-rc'); | 10 | const translateRc = require('../translate-rc'); |
12 | const dumpReqRes = require('./dump-req-res'); | 11 | const dumpReqRes = require('./dump-req-res'); |
13 | 12 | ||
14 | module.exports = async (xid, task) => { | 13 | module.exports = async (xid, task) => { |
15 | logger.verbose(`${MODULE_NAME} 90350EF7: Processing task`, { | 14 | logger.verbose(`${MODULE_NAME} 90350EF7: Processing task`, { |
16 | xid, | 15 | xid, |
17 | task, | 16 | task, |
18 | }); | 17 | }); |
19 | 18 | ||
20 | const params = { | 19 | const params = { |
21 | request_id: task.trx_id, | 20 | request_id: task.trx_id, |
22 | terminal_name: config.partner.terminal_name, | 21 | terminal_name: config.partner.terminal_name, |
23 | password: config.partner.password, | 22 | password: config.partner.password, |
24 | }; | 23 | }; |
25 | 24 | ||
26 | const endpointUrl = urljoin(config.partner.url, '/trx-status'); | 25 | const endpointUrl = urljoin(config.partner.url, '/trx-status'); |
27 | let lastResponse = null; | 26 | let lastResponse = null; |
28 | 27 | ||
29 | try { | 28 | try { |
30 | logger.verbose(`${MODULE_NAME} 453A48DC: Going to HIT ADVICE endpoint`, { | 29 | logger.verbose(`${MODULE_NAME} 453A48DC: Going to HIT ADVICE endpoint`, { |
31 | xid, | 30 | xid, |
32 | endpointUrl, | 31 | endpointUrl, |
33 | params, | 32 | params, |
34 | }); | 33 | }); |
35 | 34 | ||
36 | const response = await axios.get(endpointUrl, { | 35 | const response = await axios.get(endpointUrl, { |
37 | headers: { | 36 | headers: { |
38 | 'User-Agent': 'KOMODO-GW-HTTPGETX', | 37 | 'User-Agent': 'KOMODO-GW-HTTPGETX', |
39 | }, | 38 | }, |
40 | timeout: config.partner.hit_timeout_ms || 10 * 1000, | 39 | timeout: config.partner.hit_timeout_ms || 10 * 1000, |
41 | params, | 40 | params, |
42 | }); | 41 | }); |
43 | 42 | ||
44 | if (!response) { | 43 | if (!response) { |
45 | const e = new Error(`${MODULE_NAME} FD20A1AF: Empty response`); | 44 | const e = new Error(`${MODULE_NAME} FD20A1AF: Empty response`); |
46 | e.rc = '68'; | 45 | e.rc = '68'; |
47 | e.response = response; | 46 | e.response = response; |
48 | throw e; | 47 | throw e; |
49 | } | 48 | } |
50 | 49 | ||
51 | if (!response.data) { | 50 | if (!response.data) { |
52 | const e = new Error(`${MODULE_NAME} 17FF8971: Empty response data`); | 51 | const e = new Error(`${MODULE_NAME} 17FF8971: Empty response data`); |
53 | e.rc = '68'; | 52 | e.rc = '68'; |
54 | e.response = response; | 53 | e.response = response; |
55 | throw e; | 54 | throw e; |
56 | } | 55 | } |
57 | 56 | ||
58 | if (typeof response.data !== 'object') { | 57 | if (typeof response.data !== 'object') { |
59 | const e = new Error(`${MODULE_NAME} A6761E9F: Response data is not a JSON`); | 58 | const e = new Error(`${MODULE_NAME} A6761E9F: Response data is not a JSON`); |
60 | e.rc = '68'; | 59 | e.rc = '68'; |
61 | e.response = response; | 60 | e.response = response; |
62 | throw e; | 61 | throw e; |
63 | } | 62 | } |
64 | 63 | ||
65 | lastResponse = response; | 64 | lastResponse = response; |
66 | 65 | ||
67 | logger.verbose(`${MODULE_NAME} 3B5C70C4: Got a direct response`, { | 66 | logger.verbose(`${MODULE_NAME} 3B5C70C4: Got a direct response`, { |
68 | xid, | 67 | xid, |
69 | responseBody: response.data, | 68 | responseBody: response.data, |
70 | }); | 69 | }); |
71 | 70 | ||
72 | if (!response.data.trx_found || !response.data.trx) { | 71 | if (!response.data.trx_found || !response.data.trx) { |
73 | report(xid, { | 72 | report(xid, { |
74 | trx_id: task.trx_id, | 73 | trx_id: task.trx_id, |
75 | rc: '40', | 74 | rc: '40', |
76 | message: { | 75 | message: { |
77 | xid, | 76 | xid, |
78 | 'ADVICE-DIRECT-RESPONSE': response.data, | 77 | 'ADVICE-DIRECT-RESPONSE': response.data, |
79 | }, | 78 | }, |
80 | }); | 79 | }); |
81 | 80 | ||
82 | return; | 81 | return; |
83 | } | 82 | } |
84 | 83 | ||
85 | report(xid, { | 84 | report(xid, { |
86 | trx_id: task.trx_id, | 85 | trx_id: task.trx_id, |
87 | rc: response.data.trx.rc ? translateRc[response.data.trx.rc] || response.data.trx.rc | 86 | rc: response.data.trx.rc ? translateRc[response.data.trx.rc] || response.data.trx.rc |
88 | : '68', | 87 | : '68', |
89 | sn: response.data.trx.sn || null, | 88 | sn: response.data.trx.sn || null, |
90 | amount: Number(response.data.trx.amount) || undefined, | 89 | amount: Number(response.data.trx.amount) || undefined, |
91 | balance: Number(response.data.trx.ending_balance) || undefined, | 90 | balance: Number(response.data.trx.ending_balance) || undefined, |
92 | message: { | 91 | message: { |
93 | xid, | 92 | xid, |
94 | 'ADVICE-DIRECT-RESPONSE': response.data, | 93 | 'ADVICE-DIRECT-RESPONSE': response.data, |
95 | }, | 94 | }, |
96 | }); | 95 | }); |
97 | } catch (e) { | 96 | } catch (e) { |
98 | const rc = e.rc || '68'; | 97 | const rc = e.rc || '68'; |
99 | 98 | ||
100 | logger.warn(`${MODULE_NAME} 1427175A: Exception`, { | 99 | logger.warn(`${MODULE_NAME} 1427175A: Exception`, { |
101 | xid, | 100 | xid, |
102 | eCode: e.code, | 101 | eCode: e.code, |
103 | eMessage: e.message, | 102 | eMessage: e.message, |
104 | eRc: e.rc, | 103 | eRc: e.rc, |
105 | rc, | 104 | rc, |
106 | responseHttpStatus: e.response && e.response.status, | 105 | responseHttpStatus: e.response && e.response.status, |
107 | responseBody: e.response && e.response.data, | 106 | responseBody: e.response && e.response.data, |
108 | }); | 107 | }); |
109 | 108 | ||
110 | lastResponse = e.response; | 109 | lastResponse = e.response; |
111 | 110 | ||
112 | report(xid, { | 111 | report(xid, { |
113 | trx_id: task.trx_id, | 112 | trx_id: task.trx_id, |
114 | rc, | 113 | rc, |
115 | message: { | 114 | message: { |
116 | xid, | 115 | xid, |
117 | 'KOMODO-GW-ADVICE-ERROR': { | 116 | 'KOMODO-GW-ADVICE-ERROR': { |
118 | eCode: e.code, | 117 | eCode: e.code, |
119 | eMessage: e.message, | 118 | eMessage: e.message, |
120 | responseHttpStatus: e.response && e.response.status, | 119 | responseHttpStatus: e.response && e.response.status, |
121 | responseBody: e.response && e.response.data, | 120 | responseBody: e.response && e.response.data, |
122 | }, | 121 | }, |
123 | }, | 122 | }, |
124 | }); | 123 | }); |
125 | } finally { | 124 | } finally { |
126 | dumpReqRes( | 125 | dumpReqRes( |
127 | xid, | 126 | xid, |
128 | task, | 127 | task, |
129 | 'GET', | 128 | 'GET', |
130 | endpointUrl, | 129 | endpointUrl, |
131 | params, | 130 | params, |
132 | lastResponse && lastResponse.data, | 131 | lastResponse && lastResponse.data, |
133 | lastResponse && lastResponse.status, | 132 | lastResponse && lastResponse.status, |
134 | lastResponse, | 133 | lastResponse, |
135 | true, | 134 | true, |
136 | ); | 135 | ); |
137 | } | 136 | } |
138 | }; | 137 | }; |
139 | 138 |
lib/hit/prepaid-topup.js
1 | const MODULE_NAME = 'HIT.PREPAID-TOPUP'; | 1 | const MODULE_NAME = 'HIT.PREPAID-TOPUP'; |
2 | 2 | ||
3 | // const axios = require('axios').default; | 3 | const axios = require('axios'); |
4 | const axios = require('axios/dist/node/axios.cjs'); | ||
5 | const urljoin = require('url-join'); | 4 | const urljoin = require('url-join'); |
6 | 5 | ||
7 | const config = require('komodo-sdk/config'); | 6 | const config = require('komodo-sdk/config'); |
8 | const logger = require('tektrans-logger'); | 7 | const logger = require('tektrans-logger'); |
9 | 8 | ||
10 | const report = require('../report/prepaid'); | 9 | const report = require('../report/prepaid'); |
11 | const translateRc = require('../translate-rc'); | 10 | const translateRc = require('../translate-rc'); |
12 | const composeCallbackUrl = require('./compose-callback-url'); | 11 | const composeCallbackUrl = require('./compose-callback-url'); |
13 | const dumpReqRes = require('./dump-req-res'); | 12 | const dumpReqRes = require('./dump-req-res'); |
14 | const axiosErrorIsSafe = require('./axios-error-is-safe'); | 13 | const axiosErrorIsSafe = require('./axios-error-is-safe'); |
15 | 14 | ||
16 | module.exports = async (xid, task) => { | 15 | module.exports = async (xid, task) => { |
17 | logger.verbose(`${MODULE_NAME} 2272F01F: Processing task`, { | 16 | logger.verbose(`${MODULE_NAME} 2272F01F: Processing task`, { |
18 | xid, | 17 | xid, |
19 | task, | 18 | task, |
20 | }); | 19 | }); |
21 | 20 | ||
22 | const params = { | 21 | const params = { |
23 | request_id: task.trx_id, | 22 | request_id: task.trx_id, |
24 | terminal_name: config.partner.terminal_name, | 23 | terminal_name: config.partner.terminal_name, |
25 | password: config.partner.password, | 24 | password: config.partner.password, |
26 | destination: task.destination, | 25 | destination: task.destination, |
27 | product_name: task.remote_product, | 26 | product_name: task.remote_product, |
28 | reverse_url: composeCallbackUrl(xid, task, false), | 27 | reverse_url: composeCallbackUrl(xid, task, false), |
29 | }; | 28 | }; |
30 | 29 | ||
31 | const endpointUrl = urljoin(config.partner.url, '/topup'); | 30 | const endpointUrl = urljoin(config.partner.url, '/topup'); |
32 | let lastResponse = null; | 31 | let lastResponse = null; |
33 | 32 | ||
34 | try { | 33 | try { |
35 | logger.verbose(`${MODULE_NAME} 4AAD4F99: Going to HIT prepaid endpoint`, { | 34 | logger.verbose(`${MODULE_NAME} 4AAD4F99: Going to HIT prepaid endpoint`, { |
36 | xid, | 35 | xid, |
37 | endpointUrl, | 36 | endpointUrl, |
38 | params, | 37 | params, |
39 | }); | 38 | }); |
40 | 39 | ||
41 | const response = await axios.get(endpointUrl, { | 40 | const response = await axios.get(endpointUrl, { |
42 | headers: { | 41 | headers: { |
43 | 'User-Agent': 'KOMODO-GW-HTTPGETX', | 42 | 'User-Agent': 'KOMODO-GW-HTTPGETX', |
44 | }, | 43 | }, |
45 | timeout: config.partner.hit_timeout_ms || 60 * 1000, | 44 | timeout: config.partner.hit_timeout_ms || 60 * 1000, |
46 | params, | 45 | params, |
47 | }); | 46 | }); |
48 | 47 | ||
49 | if (!response) { | 48 | if (!response) { |
50 | const e = new Error(`${MODULE_NAME} 8CF4E04D: Empty response`); | 49 | const e = new Error(`${MODULE_NAME} 8CF4E04D: Empty response`); |
51 | e.rc = '68'; | 50 | e.rc = '68'; |
52 | e.response = response; | 51 | e.response = response; |
53 | throw e; | 52 | throw e; |
54 | } | 53 | } |
55 | 54 | ||
56 | if (!response.data) { | 55 | if (!response.data) { |
57 | const e = new Error(`${MODULE_NAME} E72B5A53: Empty response data`); | 56 | const e = new Error(`${MODULE_NAME} E72B5A53: Empty response data`); |
58 | e.rc = '68'; | 57 | e.rc = '68'; |
59 | e.response = response; | 58 | e.response = response; |
60 | throw e; | 59 | throw e; |
61 | } | 60 | } |
62 | 61 | ||
63 | if (typeof response.data !== 'object') { | 62 | if (typeof response.data !== 'object') { |
64 | const e = new Error(`${MODULE_NAME} 507680AB: Response data is not a JSON`); | 63 | const e = new Error(`${MODULE_NAME} 507680AB: Response data is not a JSON`); |
65 | e.rc = '68'; | 64 | e.rc = '68'; |
66 | e.response = response; | 65 | e.response = response; |
67 | throw e; | 66 | throw e; |
68 | } | 67 | } |
69 | 68 | ||
70 | lastResponse = response; | 69 | lastResponse = response; |
71 | 70 | ||
72 | logger.verbose(`${MODULE_NAME} E51AFBBA: Got a direct response`, { | 71 | logger.verbose(`${MODULE_NAME} E51AFBBA: Got a direct response`, { |
73 | xid, | 72 | xid, |
74 | responseBody: response.data, | 73 | responseBody: response.data, |
75 | }); | 74 | }); |
76 | 75 | ||
77 | report(xid, { | 76 | report(xid, { |
78 | trx_id: task.trx_id, | 77 | trx_id: task.trx_id, |
79 | rc: response.data.rc ? translateRc[response.data.rc] || response.data.rc | 78 | rc: response.data.rc ? translateRc[response.data.rc] || response.data.rc |
80 | : '68', | 79 | : '68', |
81 | sn: response.data.sn || null, | 80 | sn: response.data.sn || null, |
82 | amount: Number(response.data.amount) || undefined, | 81 | amount: Number(response.data.amount) || undefined, |
83 | balance: Number(response.data.ending_balance) || undefined, | 82 | balance: Number(response.data.ending_balance) || undefined, |
84 | message: { | 83 | message: { |
85 | xid, | 84 | xid, |
86 | 'DIRECT-RESPONSE': response.data, | 85 | 'DIRECT-RESPONSE': response.data, |
87 | }, | 86 | }, |
88 | }); | 87 | }); |
89 | } catch (e) { | 88 | } catch (e) { |
90 | const rc = e.rc | 89 | const rc = e.rc |
91 | || (axiosErrorIsSafe(e) && '91') | 90 | || (axiosErrorIsSafe(e) && '91') |
92 | || '68'; | 91 | || '68'; |
93 | 92 | ||
94 | logger.warn(`${MODULE_NAME} 8E8E49F5: Exception`, { | 93 | logger.warn(`${MODULE_NAME} 8E8E49F5: Exception`, { |
95 | xid, | 94 | xid, |
96 | eCode: e.code, | 95 | eCode: e.code, |
97 | eMessage: e.message, | 96 | eMessage: e.message, |
98 | eRc: e.rc, | 97 | eRc: e.rc, |
99 | rc, | 98 | rc, |
100 | responseHttpStatus: e.response && e.response.status, | 99 | responseHttpStatus: e.response && e.response.status, |
101 | responseBody: e.response && e.response.data, | 100 | responseBody: e.response && e.response.data, |
102 | }); | 101 | }); |
103 | 102 | ||
104 | lastResponse = e.response; | 103 | lastResponse = e.response; |
105 | 104 | ||
106 | report(xid, { | 105 | report(xid, { |
107 | trx_id: task.trx_id, | 106 | trx_id: task.trx_id, |
108 | rc, | 107 | rc, |
109 | message: { | 108 | message: { |
110 | xid, | 109 | xid, |
111 | 'KOMODO-GW-ERROR': { | 110 | 'KOMODO-GW-ERROR': { |
112 | eCode: e.code, | 111 | eCode: e.code, |
113 | eMessage: e.message, | 112 | eMessage: e.message, |
114 | responseHttpStatus: e.response && e.response.status, | 113 | responseHttpStatus: e.response && e.response.status, |
115 | responseBody: e.response && e.response.data, | 114 | responseBody: e.response && e.response.data, |
116 | }, | 115 | }, |
117 | }, | 116 | }, |
118 | }); | 117 | }); |
119 | } finally { | 118 | } finally { |
120 | dumpReqRes( | 119 | dumpReqRes( |
121 | xid, | 120 | xid, |
122 | task, | 121 | task, |
123 | 'GET', | 122 | 'GET', |
124 | endpointUrl, | 123 | endpointUrl, |
125 | params, | 124 | params, |
126 | lastResponse && lastResponse.data, | 125 | lastResponse && lastResponse.data, |
127 | lastResponse && lastResponse.status, | 126 | lastResponse && lastResponse.status, |
128 | lastResponse, | 127 | lastResponse, |
129 | false, | 128 | false, |
130 | ); | 129 | ); |
131 | } | 130 | } |
132 | }; | 131 | }; |
133 | 132 |