Commit 77d71adf18e17aaa6b2d4d8983be1b36e04727f4
1 parent
e99d152694
Exists in
master
68
Showing 1 changed file with 33 additions and 24 deletions Side-by-side Diff
partner-irs.js
... | ... | @@ -33,34 +33,43 @@ function start(_config, _callbackReport, options) { |
33 | 33 | }); |
34 | 34 | } |
35 | 35 | |
36 | - createHttpReportServer(); | |
36 | + createXMLRPCServer(); | |
37 | 37 | } |
38 | 38 | |
39 | -function createHttpReportServer() { | |
40 | - var httpServer = http.createServer(function(request, response) { | |
41 | - var qs = url.parse(request.url, true).query; | |
42 | - var path = url.parse(request.url).pathname; | |
43 | - | |
44 | - logger.info('Got reverse report from partner', {path: path, qs: qs}); | |
45 | - response.end('OK'); | |
39 | +function createXMLRPCServer() { | |
40 | + | |
41 | + logger.info('Creating XML-RPC server on port ' + config.h2h_out.listen_port); | |
42 | + var serverOptions = { | |
43 | + port: config.h2h_out.listen_port | |
44 | + }; | |
45 | + | |
46 | + var server = xmlrpc.createServer(serverOptions); | |
47 | + | |
48 | + server.on('NotFound', function (method, params) { | |
49 | + logger.warn('Unknown method recevied on XMLRPC server', {xmlrpc_method: method, xmlrpc_params: params}); | |
50 | + }); | |
51 | + | |
52 | + server.on('topUpReport', function (err, params, callback) { | |
53 | + | |
54 | + logger.info('Got XMLRPC topUpReport request from partner', {xmlrpc_method: 'topUpReport', xmlrpc_params: params}); | |
46 | 55 | |
47 | - var trxid; | |
48 | - try { | |
49 | - trxid = qs.transid; | |
50 | - } | |
51 | - catch(err) { | |
52 | - } | |
56 | + var paramscount = params.length; | |
57 | + for (var i = 0; i < paramscount; i++) { | |
58 | + var value = params[i]; | |
59 | + | |
60 | + if (value['RESPONSECODE'] == '00' && config.h2h_out.parse_sn == 'YES') { | |
61 | + value['MESSAGE'] = 'SN=' + parseSN(value['MESSAGE']) + '; ' + value['MESSAGE']; | |
62 | + } | |
63 | + | |
64 | + if (value['RESPONSECODE'] != '00' && value['RESPONSECODE'] != '68') { | |
65 | + value['RESPONSECODE'] = '40'; | |
66 | + } | |
53 | 67 | |
54 | - if (trxid) { | |
55 | - logger.info('Requesting advice from webreport', {trxid: trxid}) | |
56 | - cekstatus.advice({trxid: trxid}, callbackFromWebReport); | |
68 | + callbackReport(value['REQUESTID'], value['RESPONSECODE'], value['MESSAGE']); | |
57 | 69 | } |
58 | - | |
59 | - }); | |
60 | - | |
61 | - httpServer.listen(config.h2h_out.listen_port, function() { | |
62 | - logger.info('HTTP Reverse/Report server listen on port ' + config.h2h_out.listen_port); | |
63 | - }); | |
70 | + | |
71 | + callback(null, 'ACK REPORT OK'); | |
72 | + }) | |
64 | 73 | } |
65 | 74 | |
66 | 75 | function topupRequestHttpGet(task, retry) { |
... | ... | @@ -135,7 +144,7 @@ function topupRequestXMLRPC(task, retry) { |
135 | 144 | value['MESSAGE'] = 'SN=' + parseSN(value['MESSAGE']) + '; ' + value['MESSAGE']; |
136 | 145 | } |
137 | 146 | |
138 | - if (value['RESPONSECODE'] != '00') { | |
147 | + if (value['RESPONSECODE'] != '00' && value['RESPONSECODE'] != '68') { | |
139 | 148 | value['RESPONSECODE'] = '40'; |
140 | 149 | } |
141 | 150 |