From c187523945d1296ae82a89a7effed6fb6133eaf8 Mon Sep 17 00:00:00 2001 From: Adhidarma Hadiwinoto <me@adhisimon.org> Date: Wed, 10 Aug 2016 16:09:25 +0700 Subject: [PATCH] insertTaskToMongoDb dan callbackReportWithPushToMongoDb --- index.js | 3 +-- partner-trugee.js | 77 +++++++++++++++++++++++++++++++++---------------------- 2 files changed, 47 insertions(+), 33 deletions(-) diff --git a/index.js b/index.js index 0b8397e..1117616 100644 --- a/index.js +++ b/index.js @@ -21,7 +21,6 @@ var options = { var httpServer = HttpServer.start(config, options); -partner.start(config, aaa.callbackReport, options); +partner.start(options); aaa.start(config, partner, options); expresso.start(options); - diff --git a/partner-trugee.js b/partner-trugee.js index 935e67f..8e72d2f 100644 --- a/partner-trugee.js +++ b/partner-trugee.js @@ -22,13 +22,13 @@ var trx_prices = {}; function calculateSignature(password, msisdn, timestamp) { var a = timestamp + msisdn.substr(msisdn.length - 4); var b = msisdn.substr(msisdn.length - 4).split('').reverse().join('') + password; - + return xor.encode(a,b); } function createPayload(task) { var timestamp = strftime('%H%M%S'); - + var payload = { pulsamatic: [ {command: 'TOPUP'}, @@ -40,16 +40,18 @@ function createPayload(task) { {sign: calculateSignature(config.h2h_out.password, task['destination'], timestamp)} ] }; - + //console.log(payload); return "<?xml version=\"1.0\" ?>\n" + xml(payload); } function topupRequest(task, retry) { - - var payload_xml = createPayload(task); + + aaa.insertTaskToMongoDb(task); + + var payload_xml = createPayload(task); var partner = url.parse(config.h2h_out.partner); - + var request_options = { host: partner.hostname, path: partner.path, @@ -60,17 +62,17 @@ function topupRequest(task, retry) { 'Content-Length': Buffer.byteLength(payload_xml) } }; - + var buffer = ""; - + logger.info('Requesting to partner', {request_options: request_options}); - + var req = http.request(request_options, function( res ) { logger.info('Status code: ' + res.statusCode ); var buffer = ""; res.on( "data", function( data ) { buffer = buffer + data; } ); - res.on( "end", function( data ) { + res.on( "end", function( data ) { directResponseHandler(buffer, task['requestId']); }); @@ -94,25 +96,25 @@ function directResponseHandler(body, request_id) { callbackReport(request_id, '40', buffer); return; } - + logger.info('Direct response parsed', {result: result}); - + var response_code = '68'; - + var request_id = result.pulsamatic.partner_trxid[0].trim(); var message = result.pulsamatic.message[0].trim(); var status = result.pulsamatic.result[0].trim(); - + if (status === 'failed') { response_code = '40'; - + var new_response_code = responseCodeFromMessage(message); if (new_response_code) { response_code = new_response_code; } } - + callbackReport(request_id, response_code, message); }); } @@ -134,16 +136,16 @@ function createServer() { var httpServer = http.createServer(function(req, res) { //console.log('Got request from partner ("' + req.url + '")'); - + res.end('OK'); - + var qs = url.parse(req.url, true).query; logger.info('Reverse Report', {qs: qs}); - + var response_code = '68'; var request_id = qs.pid; var message = qs.msg; - + if (qs.code == 2) { // gagal response_code = '40'; @@ -154,30 +156,43 @@ function createServer() { response_code = '00'; message = 'SN=' + qs.sn + ';' + message; } - + if (response_code == '40') { var new_response_code = responseCodeFromMessage(message); if (new_response_code) { response_code = new_response_code; } } - + callbackReport(request_id, response_code, message); }); - + httpServer.listen(config.h2h_out.listen_port, function() { logger.info('HTTP Reverse/Report server listen on port ' + config.h2h_out.listen_port); }); } -function start(_config, _callbackReport, options) { - config = _config; - callbackReport = _callbackReport - - if (options && options.aaa) { - aaa = options.aaa; +function start(options) { + if (!options) { + console.log('Undefined options, terminating....'); + process.exit(1); } - + + if (options.config) { + config = options.config; + } else { + console.log('Undefined options.config, terminating....') + process.exit(1); + } + + if (options.aaa) { + aaa = options.aaa; + callbackReport = options.aaa.callbackReportWithPushToMongoDb; + } else { + console.log('Undefined options.aaa, terminating....') + process.exit(1); + } + if (options && options.logger) { logger = options.logger; } else { @@ -187,7 +202,7 @@ function start(_config, _callbackReport, options) { ] }); } - + createServer(); } -- 1.9.0