diff --git a/partner-simplepay.js b/partner-simplepay.js index 28ae500..54609d5 100644 --- a/partner-simplepay.js +++ b/partner-simplepay.js @@ -306,8 +306,50 @@ function checkStatus(task) { } -function reverseReportHandler(body) { - logger.info('Got reverse report', {body: body}); +function reverseReportHandler(data) { + //logger.info('Got reverse report', {body: body}); + + const qs = URL.parse(data, true).query; + + if (!qs || !qs.request_id) { + return; + } + + if ((typeof qs.balance === 'string') && qs.balance && aaa.updateBalance) { + const balance = qs.balance.replace(/\D/g, ''); + if (balance) { + aaa.updateBalance(balance); + } + } + + + let rc = '68'; + if (qs.trx_status === 'S') { + rc = '00'; + } + else if (qs.trx_status === 'R') { + rc = '40'; + } + + if ((typeof qs.serial === 'string') && qs.serial) { + rc = '00'; + } + + const sn = (rc === '00') ? _createSnFromReverseReport(qs) : null; + let msg = [ + 'REVERSE REPORT', + 'Diag: ' + (qs.diag + '-'), + 'Message': + (qs.message || '-'), + 'Status: ' + (qs.trx_status || '-'), + 'Balance: ' + (qs.balance || '-'), + 'Harga: ' + (qs.harga || '-') + ].join('. '); + + if (sn) { + msg = 'SN=' + sn + '; ' + msg; + } + + callbackReport(qs.request_id, rc, msg); } function _parseInfoFromReverseReport(info) { @@ -350,7 +392,6 @@ function _createSnFromReverseReport(qs) { function createReverseHttpServer() { var httpServer = http.createServer(function(req, res) { - const qs = URL.parse(req.url, true).query; logger.info('Got request from partner (reverse report)', {remote_address: req.connection.remoteAddress, url: req.url, qs: qs}); var body = ""; @@ -362,9 +403,16 @@ function createReverseHttpServer() { res.writeHead(200); res.end('OK'); - reverseReportHandler(body); + logger.info('Got reverse report', {body: body}); + + reverseReportHandler('?' + body); }); + return; + + const qs = URL.parse(req.url, true).query; + + if (!qs || !qs.request_id) { return; }