Commit 70df828c5a86db21d00d54de72b0bedd5efe50d2
1 parent
9e61d939fc
Exists in
master
and in
1 other branch
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 |