var fs = require('fs'); var https = require('https'); var http = require('http'); var url = require('url'); var request = require('request'); var xml2js = require('xml2js').parseString; var strftime = require('strftime'); var math = require('mathjs'); var config; var httpServer; process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'; var logTag = __filename.split('/').reverse()[0]; function topupRequest(task) { if (config.globals.requests_count == undefined) { config.globals.requests_count = 1; } else { config.globals.requests_count++; } if (config.globals.active_requests_count == undefined) { config.globals.active_requests_count = 1; } else { config.globals.active_requests_count++; } if (config.globals.max_active_requests_count == undefined) { config.globals.max_active_requests_count = config.globals.active_requests_count; } else { config.globals.max_active_requests_count = math.max(config.globals.max_active_requests_count, config.globals.active_requests_count); } var options = { url: config.h2h_out.partner, qs: { reqid: task['requestId'], msisdn: task['destination'], product: task['remoteProduct'] } }; console.log(options); request(options, function (error, response, body) { if (config.globals.active_requests_count == undefined) { config.globals.active_requests_count = 0; } else { config.globals.active_requests_count--; } if (error || response.statusCode != 200) { console.log(logTag + ': Gateway Error'); callbackReport(task['requestId'], '40', 'Gateway Error'); return; } console.log(logTag + ': Supplier response:'); console.log(body); xml2js(body, function (err, result) { if (err) { callbackReport(task['requestId'], '40', body); return; } console.log(result); var response_code = '68'; var message = result.trx_response.info[0].trim(); if (message == 'Error Parsing') { response_code = '40'; } else if (message == "Phone number's not found") { response_code = '14'; } else if (message == "Duplicate transaction") { response_code = '55'; } else if (message == "TRANSAKSI SUKSES !!!") { var destination = result.trx_response.msisdn.join(' ').trim(); var product = result.trx_response.product.join(' ').trim(); var ref_num = result.trx_response.ref_num.join(' ').trim(); var harga = result.trx_response.harga.join(' ').trim(); var kode_voucher = result.trx_response.kode_voucher.join(' ').trim(); response_code = '00'; message = 'SN=' + kode_voucher + '; ' + product + ' ' + destination + ' ' + harga + ' ref_num: ' + ref_num + ' kode_voucher: ' + kode_voucher; } callbackReport(task['requestId'], response_code, message); }); }); } function start(_config, _callbackReport) { config = _config; callbackReport = _callbackReport } exports.start = start; exports.topupRequest = topupRequest;