diff --git a/index.js b/index.js index 0d9322b..1378ff5 100644 --- a/index.js +++ b/index.js @@ -4,5 +4,7 @@ process.chdir(__dirname); const pullgw = require('komodo-sdk/gateway/pull'); const partner = require('./lib/partner'); const reverseReport = require('./lib/reverse-report'); +const adviceServer = require('komodo-sdk/gateway/advice-push-server'); pullgw.setPartner(partner); +adviceServer.setPartner(partner); diff --git a/lib/partner.js b/lib/partner.js index 35836bf..f46d683 100644 --- a/lib/partner.js +++ b/lib/partner.js @@ -91,6 +91,64 @@ function buy(task) { } function advice(task) { + const partnerUrl = url.parse(config.partner.url); + const clientOptions = { + host: partnerUrl.hostname, + port: partnerUrl.port, + path: partnerUrl.pathname + }; + + let client; + if (partnerUrl.protocol == 'https:') { + client = xmlrpc.createSecureClient(clientOptions); + } else { + client = xmlrpc.createClient(clientOptions); + } + + const params = { + REQUESTID: task.trx_id, + MSISDN: config.partner.msisdn || config.partner.userid, + PIN: config.partner.pin || config.partner.password, + NOHP: task.destination + }; + + const xmlrpcMethod = 'topUpInquiry'; + logger.info('Preparing XMLRPC request', {method: xmlrpcMethod, params: params, partnerUrl: partnerUrl.href}); + + client.methodCall(xmlrpcMethod, [ params ], function (err, value) { + + if (err) { + + const msg = 'XMLRPC Client Error: ' + err; + + logger.warn(msg, {method: xmlrpcMethod, trx_id: task.trx_id, destination: task.destination, err: err}); + report({ + trx_id: task.trx_id, + rc: '68', + message: 'INTERNAL: ' + msg, + misc: { + task: task + } + }); + + return; + } + + logger.info('Got XMLRPC response from partner for', {method: xmlrpcMethod, trx_id: task.trx_id, destination: task.destination, response: value}); + //matrix.last_topupRequest_ack = value; + + report({ + trx_id: task.trx_id, + rc: partnerRc[value.RESPONSECODE] || '40', + message: value.MESSAGE, + sn: (value.SN || '').replace(/;$/, '') || st24.extractSnFromMessage(value.MESSAGE), + amount: value.PRICE || st24.extractPriceFromMsg(value.MESSAGE), + raw: value, + misc: { + task: task + } + }); + }); } function report(data) {