Commit bcbd0b93fdcf823a5f240264b116e365d52b07d7
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 |