diff --git a/partner-sc.js b/partner-sc.js index 38ea767..2346a18 100644 --- a/partner-sc.js +++ b/partner-sc.js @@ -7,9 +7,10 @@ var xml2js = require('xml2js').parseString; var strftime = require('strftime'); var math = require('mathjs'); var winston = require('winston'); -var cekstatus = require('./cekstatus.js'); +//var cekstatus = require('./cekstatus.js'); var mongoClient = require('mongodb').MongoClient; var LRU = require('lru-cache'); +var reverseParser = require('./reverse-parser'); var config; var httpServer; @@ -513,7 +514,9 @@ function callbackFromWebReport(status) { } else if ((status.status == 'P') || (status.status == 'W')) { - callbackReport(status.response.reffid[0].trim(), '68', responseMessage); + return callbackReport(status.response.reffid[0].trim(), '68', responseMessage); + + /* logger.info('Got pending status, requesting advice from webreport in ' + sleep_before_retry + 'ms'); setTimeout(function () { @@ -521,7 +524,7 @@ function callbackFromWebReport(status) { cekstatus.advice({trxid: status.trxId,}, callbackFromWebReport); }, sleep_before_retry); - return; + */ } else { responseCode = status.response.resultcode[0].replace(/^00/, ""); @@ -531,7 +534,7 @@ function callbackFromWebReport(status) { } - callbackReport(status.response.reffid[0].trim(), responseCode, responseMessage); + return callbackReport(status.response.reffid[0].trim(), responseCode, responseMessage); } function createHttpReportServer() { @@ -546,14 +549,32 @@ function createHttpReportServer() { var resultCode = qs.rescode; if (requestId && resultCode && resultCode != '0') { - if (pendingResultCode.indexOf(resultCode) >= 0) { - callbackReport(requestId, '68', 'Got reverse report: ' + qs.msg); - } else { - callbackReport(requestId, '40', 'Got reverse report: ' + qs.msg); + + } + + if (requestId && resultCode) + if (resultCode == '0') { + var responseData = reverseParser.parseMessage(qs.msg); + var sn = [ + qs.token, + responseData.namapel, + responseData.tarifdaya, + responseData.jumlahkwh + ].join('/'); + + return callbackReport(requestId, '00', 'SN=' + sn + ';' + 'Got reverse report: ' + qs.msg); + } + else if (pendingResultCode.indexOf(resultCode) >= 0) { + return callbackReport(requestId, '68', 'Got reverse report: ' + qs.msg); + } + else { + return callbackReport(requestId, '40', 'Got reverse report: ' + qs.msg); } - return; } + + /* + var trxid; try { trxid = qs.transid; @@ -561,7 +582,6 @@ function createHttpReportServer() { catch(err) { } - /* if (trxid) { logger.info('Requesting advice from webreport', {trxid: trxid}) cekstatus.advice({trxid: trxid}, callbackFromWebReport);