Commit 2ada676a93ad8133bfc456a23521e68678673ea2
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 |