reverse-report.js 1.54 KB
"use strict";

const xmlrpc = require('xmlrpc');

const config = require('komodo-sdk/config');
const logger = require('komodo-sdk/logger');
const matrix = require('komodo-sdk/matrix');
const pull = require('komodo-sdk/gateway/pull');

const st24 = require('./st24');
const partner = require('./partner');
const partnerRc = require('./partner-rc.json');

function create() {
    const server = xmlrpc.createServer({
        port: config.reverse_report_port
    });

    logger.info('Reverse report server listen on port ' + config.reverse_report_port);

    server.on('NotFound', function (method, params) {
        logger.warn('REVERSEREPORT: Unknown method recevied on XMLRPC server', {method: method, params: params});
    });

    server.on('topUpReport', function (err, params, callback) {

        logger.info('REVERSEREPORT: Got XMLRPC topUpReport request from partner', {method: 'topUpReport', params: params});
        matrix.last_topupReport_params = params;

        const paramsCount = params.length;
        for (let i = 0; i < paramsCount; i++) {
            let value = params[i];

            partner.report({
                trx_id: value.REQUESTID,
                rc: partnerRc[value.RESPONSECODE] || '40',
                message: value.MESSAGE,
                sn: value.SN || st24.extractSnFromMessage(value.MESSAGE),
                amount: value.PRICE || st24.extractPriceFromMsg(value.MESSAGE),
                raw: value,
                misc: {
                }
            });
        }

        callback(null, 'ACK REPORT OK');
    })
}

create();