Blame view

lib/partner-listener/routers/trx-status.js 4.04 KB
12f6d059c   Adhidarma Hadiwinoto   LOG hashtag on tr...
1
  const MODULE_NAME = 'PARTNER-LISTENER.ROUTERS.TRX-STATUS';
ab5828535   Adhidarma Hadiwinoto   Ready to rock
2
3
  const express = require('express');
  const moment = require('moment');
810fa18da   Adhidarma Hadiwinoto   Migrate to tektra...
4
  const logger = require('tektrans-logger');
ab5828535   Adhidarma Hadiwinoto   Ready to rock
5
6
  
  const coreapi = require('../../coreapi');
732c359a7   Adhidarma Hadiwinoto   Partner listener ...
7
  const dumper = require('../dumper');
ab5828535   Adhidarma Hadiwinoto   Ready to rock
8
9
10
11
12
  
  const router = express.Router();
  module.exports = router;
  
  async function pageIndex(req, res) {
12f6d059c   Adhidarma Hadiwinoto   LOG hashtag on tr...
13
      const { xid } = res.locals;
ab5828535   Adhidarma Hadiwinoto   Ready to rock
14
15
16
      if (!req.body) req.body = {};
  
      if (!req.body.terminal_name && !req.query.terminal_name) {
732c359a7   Adhidarma Hadiwinoto   Partner listener ...
17
          const msg = 'Parameter terminal_name tidak terdefinisi';
ab5828535   Adhidarma Hadiwinoto   Ready to rock
18
          res.json({
12f6d059c   Adhidarma Hadiwinoto   LOG hashtag on tr...
19
20
              httpgetx_xid: xid,
              error: true,
732c359a7   Adhidarma Hadiwinoto   Partner listener ...
21
              message: msg,
ab5828535   Adhidarma Hadiwinoto   Ready to rock
22
          });
732c359a7   Adhidarma Hadiwinoto   Partner listener ...
23
24
  
          dumper(xid, req, msg);
ab5828535   Adhidarma Hadiwinoto   Ready to rock
25
26
27
28
          return;
      }
  
      if (!req.body.password && !req.query.password) {
732c359a7   Adhidarma Hadiwinoto   Partner listener ...
29
          const msg = 'Parameter password tidak terdefinisi';
ab5828535   Adhidarma Hadiwinoto   Ready to rock
30
          res.json({
12f6d059c   Adhidarma Hadiwinoto   LOG hashtag on tr...
31
              httpgetx_xid: xid,
ab5828535   Adhidarma Hadiwinoto   Ready to rock
32
              error: true,
732c359a7   Adhidarma Hadiwinoto   Partner listener ...
33
              message: msg,
ab5828535   Adhidarma Hadiwinoto   Ready to rock
34
          });
732c359a7   Adhidarma Hadiwinoto   Partner listener ...
35
36
  
          dumper(xid, req, msg);
ab5828535   Adhidarma Hadiwinoto   Ready to rock
37
38
39
40
          return;
      }
  
      if (!req.body.request_id && !req.query.request_id) {
732c359a7   Adhidarma Hadiwinoto   Partner listener ...
41
          const msg = 'Parameter request_id tidak terdefinisi';
ab5828535   Adhidarma Hadiwinoto   Ready to rock
42
          res.json({
12f6d059c   Adhidarma Hadiwinoto   LOG hashtag on tr...
43
              httpgetx_xid: xid,
ab5828535   Adhidarma Hadiwinoto   Ready to rock
44
              error: true,
732c359a7   Adhidarma Hadiwinoto   Partner listener ...
45
              message: msg,
ab5828535   Adhidarma Hadiwinoto   Ready to rock
46
          });
732c359a7   Adhidarma Hadiwinoto   Partner listener ...
47
48
  
          dumper(xid, req, msg);
ab5828535   Adhidarma Hadiwinoto   Ready to rock
49
50
51
52
53
54
55
          return;
      }
  
      const remoteIp = req.ip.replace(/^::ffff:/, '');
      const askerTerminalName = `${req.body.terminal_name || req.query.terminal_name}@${remoteIp}`;
  
      const coreResponse = await coreapi({
12f6d059c   Adhidarma Hadiwinoto   LOG hashtag on tr...
56
          xid,
ab5828535   Adhidarma Hadiwinoto   Ready to rock
57
58
59
60
61
62
63
64
65
66
          path: '/trx-status/view',
          qs: {
              asker_terminal_name: askerTerminalName,
              asker_terminal_password: req.body.password || req.query.password,
              request_id: req.body.request_id || req.query.request_id,
          },
      });
  
      if (!coreResponse || !coreResponse.status) {
          const msg = 'Status transaksi tidak dapat diketahui karena suatu kesalahan pada sistem';
12f6d059c   Adhidarma Hadiwinoto   LOG hashtag on tr...
67
68
          logger.warn(`${MODULE_NAME} 9983DB34: ${msg}`, {
              xid,
ab5828535   Adhidarma Hadiwinoto   Ready to rock
69
70
71
72
              ip: req.ip,
              terminal_name: req.body.terminal_name || req.query.terminal_name,
              request_id: req.body.request_id || req.query.request_id,
          });
732c359a7   Adhidarma Hadiwinoto   Partner listener ...
73
          const responseBody = {
12f6d059c   Adhidarma Hadiwinoto   LOG hashtag on tr...
74
              httpgetx_xid: xid,
ab5828535   Adhidarma Hadiwinoto   Ready to rock
75
76
77
78
79
80
              error: true,
              from_ip: remoteIp,
              terminal_name: req.body.terminal_name || req.query.terminal_name,
              full_terminal_name: askerTerminalName,
              password: req.body.password || req.query.password,
              message: msg,
732c359a7   Adhidarma Hadiwinoto   Partner listener ...
81
82
83
84
          };
  
          res.json(responseBody);
          dumper(xid, req, responseBody);
ab5828535   Adhidarma Hadiwinoto   Ready to rock
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
          return;
      }
  
      const trx = coreResponse && coreResponse.result ? {
          id: coreResponse.result.id,
          request_id: coreResponse.result.request_id,
          store_id: coreResponse.result.store_id,
          store_name: coreResponse.result.store_name,
          terminal_id: coreResponse.result.terminal_id,
          terminal_name: coreResponse.result.terminal_name,
  
          created: moment(coreResponse.result.created).format('YYYY-MM-DD HH:mm:ss'),
          modified: moment(coreResponse.result.modified).format('YYYY-MM-DD HH:mm:ss'),
  
          product_name: coreResponse.result.product_name,
          destination: coreResponse.result.destination,
          amount: coreResponse.result.amount,
          ending_balance: coreResponse.result.ending_balance,
          rc: coreResponse.result.rc,
          message: coreResponse.result.reply_message,
          sn: coreResponse.result.sn,
      }
          : null;
038a3f3ea   Adhidarma Hadiwinoto   Log result
108
      const result = {
12f6d059c   Adhidarma Hadiwinoto   LOG hashtag on tr...
109
          httpgetx_xid: xid,
ab5828535   Adhidarma Hadiwinoto   Ready to rock
110
111
112
113
          error: coreResponse.status !== 'OK',
          from_ip: remoteIp,
          terminal_name: req.body.terminal_name || req.query.terminal_name,
          full_terminal_name: askerTerminalName,
ab5828535   Adhidarma Hadiwinoto   Ready to rock
114
          message: coreResponse.message,
29abebf10   Adhidarma Hadiwinoto   Hapus field passw...
115
          trx_found: !!trx,
ab5828535   Adhidarma Hadiwinoto   Ready to rock
116
117
          trx,
          // original_trx: coreResponse.result,
038a3f3ea   Adhidarma Hadiwinoto   Log result
118
119
120
      };
  
      res.json(result);
12f6d059c   Adhidarma Hadiwinoto   LOG hashtag on tr...
121
122
123
124
125
      logger.info(`${MODULE_NAME} 480C4BB0: Partner request responded`, {
          xid,
          processing_time_in_ms: new Date() - res.locals.x_http_request_ts,
          result,
      });
732c359a7   Adhidarma Hadiwinoto   Partner listener ...
126
127
  
      dumper(xid, req, result);
ab5828535   Adhidarma Hadiwinoto   Ready to rock
128
129
130
  }
  
  router.get('/', pageIndex);