Commit 70df828c5a86db21d00d54de72b0bedd5efe50d2

Authored by Adhidarma Hadiwinoto
1 parent 9e61d939fc
Exists in master and in 1 other branch dev

TOPUP: undefined on missing amount and ending_balance

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

lib/partner-listener/routers/topup.js
1 const MODULE_NAME = 'PARTNER-LISTENER.ROUTER.TOPUP'; 1 const MODULE_NAME = 'PARTNER-LISTENER.ROUTER.TOPUP';
2 2
3 const express = require('express'); 3 const express = require('express');
4 4
5 const config = require('komodo-sdk/config'); 5 const config = require('komodo-sdk/config');
6 const logger = require('komodo-sdk/logger'); 6 const logger = require('komodo-sdk/logger');
7 const coreapi = require('komodo-sdk/coreapi'); 7 const coreapi = require('komodo-sdk/coreapi');
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 function onInvalidParameter(missingParameter, req, res) { 13 function onInvalidParameter(missingParameter, req, res) {
14 logger.verbose(`${MODULE_NAME} 1536D577: Undefined ${missingParameter} parameter`, { 14 logger.verbose(`${MODULE_NAME} 1536D577: Undefined ${missingParameter} parameter`, {
15 xid: res.locals.xid, 15 xid: res.locals.xid,
16 ip: req.ip, 16 ip: req.ip,
17 terminal_name: req.body.terminal_name || req.query.terminal_name, 17 terminal_name: req.body.terminal_name || req.query.terminal_name,
18 request_id: req.body.request_id || req.query.request_id, 18 request_id: req.body.request_id || req.query.request_id,
19 product_name: req.body.product_name || req.query.product_name, 19 product_name: req.body.product_name || req.query.product_name,
20 destination: req.body.destination || req.query.destination, 20 destination: req.body.destination || req.query.destination,
21 }); 21 });
22 res.end('INVALID REQUEST'); 22 res.end('INVALID REQUEST');
23 } 23 }
24 24
25 function pagePrerequisite(req, res, next) { 25 function pagePrerequisite(req, res, next) {
26 if (!req.body) req.body = {}; 26 if (!req.body) req.body = {};
27 27
28 if (!req.body.terminal_name && !req.query.terminal_name) { 28 if (!req.body.terminal_name && !req.query.terminal_name) {
29 onInvalidParameter('terminal_name', req, res); 29 onInvalidParameter('terminal_name', req, res);
30 return; 30 return;
31 } 31 }
32 32
33 if (!req.body.password && !req.query.password) { 33 if (!req.body.password && !req.query.password) {
34 onInvalidParameter('password', req, res); 34 onInvalidParameter('password', req, res);
35 return; 35 return;
36 } 36 }
37 37
38 if (!req.body.request_id && !req.query.request_id) { 38 if (!req.body.request_id && !req.query.request_id) {
39 onInvalidParameter('request_id', req, res); 39 onInvalidParameter('request_id', req, res);
40 return; 40 return;
41 } 41 }
42 42
43 if (!req.body.product_name && !req.query.product_name) { 43 if (!req.body.product_name && !req.query.product_name) {
44 onInvalidParameter('product_name', req, res); 44 onInvalidParameter('product_name', req, res);
45 return; 45 return;
46 } 46 }
47 47
48 if (!req.body.destination && !req.query.destination) { 48 if (!req.body.destination && !req.query.destination) {
49 onInvalidParameter('destination', req, res); 49 onInvalidParameter('destination', req, res);
50 return; 50 return;
51 } 51 }
52 52
53 next(); 53 next();
54 } 54 }
55 55
56 async function pageIndex(req, res) { 56 async function pageIndex(req, res) {
57 const { xid } = res.locals; 57 const { xid } = res.locals;
58 58
59 const terminalName = `${req.body.terminal_name || req.query.terminal_name}@${req.ip.replace(/^::ffff:/, '')}`; 59 const terminalName = `${req.body.terminal_name || req.query.terminal_name}@${req.ip.replace(/^::ffff:/, '')}`;
60 60
61 const [err, coreResponse] = await coreapi({ 61 const [err, coreResponse] = await coreapi({
62 xid, 62 xid,
63 path: '/prepaid/buy', 63 path: '/prepaid/buy',
64 qs: { 64 qs: {
65 terminal_name: terminalName, 65 terminal_name: terminalName,
66 password: req.body.password || req.query.password, 66 password: req.body.password || req.query.password,
67 request_id: req.body.request_id || req.query.request_id, 67 request_id: req.body.request_id || req.query.request_id,
68 product_name: req.body.product_name || req.query.product_name, 68 product_name: req.body.product_name || req.query.product_name,
69 destination: req.body.destination || req.query.destination, 69 destination: req.body.destination || req.query.destination,
70 origin: config.name || 'HTTPGETX', 70 origin: config.name || 'HTTPGETX',
71 report_ip: config.listener.core.ip || null, 71 report_ip: config.listener.core.ip || null,
72 report_port: config.listener.core.port, 72 report_port: config.listener.core.port,
73 reverse_url: req.body.reverse_url || req.query.reverse_url || null, 73 reverse_url: req.body.reverse_url || req.query.reverse_url || null,
74 }, 74 },
75 }); 75 });
76 76
77 if (err || !coreResponse) { 77 if (err || !coreResponse) {
78 logger.warn(`${MODULE_NAME} 8DEBE15F: ERROR on /prepaid/buy response`, { 78 logger.warn(`${MODULE_NAME} 8DEBE15F: ERROR on /prepaid/buy response`, {
79 xid, 79 xid,
80 err, 80 err,
81 coreResponseTypeof: typeof coreResponse, 81 coreResponseTypeof: typeof coreResponse,
82 coreResponse, 82 coreResponse,
83 }); 83 });
84 res.end('INVALID CORE RESPONSE'); 84 res.end('INVALID CORE RESPONSE');
85 return; 85 return;
86 } 86 }
87 87
88 logger.verbose(`${MODULE_NAME} 2528A9B4: Got CORE response`, { 88 logger.verbose(`${MODULE_NAME} 2528A9B4: Got CORE response`, {
89 xid, 89 xid,
90 coreResponse, 90 coreResponse,
91 }); 91 });
92 92
93 const responseToPartner = { 93 const responseToPartner = {
94 httpgetx_xid: xid, 94 httpgetx_xid: xid,
95 request_id: coreResponse.request_id, 95 request_id: coreResponse.request_id,
96 transaction_id: coreResponse.transaction_id, 96 transaction_id: coreResponse.transaction_id,
97 transaction_date: coreResponse.transaction_date, 97 transaction_date: coreResponse.transaction_date,
98 store_name: coreResponse.store_name, 98 store_name: coreResponse.store_name,
99 terminal_name: coreResponse.terminal_name, 99 terminal_name: coreResponse.terminal_name,
100 product_name: coreResponse.product_name, 100 product_name: coreResponse.product_name,
101 destination: coreResponse.destination, 101 destination: coreResponse.destination,
102 rc: coreResponse.rc, 102 rc: coreResponse.rc,
103 sn: coreResponse.sn, 103 sn: coreResponse.sn,
104 amount: Number(coreResponse.amount) || null, 104 amount: Number(coreResponse.amount) || undefined,
105 ending_balance: Number(coreResponse.ending_balance) || null, 105 ending_balance: Number(coreResponse.ending_balance) || undefined,
106 message: coreResponse.message, 106 message: coreResponse.message,
107 }; 107 };
108 108
109 res.json(responseToPartner); 109 res.json(responseToPartner);
110 } 110 }
111 111
112 // router.all('/', (req, res) => { res.status(404).end('404: Not implemented yet'); }); 112 // router.all('/', (req, res) => { res.status(404).end('404: Not implemented yet'); });
113 router.get('/', pagePrerequisite, pageIndex); 113 router.get('/', pagePrerequisite, pageIndex);
114 114