Commit fd31573763330fd814d267d42d04264b7193ee18
1 parent
525f0bf553
Exists in
master
Perbaikan dumper dan base_bill_amount
Showing 2 changed files with 2 additions and 2 deletions Inline Diff
lib/callback/dumper.js
1 | const MODULE_NAME = 'CALLBACK.DUMPER'; | 1 | const MODULE_NAME = 'CALLBACK.DUMPER'; |
2 | 2 | ||
3 | const fs = require('fs'); | 3 | const fs = require('fs'); |
4 | const fsPromise = require('fs').promises; | 4 | const fsPromise = require('fs').promises; |
5 | const path = require('path'); | 5 | const path = require('path'); |
6 | const config = require('komodo-sdk/config'); | 6 | const config = require('komodo-sdk/config'); |
7 | const logger = require('komodo-sdk/logger'); | 7 | const logger = require('komodo-sdk/logger'); |
8 | const moment = require('moment'); | 8 | const moment = require('moment'); |
9 | 9 | ||
10 | const baseDumpDir = 'dump'; | 10 | const baseDumpDir = 'dump'; |
11 | const callbackDumpDir = path.join(baseDumpDir, 'callback'); | 11 | const callbackDumpDir = path.join(baseDumpDir, 'callback'); |
12 | 12 | ||
13 | if (!fs.existsSync(baseDumpDir)) { | 13 | if (!fs.existsSync(baseDumpDir)) { |
14 | logger.verbose(`${MODULE_NAME} D7E3D88E: Creating base dump dir`); | 14 | logger.verbose(`${MODULE_NAME} D7E3D88E: Creating base dump dir`); |
15 | fs.mkdirSync(baseDumpDir); | 15 | fs.mkdirSync(baseDumpDir); |
16 | } | 16 | } |
17 | 17 | ||
18 | if (!fs.existsSync(callbackDumpDir)) { | 18 | if (!fs.existsSync(callbackDumpDir)) { |
19 | logger.verbose(`${MODULE_NAME} 002EC4A8: Creating callback dump dir`); | 19 | logger.verbose(`${MODULE_NAME} 002EC4A8: Creating callback dump dir`); |
20 | fs.mkdirSync(callbackDumpDir); | 20 | fs.mkdirSync(callbackDumpDir); |
21 | } | 21 | } |
22 | 22 | ||
23 | module.exports = async (req, res, next) => { | 23 | module.exports = async (req, res, next) => { |
24 | if ( | 24 | if ( |
25 | !config | 25 | !config |
26 | || !config.partner | 26 | || !config.partner |
27 | || !config.partner.callback | 27 | || !config.partner.callback |
28 | || !config.partner.callback.dump_request | 28 | || !config.partner.callback.dump_request |
29 | ) { | 29 | ) { |
30 | next(); | 30 | next(); |
31 | return; | 31 | return; |
32 | } | 32 | } |
33 | 33 | ||
34 | const { xid } = res.locals; | 34 | const { xid } = res.locals; |
35 | 35 | ||
36 | const data = `-------- | 36 | const data = `-------- |
37 | XID: ${xid} | 37 | XID: ${xid} |
38 | PID: ${process.pid} | 38 | PID: ${process.pid} |
39 | DATE: ${moment().format('YYYY-MM-DD HH:mm:ss.SSS')} | 39 | DATE: ${moment().format('YYYY-MM-DD HH:mm:ss.SSS')} |
40 | REMOTE-ADDR: ${req.ip} | 40 | REMOTE-ADDR: ${req.ip} |
41 | USER-AGENT: ${req.get('user-agent')} | 41 | USER-AGENT: ${req.get('user-agent')} |
42 | METHOD: ${req.method} | 42 | METHOD: ${req.method} |
43 | URL: ${req.url} | 43 | URL: ${req.url} |
44 | 44 | ||
45 | QUERY-STRING: | 45 | QUERY-STRING: |
46 | ${JSON.stringify(req.query, null, 2)} | 46 | ${JSON.stringify(req.query, null, 2)} |
47 | 47 | ||
48 | REQ-CONTENT-TYPE: ${req.get('content-type')} | 48 | REQ-CONTENT-TYPE: ${req.get('content-type')} |
49 | REQ-BODY-TYPEOF: ${typeof req.body} | 49 | REQ-BODY-TYPEOF: ${typeof req.body} |
50 | REQ-BODY: | 50 | REQ-BODY: |
51 | ${(req.body && typeof req.body === 'object' && JSON.stringify(req.body, null, 2)) || req.body} | 51 | ${(req.body && typeof req.body === 'object' && JSON.stringify(req.body, null, 2)) || req.body} |
52 | `; | 52 | `; |
53 | 53 | ||
54 | const dumpDir = path.join( | 54 | const dumpDir = path.join( |
55 | callbackDumpDir, | 55 | callbackDumpDir, |
56 | moment().format('YYYY-MM-DD'), | 56 | moment().format('YYYY-MM-DD'), |
57 | ); | 57 | ); |
58 | 58 | ||
59 | try { | 59 | try { |
60 | await fsPromise.stat(dumpDir); | 60 | await fsPromise.stat(dumpDir); |
61 | } catch { | 61 | } catch (e) { |
62 | await fsPromise.mkdir(dumpDir, { recursive: true }); | 62 | await fsPromise.mkdir(dumpDir, { recursive: true }); |
63 | } | 63 | } |
64 | 64 | ||
65 | await fsPromise.writeFile( | 65 | await fsPromise.writeFile( |
66 | path.join( | 66 | path.join( |
67 | dumpDir, | 67 | dumpDir, |
68 | [ | 68 | [ |
69 | moment().format('YYMMDD_HHmmss_SSS'), | 69 | moment().format('YYMMDD_HHmmss_SSS'), |
70 | xid, | 70 | xid, |
71 | ].join('_'), | 71 | ].join('_'), |
72 | ), | 72 | ), |
73 | data, | 73 | data, |
74 | ); | 74 | ); |
75 | 75 | ||
76 | await fsPromise.writeFile( | 76 | await fsPromise.writeFile( |
77 | path.join(callbackDumpDir, 'last'), | 77 | path.join(callbackDumpDir, 'last'), |
78 | data, | 78 | data, |
79 | ); | 79 | ); |
80 | 80 | ||
81 | next(); | 81 | next(); |
82 | }; | 82 | }; |
83 | 83 |
lib/callback/handler-postpaid.js
1 | const MODULE_NAME = 'CALLBACK.HANDLER-POSTPAID'; | 1 | const MODULE_NAME = 'CALLBACK.HANDLER-POSTPAID'; |
2 | 2 | ||
3 | const logger = require('komodo-sdk/logger'); | 3 | const logger = require('komodo-sdk/logger'); |
4 | const report = require('../report/postpaid'); | 4 | const report = require('../report/postpaid'); |
5 | const getFromReq = require('../get-from-params-body-qs'); | 5 | const getFromReq = require('../get-from-params-body-qs'); |
6 | const translateRc = require('../translate-rc'); | 6 | const translateRc = require('../translate-rc'); |
7 | 7 | ||
8 | module.exports = (req, res) => { | 8 | module.exports = (req, res) => { |
9 | const { xid } = res.locals; | 9 | const { xid } = res.locals; |
10 | res.json({ | 10 | res.json({ |
11 | status: 'OK', | 11 | status: 'OK', |
12 | error: null, | 12 | error: null, |
13 | ts: new Date(), | 13 | ts: new Date(), |
14 | xid, | 14 | xid, |
15 | }); | 15 | }); |
16 | 16 | ||
17 | const reportCommand = getFromReq(req, 'command'); | 17 | const reportCommand = getFromReq(req, 'command'); |
18 | if (!reportCommand) { | 18 | if (!reportCommand) { |
19 | logger.warn(`${MODULE_NAME} C7A4A26C: Unknown command`, { xid }); | 19 | logger.warn(`${MODULE_NAME} C7A4A26C: Unknown command`, { xid }); |
20 | return; | 20 | return; |
21 | } | 21 | } |
22 | 22 | ||
23 | const isInquiry = reportCommand === 'INQUIRY'; | 23 | const isInquiry = reportCommand === 'INQUIRY'; |
24 | 24 | ||
25 | const rcFromRequest = getFromReq(req, 'rc'); | 25 | const rcFromRequest = getFromReq(req, 'rc'); |
26 | const translatedRc = rcFromRequest && (translateRc[rcFromRequest] || rcFromRequest); | 26 | const translatedRc = rcFromRequest && (translateRc[rcFromRequest] || rcFromRequest); |
27 | logger.verbose(`${MODULE_NAME} 475DA596: RC translated`, { | 27 | logger.verbose(`${MODULE_NAME} 475DA596: RC translated`, { |
28 | xid, | 28 | xid, |
29 | reportCommand, | 29 | reportCommand, |
30 | rcFromRequest, | 30 | rcFromRequest, |
31 | translatedRc, | 31 | translatedRc, |
32 | }); | 32 | }); |
33 | 33 | ||
34 | report(xid, { | 34 | report(xid, { |
35 | command: reportCommand, | 35 | command: reportCommand, |
36 | trx_id: getFromReq(req, 'request_id'), | 36 | trx_id: getFromReq(req, 'request_id'), |
37 | rc: translatedRc | 37 | rc: translatedRc |
38 | || (isInquiry && '90') | 38 | || (isInquiry && '90') |
39 | || '68', | 39 | || '68', |
40 | sn: getFromReq(req, 'sn'), | 40 | sn: getFromReq(req, 'sn'), |
41 | amount: Number(getFromReq(req, 'amount')) || undefined, | 41 | amount: Number(getFromReq(req, 'amount')) || undefined, |
42 | balance: Number(getFromReq(req, 'ending_balance')) || undefined, | 42 | balance: Number(getFromReq(req, 'ending_balance')) || undefined, |
43 | 43 | ||
44 | amount_to_charge: (isInquiry && Number(getFromReq(req, 'amount_to_charge'))) | 44 | amount_to_charge: (isInquiry && Number(getFromReq(req, 'amount_to_charge'))) |
45 | || undefined, | 45 | || undefined, |
46 | bill_count: Number(getFromReq(req, 'bill_count')) || undefined, | 46 | bill_count: Number(getFromReq(req, 'bill_count')) || undefined, |
47 | base_bill_amount: Number(getFromReq(req, 'base_bill_amount')) || undefined, | 47 | base_bill_amount: Number(getFromReq(req, 'bill_amount')) || Number(getFromReq(req, 'base_bill_amount')) || undefined, |
48 | 48 | ||
49 | message: { | 49 | message: { |
50 | xid, | 50 | xid, |
51 | CALLBACK: { | 51 | CALLBACK: { |
52 | ip: req.ip, | 52 | ip: req.ip, |
53 | method: req.method, | 53 | method: req.method, |
54 | body: req.body, | 54 | body: req.body, |
55 | qs: req.query, | 55 | qs: req.query, |
56 | }, | 56 | }, |
57 | }, | 57 | }, |
58 | }); | 58 | }); |
59 | }; | 59 | }; |
60 | 60 |