diff --git a/xmlout.js b/xmlout.js index 6c916a0..cf24236 100644 --- a/xmlout.js +++ b/xmlout.js @@ -16,7 +16,17 @@ var taskHistory = LRU({max: 500, maxAge: 1000 * 3600 * 2}); process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'; -function callbackReport(requestId, responseCode, message, dontResendDelay) { +function callbackReport(requestId, responseCode, message, dontResendDelay, raw) { + var responseToSave = { + parsed: { + MESSAGE: message, + } + }; + + if (raw) { + responseToSave.raw = raw; + } + if (responseCode != '68' || dontResendDelay) { resendDelay.cancel(requestId); } else { @@ -28,7 +38,7 @@ function callbackReport(requestId, responseCode, message, dontResendDelay) { }); } - _callbackReport(requestId, responseCode, message); + _callbackReport(requestId, responseCode, message, null, responseToSave); } function createRedisClient(host, port) { @@ -59,7 +69,7 @@ function topupRequest(task) { }); } -function _topupRequest(task) { +function _topupRequest(task, pendingOnConnectError) { if (!aaa.isTodayTrx(task)) { callbackReport(task.requestId, '68', 'Terdeteksi transaksi beda hari, batal kirim ke supplier. Silahkan cek webreport', true); @@ -94,11 +104,18 @@ function _topupRequest(task) { client.methodCall(methodName, [ params ], function (error, value) { // Results of the method response - if (error && (error.code == 'ECONNREFUSED' || error.code == 'EHOSTUNREACH')) { + if (error && !pendingOnConnectError && (error.code == 'ECONNREFUSED' || error.code == 'EHOSTUNREACH')) { - logger.warn('XMLRPC Client Error', {requestId: task['requestId'], err: error}); + logger.warn('XMLRPC Client Error on connecting', {requestId: task['requestId'], err: error}); callbackReport(task['requestId'], '91', 'Gangguan koneksi ke suplier: ' + error); return; + + } else if (error) { + + logger.warn('XMLRPC Client Error', {requestId: task['requestId'], err: error}); + callbackReport(task['requestId'], '68', 'XMLRPC Client Error: ' + error); + return; + } logger.info('Got XMLRPC response from partner for', {response_method: methodName, response_message: value}); @@ -193,6 +210,12 @@ function updateBalance(message) { } function checkStatus(task) { + + if (Number(config.globals.topup_request_on_check_status)) { + _topupRequest(task, true); + return; + } + var partnerUrl = url.parse(config.h2h_out.partner); var clientOptions = { host: partnerUrl.hostname