Commit bcbd0b93fdcf823a5f240264b116e365d52b07d7

Authored by Adhidarma Hadiwinoto
1 parent ed747c16ab
Exists in master

Log balance on reverse-report irs

Showing 1 changed file with 9 additions and 1 deletions Inline Diff

lib/irs/reverse-report.js
1 const fs = require('fs'); 1 const fs = require('fs');
2 const http = require('http'); 2 const http = require('http');
3 const url = require('url'); 3 const url = require('url');
4 4
5 const stringify = require("json-stringify-pretty-compact"); 5 const stringify = require("json-stringify-pretty-compact");
6 6
7 const config = require('komodo-sdk/config'); 7 const config = require('komodo-sdk/config');
8 const logger = require('komodo-sdk/logger'); 8 const logger = require('komodo-sdk/logger');
9 9
10 const partner = require('../partner'); 10 const partner = require('../partner');
11 const irs = require('komodo-gw-irs-lib'); 11 const irs = require('komodo-gw-irs-lib');
12 12
13 const localRc = fs.existsSync(__dirname + '/../../rc-local.json') ? require('../../rc-local.json') : null; 13 const localRc = fs.existsSync(__dirname + '/../../rc-local.json') ? require('../../rc-local.json') : null;
14 if (localRc) { 14 if (localRc) {
15 logger.info('REVERSE-REPORT: Found rc-local.json', { 15 logger.info('REVERSE-REPORT: Found rc-local.json', {
16 useRcLocalOnReverseReport: config.partner.reverse_report_using_rc_local, 16 useRcLocalOnReverseReport: config.partner.reverse_report_using_rc_local,
17 localRc, 17 localRc,
18 }); 18 });
19 } 19 }
20 20
21 function processPartnerReport(qs) { 21 function processPartnerReport(qs) {
22 let rc = '68'; 22 let rc = '68';
23 23
24 if (config.partner.reverse_report_using_rc_local && localRc && qs.statuscode) { 24 if (config.partner.reverse_report_using_rc_local && localRc && qs.statuscode) {
25 rc = localRc[qs.statuscode] || '40'; 25 rc = localRc[qs.statuscode] || '40';
26 } else if (qs.statuscode === '1') { 26 } else if (qs.statuscode === '1') {
27 rc = '00'; 27 rc = '00';
28 } else if (qs.statuscode === '2') { 28 } else if (qs.statuscode === '2') {
29 rc = '40'; 29 rc = '40';
30 } 30 }
31 31
32 if (rc === '40') { 32 if (rc === '40') {
33 rc = irs.getRcFromMessage(qs.msg) || '40'; 33 rc = irs.getRcFromMessage(qs.msg) || '40';
34 } 34 }
35 35
36 let amount = null; 36 let amount = null;
37 if (rc === '00') { 37 if (rc === '00') {
38 amount = Number(qs.hrg); 38 amount = Number(qs.hrg);
39 if (!amount) { 39 if (!amount) {
40 amount = irs.getPriceFromMessage(qs.msg, config.partner.price_pattern); 40 amount = irs.getPriceFromMessage(qs.msg, config.partner.price_pattern);
41 } 41 }
42 } 42 }
43 43
44 const balance = irs.getBalanceFromMessage(qs.msg, config.partner.balance_pattern) || null;
45 if (balance) {
46 logger.verbose('REVERSE-REPORT: Balance from supplier extracted', {
47 trxId: qs.clientid,
48 balance,
49 })
50 }
51
44 partner.report({ 52 partner.report({
45 trx_id: qs.clientid, 53 trx_id: qs.clientid,
46 rc: rc, 54 rc: rc,
47 message: 'REVERSE-REPORT: ' + stringify(qs), 55 message: 'REVERSE-REPORT: ' + stringify(qs),
48 raw: stringify(qs), 56 raw: stringify(qs),
49 sn: (qs.sn ? qs.sn : null) || irs.getSnFromMessage(qs.msg, config.partner.sn_pattern) || null, 57 sn: (qs.sn ? qs.sn : null) || irs.getSnFromMessage(qs.msg, config.partner.sn_pattern) || null,
50 amount: amount, 58 amount: amount,
51 balance: (rc === '00') ? irs.getBalanceFromMessage(qs.msg, config.partner.balance_pattern) : null, 59 balance,
52 misc: {} 60 misc: {}
53 }) 61 })
54 } 62 }
55 63
56 function create() { 64 function create() {
57 http.createServer(function (req, res) { 65 http.createServer(function (req, res) {
58 res.writeHead(200, {'Content-Type': 'text/html'}); 66 res.writeHead(200, {'Content-Type': 'text/html'});
59 const qs = url.parse(req.url, true).query; 67 const qs = url.parse(req.url, true).query;
60 res.end('OK'); 68 res.end('OK');
61 69
62 const remote_ip = req.connection ? req.connection.remoteAddress : null; 70 const remote_ip = req.connection ? req.connection.remoteAddress : null;
63 logger.verbose('REVERSE-REPORT: got report from partner', {url: req.url, remote_ip: remote_ip}); 71 logger.verbose('REVERSE-REPORT: got report from partner', {url: req.url, remote_ip: remote_ip});
64 72
65 processPartnerReport(qs); 73 processPartnerReport(qs);
66 }).listen(config.reverse_report_port); 74 }).listen(config.reverse_report_port);
67 75
68 logger.info('REVERSE-REPORT: listen on port ' + config.reverse_report_port); 76 logger.info('REVERSE-REPORT: listen on port ' + config.reverse_report_port);
69 } 77 }
70 78
71 config.reverse_report_port && create(); 79 config.reverse_report_port && create();
72 80