Commit fd31573763330fd814d267d42d04264b7193ee18

Authored by Adhidarma Hadiwinoto
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