Blame view

lib/partner-listener/routers/topup.js 2.82 KB
f2c18879a   Adhidarma Hadiwinoto   INQUIRY finished
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
  const express = require('express');
  
  const config = require('komodo-sdk/config');
  const logger = require('komodo-sdk/logger');
  const coreapi = require('komodo-sdk/coreapi');
  // const coreapi = require('../../coreapi');
  
  const router = express.Router();
  module.exports = router;
  
  function onInvalidParameter(missingParameter, req, res) {
      logger.verbose(`TOPUP: Undefined ${missingParameter} parameter`, {
          xid: res.locals.xid,
          ip: req.ip,
          terminal_name: req.body.terminal_name || req.query.terminal_name,
          request_id: req.body.request_id || req.query.request_id,
          product_name: req.body.product_name || req.query.product_name,
          destination: req.body.destination || req.query.destination,
      });
      res.end('INVALID REQUEST');
  }
  
  function pagePrerequisite(req, res, next) {
      if (!req.body) req.body = {};
  
      if (!req.body.terminal_name && !req.query.terminal_name) {
          onInvalidParameter('terminal_name', req, res);
          return;
      }
  
      if (!req.body.password && !req.query.password) {
          onInvalidParameter('password', req, res);
          return;
      }
  
      if (!req.body.request_id && !req.query.request_id) {
          onInvalidParameter('request_id', req, res);
          return;
      }
  
      if (!req.body.product_name && !req.query.product_name) {
          onInvalidParameter('product_name', req, res);
          return;
      }
  
      if (!req.body.destination && !req.query.destination) {
          onInvalidParameter('destination', req, res);
          return;
      }
  
      next();
  }
  
  async function pageIndex(req, res) {
      const terminalName = `${req.body.terminal_name || req.query.terminal_name}@${req.ip.replace(/^::ffff:/, '')}`;
  
      const [err, coreResponse] = await coreapi({
          xid: res.locals.xid,
          path: '/prepaid/buy',
          qs: {
              terminal_name: terminalName,
              password: req.body.password || req.query.password,
              request_id: req.body.request_id || req.query.request_id,
              product_name: req.body.product_name || req.query.product_name,
              destination: req.body.destination || req.query.destination,
              origin: config.name || 'HTTPGETX',
404034960   Adhidarma Hadiwinoto   Perbaikan paramet...
67
68
              report_ip: config.listener.core.ip || null,
              report_port: config.listener.core.port,
f2c18879a   Adhidarma Hadiwinoto   INQUIRY finished
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
              reverse_url: req.body.reverse_url || req.query.reverse_url || null,
          },
      });
  
      logger.verbose('Got CORE response', { xid: res.locals.xid, err, coreResponse });
  
      if (err) {
          logger.warn('TOPUP: ERROR on /prepaid/buy response', {
              xid: res.locals.xid, err, coreResponseTypeof: typeof coreResponse, coreResponse,
          });
          res.end('INVALID CORE RESPONSE');
          return;
      }
  
      res.end('OK');
  }
65f444c36   Adhidarma Hadiwinoto   Activating /topup
85
  // router.all('/', (req, res) => { res.status(404).end('404: Not implemented yet'); });
f2c18879a   Adhidarma Hadiwinoto   INQUIRY finished
86
  router.get('/', pagePrerequisite, pageIndex);