Commit c98ae8750d9bd145dc0cfb1951e378d5c387c4ac
1 parent
038a3f3ea6
Exists in
master
and in
1 other branch
Processing time log
Showing 2 changed files with 3 additions and 1 deletions Inline Diff
lib/listener-partner/middlewares/common.js
1 | 'use strict'; | 1 | 'use strict'; |
2 | 2 | ||
3 | const uniqid = require('uniqid'); | 3 | const uniqid = require('uniqid'); |
4 | const logger = require('komodo-sdk/logger'); | 4 | const logger = require('komodo-sdk/logger'); |
5 | 5 | ||
6 | module.exports = function common(req, res, next) { | 6 | module.exports = function common(req, res, next) { |
7 | if (req.url.search('/favicon.ico') === 0) { | 7 | if (req.url.search('/favicon.ico') === 0) { |
8 | res.sendStatus(404); | 8 | res.sendStatus(404); |
9 | return; | 9 | return; |
10 | } | 10 | } |
11 | 11 | ||
12 | res.locals.xid = uniqid(); | 12 | res.locals.xid = uniqid(); |
13 | res.locals.x_http_request_ts = new Date(); | ||
14 | |||
13 | logger.info('Got request from partner', { | 15 | logger.info('Got request from partner', { |
14 | xid: res.locals.xid, | 16 | xid: res.locals.xid, |
15 | ip: req.ip, | 17 | ip: req.ip, |
16 | method: req.method, | 18 | method: req.method, |
17 | path: req.path, | 19 | path: req.path, |
18 | url: req.url, | 20 | url: req.url, |
19 | qs: req.query, | 21 | qs: req.query, |
20 | }); | 22 | }); |
21 | next(); | 23 | next(); |
22 | }; | 24 | }; |
23 | 25 |
lib/listener-partner/routers/trx-status.js
1 | 'use strict'; | 1 | 'use strict'; |
2 | 2 | ||
3 | const express = require('express'); | 3 | const express = require('express'); |
4 | const moment = require('moment'); | 4 | const moment = require('moment'); |
5 | 5 | ||
6 | const logger = require('komodo-sdk/logger'); | 6 | const logger = require('komodo-sdk/logger'); |
7 | 7 | ||
8 | const coreapi = require('../../coreapi'); | 8 | const coreapi = require('../../coreapi'); |
9 | 9 | ||
10 | const router = express.Router(); | 10 | const router = express.Router(); |
11 | module.exports = router; | 11 | module.exports = router; |
12 | 12 | ||
13 | async function pageIndex(req, res) { | 13 | async function pageIndex(req, res) { |
14 | if (!req.body) req.body = {}; | 14 | if (!req.body) req.body = {}; |
15 | 15 | ||
16 | if (!req.body.terminal_name && !req.query.terminal_name) { | 16 | if (!req.body.terminal_name && !req.query.terminal_name) { |
17 | res.json({ | 17 | res.json({ |
18 | error: 'Parameter terminal_name tidak terdefinisi', | 18 | error: 'Parameter terminal_name tidak terdefinisi', |
19 | }); | 19 | }); |
20 | return; | 20 | return; |
21 | } | 21 | } |
22 | 22 | ||
23 | if (!req.body.password && !req.query.password) { | 23 | if (!req.body.password && !req.query.password) { |
24 | res.json({ | 24 | res.json({ |
25 | error: true, | 25 | error: true, |
26 | message: 'Parameter password tidak terdefinisi', | 26 | message: 'Parameter password tidak terdefinisi', |
27 | }); | 27 | }); |
28 | return; | 28 | return; |
29 | } | 29 | } |
30 | 30 | ||
31 | if (!req.body.request_id && !req.query.request_id) { | 31 | if (!req.body.request_id && !req.query.request_id) { |
32 | res.json({ | 32 | res.json({ |
33 | error: true, | 33 | error: true, |
34 | message: 'Parameter request_id tidak terdefinisi', | 34 | message: 'Parameter request_id tidak terdefinisi', |
35 | }); | 35 | }); |
36 | return; | 36 | return; |
37 | } | 37 | } |
38 | 38 | ||
39 | const remoteIp = req.ip.replace(/^::ffff:/, ''); | 39 | const remoteIp = req.ip.replace(/^::ffff:/, ''); |
40 | const askerTerminalName = `${req.body.terminal_name || req.query.terminal_name}@${remoteIp}`; | 40 | const askerTerminalName = `${req.body.terminal_name || req.query.terminal_name}@${remoteIp}`; |
41 | 41 | ||
42 | const coreResponse = await coreapi({ | 42 | const coreResponse = await coreapi({ |
43 | xid: res.locals.xid, | 43 | xid: res.locals.xid, |
44 | path: '/trx-status/view', | 44 | path: '/trx-status/view', |
45 | qs: { | 45 | qs: { |
46 | asker_terminal_name: askerTerminalName, | 46 | asker_terminal_name: askerTerminalName, |
47 | asker_terminal_password: req.body.password || req.query.password, | 47 | asker_terminal_password: req.body.password || req.query.password, |
48 | request_id: req.body.request_id || req.query.request_id, | 48 | request_id: req.body.request_id || req.query.request_id, |
49 | }, | 49 | }, |
50 | }); | 50 | }); |
51 | 51 | ||
52 | if (!coreResponse || !coreResponse.status) { | 52 | if (!coreResponse || !coreResponse.status) { |
53 | const msg = 'Status transaksi tidak dapat diketahui karena suatu kesalahan pada sistem'; | 53 | const msg = 'Status transaksi tidak dapat diketahui karena suatu kesalahan pada sistem'; |
54 | 54 | ||
55 | logger.warn(msg, { | 55 | logger.warn(msg, { |
56 | xid: res.locals.xid, | 56 | xid: res.locals.xid, |
57 | ip: req.ip, | 57 | ip: req.ip, |
58 | terminal_name: req.body.terminal_name || req.query.terminal_name, | 58 | terminal_name: req.body.terminal_name || req.query.terminal_name, |
59 | request_id: req.body.request_id || req.query.request_id, | 59 | request_id: req.body.request_id || req.query.request_id, |
60 | }); | 60 | }); |
61 | 61 | ||
62 | res.json({ | 62 | res.json({ |
63 | error: true, | 63 | error: true, |
64 | from_ip: remoteIp, | 64 | from_ip: remoteIp, |
65 | terminal_name: req.body.terminal_name || req.query.terminal_name, | 65 | terminal_name: req.body.terminal_name || req.query.terminal_name, |
66 | full_terminal_name: askerTerminalName, | 66 | full_terminal_name: askerTerminalName, |
67 | password: req.body.password || req.query.password, | 67 | password: req.body.password || req.query.password, |
68 | message: msg, | 68 | message: msg, |
69 | }); | 69 | }); |
70 | return; | 70 | return; |
71 | } | 71 | } |
72 | 72 | ||
73 | const trx = coreResponse && coreResponse.result ? { | 73 | const trx = coreResponse && coreResponse.result ? { |
74 | id: coreResponse.result.id, | 74 | id: coreResponse.result.id, |
75 | request_id: coreResponse.result.request_id, | 75 | request_id: coreResponse.result.request_id, |
76 | store_id: coreResponse.result.store_id, | 76 | store_id: coreResponse.result.store_id, |
77 | store_name: coreResponse.result.store_name, | 77 | store_name: coreResponse.result.store_name, |
78 | terminal_id: coreResponse.result.terminal_id, | 78 | terminal_id: coreResponse.result.terminal_id, |
79 | terminal_name: coreResponse.result.terminal_name, | 79 | terminal_name: coreResponse.result.terminal_name, |
80 | 80 | ||
81 | created: moment(coreResponse.result.created).format('YYYY-MM-DD HH:mm:ss'), | 81 | created: moment(coreResponse.result.created).format('YYYY-MM-DD HH:mm:ss'), |
82 | modified: moment(coreResponse.result.modified).format('YYYY-MM-DD HH:mm:ss'), | 82 | modified: moment(coreResponse.result.modified).format('YYYY-MM-DD HH:mm:ss'), |
83 | 83 | ||
84 | product_name: coreResponse.result.product_name, | 84 | product_name: coreResponse.result.product_name, |
85 | destination: coreResponse.result.destination, | 85 | destination: coreResponse.result.destination, |
86 | amount: coreResponse.result.amount, | 86 | amount: coreResponse.result.amount, |
87 | ending_balance: coreResponse.result.ending_balance, | 87 | ending_balance: coreResponse.result.ending_balance, |
88 | rc: coreResponse.result.rc, | 88 | rc: coreResponse.result.rc, |
89 | message: coreResponse.result.reply_message, | 89 | message: coreResponse.result.reply_message, |
90 | sn: coreResponse.result.sn, | 90 | sn: coreResponse.result.sn, |
91 | } | 91 | } |
92 | : null; | 92 | : null; |
93 | 93 | ||
94 | const result = { | 94 | const result = { |
95 | error: coreResponse.status !== 'OK', | 95 | error: coreResponse.status !== 'OK', |
96 | from_ip: remoteIp, | 96 | from_ip: remoteIp, |
97 | terminal_name: req.body.terminal_name || req.query.terminal_name, | 97 | terminal_name: req.body.terminal_name || req.query.terminal_name, |
98 | full_terminal_name: askerTerminalName, | 98 | full_terminal_name: askerTerminalName, |
99 | password: req.body.password || req.query.password, | 99 | password: req.body.password || req.query.password, |
100 | message: coreResponse.message, | 100 | message: coreResponse.message, |
101 | trx_found: Boolean(trx), | 101 | trx_found: Boolean(trx), |
102 | trx, | 102 | trx, |
103 | // original_trx: coreResponse.result, | 103 | // original_trx: coreResponse.result, |
104 | }; | 104 | }; |
105 | 105 | ||
106 | res.json(result); | 106 | res.json(result); |
107 | 107 | ||
108 | logger.verbose('Partner request responded', { xid: res.locals.xid, result }); | 108 | logger.verbose('Partner request responded', { xid: res.locals.xid, processing_time_in_ms: new Date() - res.locals.x_http_request_ts, result }); |
109 | } | 109 | } |
110 | 110 | ||
111 | router.get('/', pageIndex); | 111 | router.get('/', pageIndex); |
112 | 112 |