Blame view

lib/hit/prepaid.js 3.46 KB
d4661aa84   Adhidarma Hadiwinoto   Ready to test pre...
1
2
3
4
5
6
7
8
9
10
11
12
  const MODULE_NAME = 'HIT.PREPAID';
  
  const axios = require('axios').default;
  const urljoin = require('url-join');
  const uniqid = require('uniqid');
  
  const config = require('komodo-sdk/config');
  const logger = require('komodo-sdk/logger');
  
  const report = require('../report/prepaid');
  const translateRc = require('../translate-rc');
  const composeCallbackUrl = require('./compose-callback-url');
385d8ff59   Adhidarma Hadiwinoto   PREPAID topup tested
13
  const dumpReqRes = require('./dump-req-res');
d4661aa84   Adhidarma Hadiwinoto   Ready to test pre...
14
15
16
  
  module.exports = async (task, isAdvice) => {
      const xid = uniqid();
385d8ff59   Adhidarma Hadiwinoto   PREPAID topup tested
17
18
19
20
21
      logger.verbose(`${MODULE_NAME} 2272F01F: Processing task`, {
          xid,
          isAdvice,
          task,
      });
d4661aa84   Adhidarma Hadiwinoto   Ready to test pre...
22
23
24
25
26
27
28
29
30
31
32
33
      const params = {
          request_id: task.trx_id,
          terminal_name: config.partner.terminal_name,
          password: config.partner.password,
          destination: task.destination,
          product_name: task.remote_product,
          reverse_url: composeCallbackUrl(xid, false),
      };
  
      const endpointUrl = isAdvice
          ? urljoin(config.partner.url, '/trx-status')
          : urljoin(config.partner.url, '/topup');
385d8ff59   Adhidarma Hadiwinoto   PREPAID topup tested
34
      let lastResponse = null;
d4661aa84   Adhidarma Hadiwinoto   Ready to test pre...
35
36
37
      try {
          logger.verbose(`${MODULE_NAME} 4AAD4F99: Going to HIT prepaid endpoint`, {
              xid,
d4661aa84   Adhidarma Hadiwinoto   Ready to test pre...
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
67
68
69
              endpointUrl,
              params,
          });
  
          const response = await axios.get(endpointUrl, {
              headers: {
                  'User-Agent': 'KOMODO-GW-HTTPGETX',
              },
              timeout: config.partner.hit_timeout_ms || 60 * 1000,
              params,
          });
  
          if (!response) {
              const e = new Error(`${MODULE_NAME} 8CF4E04D: Empty response`);
              e.rc = '68';
              e.response = response;
              throw e;
          }
  
          if (!response.data) {
              const e = new Error(`${MODULE_NAME} E72B5A53: Empty response data`);
              e.rc = '68';
              e.response = response;
              throw e;
          }
  
          if (typeof response.data !== 'object') {
              const e = new Error(`${MODULE_NAME} 507680AB: Response data is not a JSON`);
              e.rc = '68';
              e.response = response;
              throw e;
          }
385d8ff59   Adhidarma Hadiwinoto   PREPAID topup tested
70
          lastResponse = response;
d4661aa84   Adhidarma Hadiwinoto   Ready to test pre...
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
          logger.verbose(`${MODULE_NAME} E51AFBBA: Got a direct response`, {
              xid,
              responseBody: response.data,
          });
  
          report(xid, {
              trx_id: task.trx_id,
              rc: response.data.rc ? translateRc[response.data.rc] || response.data.rc
                  : '68',
              sn: response.data.sn || null,
              amount: 0,
              balance: 0,
              message: {
                  xid,
                  'DIRECT-RESPONSE': response.data,
                  'IS-ADVICE': !!isAdvice,
              },
          });
      } catch (e) {
          const rc = e.rc || '68';
385d8ff59   Adhidarma Hadiwinoto   PREPAID topup tested
91
          lastResponse = e.response;
d4661aa84   Adhidarma Hadiwinoto   Ready to test pre...
92
93
94
95
96
97
98
99
100
101
102
103
104
105
          report(xid, {
              trx_id: task.trx_id,
              rc,
              message: {
                  xid,
                  'KOMODO-GW-ERROR': {
                      eCode: e.code,
                      eMessage: e.message,
                      responseHttpStatus: e.response && e.response.status,
                      responseBody: e.response && e.response.data,
                  },
                  'IS-ADVICE': !!isAdvice,
              },
          });
385d8ff59   Adhidarma Hadiwinoto   PREPAID topup tested
106
107
108
109
110
111
112
113
114
115
116
      } finally {
          dumpReqRes(
              xid,
              task,
              'GET',
              endpointUrl,
              params,
              lastResponse && lastResponse.data,
              lastResponse && lastResponse.status,
              lastResponse,
          );
d4661aa84   Adhidarma Hadiwinoto   Ready to test pre...
117
118
      }
  };