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