From bf636f78efdc5e8e04d06342d2e1b0d678f88a03 Mon Sep 17 00:00:00 2001 From: Adhidarma Hadiwinoto <gua@adhisimon.org> Date: Wed, 18 May 2016 10:47:20 +0700 Subject: [PATCH] penanganan trx gagal --- partner-trustlink.js | 55 ++++++++++++++++++++++++++++++---------------------- 1 file changed, 32 insertions(+), 23 deletions(-) diff --git a/partner-trustlink.js b/partner-trustlink.js index 32c8ba6..67a7b74 100644 --- a/partner-trustlink.js +++ b/partner-trustlink.js @@ -19,11 +19,11 @@ var options; function start(_config, _callbackReport, options) { config = _config; callbackReport = _callbackReport - + if (options && options.aaa) { aaa = options.aaa; } - + if (options && options.logger) { logger = options.logger; } else { @@ -33,7 +33,7 @@ function start(_config, _callbackReport, options) { ] }); } - + createReverseReportServer(); } @@ -45,7 +45,7 @@ function createReverseReportServer() { function onReverseReport(req, res) { res.end('OK'); - + var qs = url.parse(req.url, true).query; logger.info('Reverse Report', {qs: qs}); } @@ -53,15 +53,15 @@ function onReverseReport(req, res) { function calculateSignature(ts, destination, password) { var a = ts + destination.substr(destination.length - 4); var b = destination.substr(destination.length - 4).split('').reverse().join('') + password; - + return xor.encode(a,b); } function createXmlPayload(task, userid, password) { var ts = strftime('%H%M%S', new Date()); - + var signature = calculateSignature(ts, task.destination, password); - + var payload = { evoucher: [ {command: 'TOPUP'}, @@ -74,11 +74,11 @@ function createXmlPayload(task, userid, password) { {trxke: 1}, ] }; - + if (logger) { logger.verbose('Generate xml payload', {payload: payload}); } - + return "<?xml version=\"1.0\" ?>\n" + xml(payload); } @@ -86,11 +86,11 @@ function topupRequest(task, retry) { if (retry === undefined) { retry = max_retry; } - + var payload = createXmlPayload(task, config.h2h_out.userid, config.h2h_out.password); - + var partner = url.parse(config.h2h_out.partner); - + var request_options = { host: partner.hostname, path: partner.path, @@ -101,17 +101,17 @@ function topupRequest(task, retry) { 'Content-Length': Buffer.byteLength(payload) } }; - + var buffer = ""; - + logger.info('Requesting to partner', {request_options: request_options}); - + var req = http.request(request_options, function( res ) { logger.verbose('Status code: ' + res.statusCode ); var buffer = ""; res.on( "data", function( data ) { buffer = buffer + data; } ); - res.on( "end", function( data ) { + res.on( "end", function( data ) { logger.verbose('Got direct response from partner', {resp: buffer}); directResponseHandler(buffer, task); }); @@ -139,21 +139,30 @@ function directResponseHandler(body, task) { callbackReport(request_id, '68', buffer); return; } - + logger.info('Direct response parsed', {result: result}); - + var response_code = '68'; - + var request_id = task.requestId; var status = result.evoucher.result[0].trim(); var message = result.evoucher.value[0].string[0].trim(); - + if (status == '0') { - response_code = '00'; + if (message.indexOf('SUKSES') >= 0) { + response_code = '00'; + } + else if (message.indexOf('GAGAL') >= 0) { + response_code = '40'; + } + else { + response_code = '68'; + } + } else if (status == "-1") { response_code = '40'; - + /* var new_response_code = responseCodeFromMessage(message); if (new_response_code) { @@ -164,7 +173,7 @@ function directResponseHandler(body, task) { } else { response_code = '68'; } - + callbackReport(request_id, response_code, message); }); } -- 1.9.0