partner-scrappingkisel.js 3.46 KB
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;