Commit 77d71adf18e17aaa6b2d4d8983be1b36e04727f4

Authored by Adhidarma Hadiwinoto
1 parent e99d152694
Exists in master

68

Showing 1 changed file with 33 additions and 24 deletions Side-by-side Diff

... ... @@ -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