Commit 038a3f3ea67461759ee948f3786de02c5ffa21ff

Authored by Adhidarma Hadiwinoto
1 parent 08c1ef883e
Exists in master and in 1 other branch dev

Log result

Showing 1 changed file with 6 additions and 2 deletions Inline Diff

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 res.json({ 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
106 res.json(result);
107
108 logger.verbose('Partner request responded', { xid: res.locals.xid, result });
105 } 109 }
106 110
107 router.get('/', pageIndex); 111 router.get('/', pageIndex);
108 112