From 77d71adf18e17aaa6b2d4d8983be1b36e04727f4 Mon Sep 17 00:00:00 2001 From: Adhidarma Hadiwinoto <gua@adhisimon.org> Date: Mon, 9 May 2016 21:28:12 +0700 Subject: [PATCH] 68 --- partner-irs.js | 57 +++++++++++++++++++++++++++++++++------------------------ 1 file changed, 33 insertions(+), 24 deletions(-) diff --git a/partner-irs.js b/partner-irs.js index 677d847..2362a28 100644 --- a/partner-irs.js +++ b/partner-irs.js @@ -33,34 +33,43 @@ function start(_config, _callbackReport, options) { }); } - createHttpReportServer(); + createXMLRPCServer(); } -function createHttpReportServer() { - var httpServer = http.createServer(function(request, response) { - var qs = url.parse(request.url, true).query; - var path = url.parse(request.url).pathname; - - logger.info('Got reverse report from partner', {path: path, qs: qs}); - response.end('OK'); +function createXMLRPCServer() { + + logger.info('Creating XML-RPC server on port ' + config.h2h_out.listen_port); + var serverOptions = { + port: config.h2h_out.listen_port + }; + + var server = xmlrpc.createServer(serverOptions); + + server.on('NotFound', function (method, params) { + logger.warn('Unknown method recevied on XMLRPC server', {xmlrpc_method: method, xmlrpc_params: params}); + }); + + server.on('topUpReport', function (err, params, callback) { + + logger.info('Got XMLRPC topUpReport request from partner', {xmlrpc_method: 'topUpReport', xmlrpc_params: params}); - var trxid; - try { - trxid = qs.transid; - } - catch(err) { - } + var paramscount = params.length; + for (var i = 0; i < paramscount; i++) { + var value = params[i]; + + if (value['RESPONSECODE'] == '00' && config.h2h_out.parse_sn == 'YES') { + value['MESSAGE'] = 'SN=' + parseSN(value['MESSAGE']) + '; ' + value['MESSAGE']; + } + + if (value['RESPONSECODE'] != '00' && value['RESPONSECODE'] != '68') { + value['RESPONSECODE'] = '40'; + } - if (trxid) { - logger.info('Requesting advice from webreport', {trxid: trxid}) - cekstatus.advice({trxid: trxid}, callbackFromWebReport); + callbackReport(value['REQUESTID'], value['RESPONSECODE'], value['MESSAGE']); } - - }); - - httpServer.listen(config.h2h_out.listen_port, function() { - logger.info('HTTP Reverse/Report server listen on port ' + config.h2h_out.listen_port); - }); + + callback(null, 'ACK REPORT OK'); + }) } function topupRequestHttpGet(task, retry) { @@ -135,7 +144,7 @@ function topupRequestXMLRPC(task, retry) { value['MESSAGE'] = 'SN=' + parseSN(value['MESSAGE']) + '; ' + value['MESSAGE']; } - if (value['RESPONSECODE'] != '00') { + if (value['RESPONSECODE'] != '00' && value['RESPONSECODE'] != '68') { value['RESPONSECODE'] = '40'; } -- 1.9.0