Commit d4f4ee969dff35aedcdd1ba20eb1fc6e938a5744
1 parent
3e2f22c912
Exists in
master
tangani proxy error
Showing 1 changed file with 5 additions and 0 deletions Inline Diff
httppulsakita.js
1 | var url = require('url'); | 1 | var url = require('url'); |
2 | var math = require('mathjs'); | 2 | var math = require('mathjs'); |
3 | var request = require('request'); | 3 | var request = require('request'); |
4 | var xml = require("xml2js").parseString; | 4 | var xml = require("xml2js").parseString; |
5 | 5 | ||
6 | var config; | 6 | var config; |
7 | var callbackReport; | 7 | var callbackReport; |
8 | 8 | ||
9 | var max_retry = 3; | 9 | var max_retry = 3; |
10 | var sleep_before_retry = 3000; | 10 | var sleep_before_retry = 3000; |
11 | 11 | ||
12 | process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'; | 12 | process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'; |
13 | 13 | ||
14 | function topupRequest(task, retry) { | 14 | function topupRequest(task, retry) { |
15 | if (config.globals.requests_count == undefined) { | 15 | if (config.globals.requests_count == undefined) { |
16 | config.globals.requests_count = 1; | 16 | config.globals.requests_count = 1; |
17 | } else { | 17 | } else { |
18 | config.globals.requests_count++; | 18 | config.globals.requests_count++; |
19 | } | 19 | } |
20 | 20 | ||
21 | if (config.globals.active_requests_count == undefined) { | 21 | if (config.globals.active_requests_count == undefined) { |
22 | config.globals.active_requests_count = 1; | 22 | config.globals.active_requests_count = 1; |
23 | } else { | 23 | } else { |
24 | config.globals.active_requests_count++; | 24 | config.globals.active_requests_count++; |
25 | } | 25 | } |
26 | 26 | ||
27 | if (config.globals.max_active_requests_count == undefined) { | 27 | if (config.globals.max_active_requests_count == undefined) { |
28 | config.globals.max_active_requests_count = config.globals.active_requests_count; | 28 | config.globals.max_active_requests_count = config.globals.active_requests_count; |
29 | } else { | 29 | } else { |
30 | config.globals.max_active_requests_count = math.max(config.globals.max_active_requests_count, config.globals.active_requests_count); | 30 | config.globals.max_active_requests_count = math.max(config.globals.max_active_requests_count, config.globals.active_requests_count); |
31 | } | 31 | } |
32 | 32 | ||
33 | 33 | ||
34 | if (retry === undefined) { | 34 | if (retry === undefined) { |
35 | retry = max_retry; | 35 | retry = max_retry; |
36 | } | 36 | } |
37 | 37 | ||
38 | var params = { | 38 | var params = { |
39 | userid: config.h2h_out.userid, | 39 | userid: config.h2h_out.userid, |
40 | pwd: config.h2h_out.password, | 40 | pwd: config.h2h_out.password, |
41 | memberreff: task['requestId'], | 41 | memberreff: task['requestId'], |
42 | produk: task['remoteProduct'], | 42 | produk: task['remoteProduct'], |
43 | tujuan: task['destination'] | 43 | tujuan: task['destination'] |
44 | }; | 44 | }; |
45 | console.log('PARAMS:'); | 45 | console.log('PARAMS:'); |
46 | console.log(params); | 46 | console.log(params); |
47 | 47 | ||
48 | request.post({url: config.h2h_out.partner, form: params}, function(err, httpResponse, httpResponseBody) { | 48 | request.post({url: config.h2h_out.partner, form: params}, function(err, httpResponse, httpResponseBody) { |
49 | 49 | ||
50 | if (err) { | 50 | if (err) { |
51 | console.log('HTTP Request Error (' + task['requestId'] + '): '); | 51 | console.log('HTTP Request Error (' + task['requestId'] + '): '); |
52 | console.log(error); | 52 | console.log(error); |
53 | 53 | ||
54 | if (retry) { | 54 | if (retry) { |
55 | 55 | ||
56 | console.log('Retrying trx hit (' + retry + ')'); | 56 | console.log('Retrying trx hit (' + retry + ')'); |
57 | setTimeout(function() { | 57 | setTimeout(function() { |
58 | topupRequest(task, retry - 1); | 58 | topupRequest(task, retry - 1); |
59 | }, sleep_before_retry); | 59 | }, sleep_before_retry); |
60 | 60 | ||
61 | } else { | 61 | } else { |
62 | callbackReport(task['requestId'], '54', 'Gangguan koneksi ke suplier'); | 62 | callbackReport(task['requestId'], '54', 'Gangguan koneksi ke suplier'); |
63 | } | 63 | } |
64 | return; | 64 | return; |
65 | } | 65 | } |
66 | 66 | ||
67 | console.log('Server Response: '); | 67 | console.log('Server Response: '); |
68 | console.log(httpResponseBody); | 68 | console.log(httpResponseBody); |
69 | 69 | ||
70 | if (httpResponseBody.indexOf('502 Proxy Error') >= 0) { | ||
71 | callbackReport(task['requestId'], '54', '502 Proxy error'); | ||
72 | return; | ||
73 | } | ||
74 | |||
70 | xml(httpResponseBody, function(err, result) { | 75 | xml(httpResponseBody, function(err, result) { |
71 | if (err) { | 76 | if (err) { |
72 | console.log('Gagal parsing XML respon server'); | 77 | console.log('Gagal parsing XML respon server'); |
73 | topupRequest(task, retry - 1); | 78 | topupRequest(task, retry - 1); |
74 | return; | 79 | return; |
75 | } | 80 | } |
76 | 81 | ||
77 | console.log('Response Data:'); | 82 | console.log('Response Data:'); |
78 | console.log(result); | 83 | console.log(result); |
79 | 84 | ||
80 | var response_code = result.respon.rc[0].replace(/^00/, ''); | 85 | var response_code = result.respon.rc[0].replace(/^00/, ''); |
81 | 86 | ||
82 | var token = ''; | 87 | var token = ''; |
83 | if (result.respon.token) { | 88 | if (result.respon.token) { |
84 | token = result.respon.token[0]; | 89 | token = result.respon.token[0]; |
85 | } | 90 | } |
86 | 91 | ||
87 | var data_pelanggan = ''; | 92 | var data_pelanggan = ''; |
88 | if (result.respon.data) { | 93 | if (result.respon.data) { |
89 | data_pelanggan = result.respon.data[0].replace(/ /g, '-'); | 94 | data_pelanggan = result.respon.data[0].replace(/ /g, '-'); |
90 | } | 95 | } |
91 | 96 | ||
92 | var message = result.respon.pesan[0].replace(/\n/g, ' '); | 97 | var message = result.respon.pesan[0].replace(/\n/g, ' '); |
93 | 98 | ||
94 | if (token && data_pelanggan) { | 99 | if (token && data_pelanggan) { |
95 | var sn = token + '/' + data_pelanggan; | 100 | var sn = token + '/' + data_pelanggan; |
96 | message = 'SN=' + sn + '; ' + message; | 101 | message = 'SN=' + sn + '; ' + message; |
97 | } | 102 | } |
98 | 103 | ||
99 | callbackReport(task['requestId'], response_code, message); | 104 | callbackReport(task['requestId'], response_code, message); |
100 | 105 | ||
101 | if (response_code == '68') { | 106 | if (response_code == '68') { |
102 | setTimeout(function() { | 107 | setTimeout(function() { |
103 | topupRequest(task, 5); | 108 | topupRequest(task, 5); |
104 | }, 60000); | 109 | }, 60000); |
105 | } | 110 | } |
106 | 111 | ||
107 | }); | 112 | }); |
108 | }); | 113 | }); |
109 | } | 114 | } |
110 | 115 | ||
111 | function start(_config, _callbackReport) { | 116 | function start(_config, _callbackReport) { |
112 | config = _config; | 117 | config = _config; |
113 | callbackReport = _callbackReport | 118 | callbackReport = _callbackReport |
114 | } | 119 | } |
115 | 120 | ||
116 | function parseSN(message) { | 121 | function parseSN(message) { |
117 | var sn_regex = new RegExp(config.h2h_out.sn_pattern); | 122 | var sn_regex = new RegExp(config.h2h_out.sn_pattern); |
118 | var sn_match = message.match(sn_regex); | 123 | var sn_match = message.match(sn_regex); |
119 | 124 | ||
120 | //console.log('SN MATCH:'); | 125 | //console.log('SN MATCH:'); |
121 | //console.log(sn_match); | 126 | //console.log(sn_match); |
122 | 127 | ||
123 | if (sn_match <= 0) { | 128 | if (sn_match <= 0) { |
124 | console.log('SN Not found: ' + message); | 129 | console.log('SN Not found: ' + message); |
125 | return ''; | 130 | return ''; |
126 | } | 131 | } |
127 | 132 | ||
128 | var sn = sn_match[0]; | 133 | var sn = sn_match[0]; |
129 | var sn_remove_patterns = config.h2h_out.sn_remove_patterns.split(config.h2h_out.sn_remove_patterns_separator); | 134 | var sn_remove_patterns = config.h2h_out.sn_remove_patterns.split(config.h2h_out.sn_remove_patterns_separator); |
130 | //console.log('SN REMOVE PATTERNS:'); | 135 | //console.log('SN REMOVE PATTERNS:'); |
131 | //console.log (sn_remove_patterns); | 136 | //console.log (sn_remove_patterns); |
132 | 137 | ||
133 | var count = sn_remove_patterns.length; | 138 | var count = sn_remove_patterns.length; |
134 | 139 | ||
135 | for(var i = 0; i < count; i++) { | 140 | for(var i = 0; i < count; i++) { |
136 | sn = sn.replace(sn_remove_patterns[i], ''); | 141 | sn = sn.replace(sn_remove_patterns[i], ''); |
137 | } | 142 | } |
138 | 143 | ||
139 | return sn.trim(); | 144 | return sn.trim(); |
140 | } | 145 | } |
141 | 146 | ||
142 | function parseResult(message) { | 147 | function parseResult(message) { |
143 | var data; | 148 | var data; |
144 | xml(message, function(err, result) { | 149 | xml(message, function(err, result) { |
145 | data = result; | 150 | data = result; |
146 | }); | 151 | }); |
147 | return data; | 152 | return data; |
148 | } | 153 | } |
149 | 154 | ||
150 | exports.start = start; | 155 | exports.start = start; |
151 | exports.topupRequest = topupRequest; | 156 | exports.topupRequest = topupRequest; |
152 | exports.parseResult = parseResult; | 157 | exports.parseResult = parseResult; |
153 | 158 |