Commit 2ada676a93ad8133bfc456a23521e68678673ea2

Authored by Adhidarma Hadiwinoto
1 parent d0a6e83038
Exists in master

Perbaikan irs reverse report

Showing 1 changed file with 1 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( 40 amount = irs.getPriceFromMessage(
41 qs.msg, 41 qs.msg,
42 config.partner.price_pattern || config.price_pattern || 42 config.partner.price_pattern || config.price_pattern
43 ); 43 );
44 } 44 }
45 } 45 }
46 46
47 const balance = irs.getBalanceFromMessage(qs.msg, config.partner.balance_pattern) || null; 47 const balance = irs.getBalanceFromMessage(qs.msg, config.partner.balance_pattern) || null;
48 if (balance) { 48 if (balance) {
49 logger.verbose('REVERSE-REPORT: Balance from supplier extracted', { 49 logger.verbose('REVERSE-REPORT: Balance from supplier extracted', {
50 trxId: qs.clientid, 50 trxId: qs.clientid,
51 balance, 51 balance,
52 }) 52 })
53 } 53 }
54 54
55 partner.report({ 55 partner.report({
56 trx_id: qs.clientid, 56 trx_id: qs.clientid,
57 rc: rc, 57 rc: rc,
58 message: 'REVERSE-REPORT: ' + stringify(qs), 58 message: 'REVERSE-REPORT: ' + stringify(qs),
59 raw: stringify(qs), 59 raw: stringify(qs),
60 sn: (qs.sn ? qs.sn : null) || irs.getSnFromMessage(qs.msg, config.partner.sn_pattern) || null, 60 sn: (qs.sn ? qs.sn : null) || irs.getSnFromMessage(qs.msg, config.partner.sn_pattern) || null,
61 amount: amount, 61 amount: amount,
62 balance, 62 balance,
63 misc: {} 63 misc: {}
64 }) 64 })
65 } 65 }
66 66
67 function create() { 67 function create() {
68 http.createServer(function (req, res) { 68 http.createServer(function (req, res) {
69 res.writeHead(200, {'Content-Type': 'text/html'}); 69 res.writeHead(200, {'Content-Type': 'text/html'});
70 const qs = url.parse(req.url, true).query; 70 const qs = url.parse(req.url, true).query;
71 res.end('OK'); 71 res.end('OK');
72 72
73 const remote_ip = req.connection ? req.connection.remoteAddress : null; 73 const remote_ip = req.connection ? req.connection.remoteAddress : null;
74 logger.verbose('REVERSE-REPORT: got report from partner', {url: req.url, remote_ip: remote_ip}); 74 logger.verbose('REVERSE-REPORT: got report from partner', {url: req.url, remote_ip: remote_ip});
75 75
76 processPartnerReport(qs); 76 processPartnerReport(qs);
77 }).listen(config.reverse_report_port); 77 }).listen(config.reverse_report_port);
78 78
79 logger.info('REVERSE-REPORT: listen on port ' + config.reverse_report_port); 79 logger.info('REVERSE-REPORT: listen on port ' + config.reverse_report_port);
80 } 80 }
81 81
82 config.reverse_report_port && create(); 82 config.reverse_report_port && create();
83 83