Commit 4252c28180225e8c13285d5a2b9e7dfbf0f61253
1 parent
a45d167eba
Exists in
master
penanganan rc
Showing 1 changed file with 124 additions and 59 deletions Side-by-side Diff
partner-kospinjasa.js
... | ... | @@ -83,7 +83,15 @@ function topupRequestSoap(task, params, retry) { |
83 | 83 | logger.info('Requesting to service', {url: config.h2h_out.partner, params: _params}); |
84 | 84 | |
85 | 85 | soapClient.apih2h.apih2hPort.billpayment({ inputCheck: _params }, function(err, result) { |
86 | - logger.info('Got response', {lastRequest: soapClient.lastRequest, lastMessage: soapClient.lastMessage, lastEndpoint: soapClient.lastEndpoint}); | |
86 | + logger.verbose( | |
87 | + 'Got response', | |
88 | + { | |
89 | + lastEndpoint: soapClient.lastEndpoint, | |
90 | + lastRequest: soapClient.lastRequest, | |
91 | + lastMessage: soapClient.lastMessage, | |
92 | + lastResponse: soapClient.lastResponse, | |
93 | + } | |
94 | + ); | |
87 | 95 | |
88 | 96 | if (err) { |
89 | 97 | logger.warn('Error requesting service', {err: err}); |
... | ... | @@ -91,62 +99,128 @@ function topupRequestSoap(task, params, retry) { |
91 | 99 | return; |
92 | 100 | } |
93 | 101 | |
94 | - var responseMessageToST24 = result.outputParameter.resultCode.$value + ' - ' + result.outputParameter.resultDesc.$value; | |
95 | - | |
96 | - logger.info('Got result: ' + responseMessageToST24, {result: result}); | |
97 | - | |
98 | - callbackReport(task.requestId, '68', responseMessageToST24); | |
102 | + topupResponseHandler(task, result); | |
99 | 103 | }); |
100 | 104 | }); |
101 | 105 | } |
102 | 106 | |
103 | -function topupRequestSoapDIY(task, params, retry) { | |
104 | - var message = whiskers.render(soapTemplate, params); | |
105 | - logger.verbose("Generating SOAP message", {message: message}); | |
106 | - | |
107 | - var partnerUrl = url.parse(config.h2h_out.partner_endpoint); | |
108 | - var postRequest = { | |
109 | - host: partnerUrl.hostname, | |
110 | - path: partnerUrl.path, | |
111 | - port: partnerUrl.port, | |
112 | - method: "POST", | |
113 | - headers: { | |
114 | - 'Content-Type': 'text/xml', | |
115 | - 'Content-Length': Buffer.byteLength(message), | |
116 | - //'SOAPAction': "urn:apih2h#billpayment" | |
117 | - } | |
118 | - }; | |
119 | - | |
120 | - logger.info('POST to partner', {postRequest: postRequest}); | |
121 | - var req = http.request(postRequest, function( res ) { | |
122 | - | |
123 | - logger.verbose('Request status code: ' + res.statusCode ); | |
124 | - var buffer = ""; | |
125 | - | |
126 | - res.on( "data", function( data ) { | |
127 | - buffer = buffer + data; | |
128 | - }); | |
129 | - | |
130 | - res.on( "end", function( data ) { | |
131 | - topupResponseHandler(buffer, task); | |
132 | - }); | |
107 | +function topupResponseHandler(task, response) { | |
108 | + var st24rc = '68'; | |
109 | + var st24message = response.outputParameter.resultDesc.$value; | |
133 | 110 | |
134 | - }); | |
135 | - | |
136 | - req.on('error', function(e) { | |
137 | - logger.warn('problem with request: ' + e.message); | |
138 | - callbackReport(task.requestId, '68', e.message); | |
111 | + if ( response.outputParameter.resultCode.$value == '001' ) { | |
112 | + // product disabled | |
113 | + st24rc = '13'; | |
114 | + } | |
115 | + else if ( response.outputParameter.resultCode.$value == '002' ) { | |
116 | + // prodcode disable | |
117 | + st24rc = '13'; | |
118 | + } | |
119 | + else if ( response.outputParameter.resultCode.$value == '003' ) { | |
120 | + // duplicate reff | |
121 | + st24rc = '55'; | |
122 | + } | |
123 | + else if ( response.outputParameter.resultCode.$value == '004' ) { | |
124 | + // not enough balance | |
125 | + st24rc = '40'; | |
126 | + } | |
127 | + else if ( response.outputParameter.resultCode.$value == '005' ) { | |
128 | + // username blocked | |
129 | + st24rc = '40'; | |
130 | + } | |
131 | + else if ( response.outputParameter.resultCode.$value == '006' ) { | |
132 | + // not exists username | |
133 | + st24rc = '40'; | |
134 | + } | |
135 | + else if ( response.outputParameter.resultCode.$value == '011' ) { | |
136 | + // invalid request | |
137 | + st24rc = '40' | |
138 | + } | |
139 | + else if ( response.outputParameter.resultCode.$value == '012' ) { | |
140 | + // no route to host | |
141 | + st24rc = '40' | |
142 | + } | |
143 | + else if ( response.outputParameter.resultCode.$value == '013' ) { | |
144 | + // invalid signature | |
145 | + st24rc = '40' | |
146 | + } | |
147 | + else if ( response.outputParameter.bit39.$value == '06' ) { | |
148 | + st24rc = '40'; | |
149 | + st24message = 'Error Transaksi ditolak karena terjadi error di H2H dengan response code diluar daftar ini. Silahkan hubungi H2H'; | |
150 | + } | |
151 | + else if ( response.outputParameter.bit39.$value == '12' ) { | |
152 | + st24rc = '40'; | |
153 | + st24message = 'Invalid Transaction Transaksi ditolak karena flow transaksi tidak valid'; | |
154 | + } | |
155 | + else if ( response.outputParameter.bit39.$value == '13' ) { | |
156 | + st24rc = '13'; | |
157 | + st24message = 'Invalid voucher nominal'; | |
158 | + } | |
159 | + else if ( response.outputParameter.bit39.$value == '14' ) { | |
160 | + st24rc = '14'; | |
161 | + st24message = 'MSISDN tidak ditemukan'; | |
162 | + } | |
163 | + else if ( response.outputParameter.bit39.$value == '30' ) { | |
164 | + st24rc = '40'; | |
165 | + st24message = 'Format Error'; | |
166 | + } | |
167 | + else if ( response.outputParameter.bit39.$value == '31' ) { | |
168 | + st24rc = '40'; | |
169 | + st24message = 'Kode bank tidak terdaftar'; | |
170 | + } | |
171 | + else if ( response.outputParameter.bit39.$value == '63' ) { | |
172 | + st24rc = '40'; | |
173 | + st24message = 'Reversal denied'; | |
174 | + } | |
175 | + else if ( response.outputParameter.bit39.$value == '68' ) { | |
176 | + st24rc = '68'; | |
177 | + st24message = 'Transaksi sedang dalam proses'; | |
178 | + } | |
179 | + else if ( response.outputParameter.bit39.$value == '69' ) { | |
180 | + st24rc = '68'; | |
181 | + st24message = 'Respon Ok lebih dari 24 detik'; | |
182 | + } | |
183 | + else if ( response.outputParameter.bit39.$value == '70' ) { | |
184 | + st24rc = '13'; | |
185 | + st24message = 'Voucher out of stock'; | |
186 | + } | |
187 | + else if ( response.outputParameter.bit39.$value == '79' ) { | |
188 | + st24rc = '14'; | |
189 | + st24message = 'Phone number is blocked by Telkomsel'; | |
190 | + } | |
191 | + else if ( response.outputParameter.bit39.$value == '81' ) { | |
192 | + st24rc = '14'; | |
193 | + st24message = 'Phone number is expired'; | |
194 | + } | |
195 | + else if ( response.outputParameter.bit39.$value == '89' ) { | |
196 | + st24rc = '40'; | |
197 | + st24message = 'Link to billing provider is down'; | |
198 | + } | |
199 | + else if ( response.outputParameter.bit39.$value == '91' ) { | |
200 | + st24rc = '40'; | |
201 | + st24message = 'Database problem'; | |
202 | + } | |
203 | + else if ( response.outputParameter.bit39.$value == '92' ) { | |
204 | + st24rc = '40'; | |
205 | + st24message = 'Unable to route transaction'; | |
206 | + } | |
207 | + else if ( response.outputParameter.bit39.$value == '94' ) { | |
208 | + st24rc = '40'; | |
209 | + st24message = 'Duplicate reversal request'; | |
210 | + } | |
139 | 211 | |
140 | - topupRequestRetry(task); | |
141 | - }); | |
212 | + var message = | |
213 | + response.outputParameter.resultCode.$value | |
214 | + + " " + response.outputParameter.resultDesc.$value | |
215 | + + "; " + response.outputParameter.bit39.$value | |
216 | + ; | |
142 | 217 | |
143 | - req.write(message); | |
144 | - req.end(); | |
145 | -} | |
218 | + if (response.outputParameter.resultDesc.$value != st24message) { | |
219 | + var message = message + " " + st24message; | |
220 | + } | |
146 | 221 | |
147 | -function topupResponseHandler(response, task) { | |
148 | - logger.verbose('Got response', {response: response, task: task}); | |
149 | - callbackReport(task.requestId, '68', 'Got response'); | |
222 | + logger.info('Got result: ' + message, {result: result}); | |
223 | + callbackReport(task.requestId, st24rc, st24message); | |
150 | 224 | } |
151 | 225 | |
152 | 226 | function topupRequestRetry(task) { |
... | ... | @@ -162,11 +236,8 @@ function topupRequestRetry(task) { |
162 | 236 | } |
163 | 237 | |
164 | 238 | |
165 | - | |
166 | - | |
167 | 239 | function createSignature(params, password) { |
168 | 240 | var passwordHash = crypto.createHash('sha256').update(password).digest().toString('hex'); |
169 | - | |
170 | 241 | var plain = |
171 | 242 | params.userName |
172 | 243 | + passwordHash |
... | ... | @@ -178,13 +249,7 @@ function createSignature(params, password) { |
178 | 249 | + params.reff |
179 | 250 | + params.timeStamp; |
180 | 251 | |
181 | - var result = crypto.createHash('sha1').update(plain).digest().toString('hex'); | |
182 | - | |
183 | - if (logger) { | |
184 | - logger.verbose('Calculating signature', {plain: plain, result: result, params: params, password: password}); | |
185 | - } | |
186 | - | |
187 | - return result; | |
252 | + return crypto.createHash('sha1').update(plain).digest().toString('hex'); | |
188 | 253 | } |
189 | 254 | |
190 | 255 | function createBillNumber(destination) { |