Blame view
lib/partner-listener/routers/topup.js
4.04 KB
9e61d939f
|
1 |
const MODULE_NAME = 'PARTNER-LISTENER.ROUTER.TOPUP'; |
f2c18879a
|
2 3 4 |
const express = require('express'); const config = require('komodo-sdk/config'); |
810fa18da
|
5 |
const logger = require('tektrans-logger'); |
f2c18879a
|
6 7 |
const coreapi = require('komodo-sdk/coreapi'); // const coreapi = require('../../coreapi'); |
cd4feda87
|
8 |
const matrix = require('../../matrix'); |
732c359a7
|
9 |
const dumper = require('../dumper'); |
f2c18879a
|
10 11 12 13 14 |
const router = express.Router(); module.exports = router; function onInvalidParameter(missingParameter, req, res) { |
9e61d939f
|
15 |
logger.verbose(`${MODULE_NAME} 1536D577: Undefined ${missingParameter} parameter`, { |
f2c18879a
|
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 |
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) { |
9e61d939f
|
58 |
const { xid } = res.locals; |
f2c18879a
|
59 |
const terminalName = `${req.body.terminal_name || req.query.terminal_name}@${req.ip.replace(/^::ffff:/, '')}`; |
b403448ad
|
60 |
matrix.core.sent += 1; |
cd4feda87
|
61 |
|
f2c18879a
|
62 |
const [err, coreResponse] = await coreapi({ |
9e61d939f
|
63 |
xid, |
f2c18879a
|
64 65 66 67 68 69 70 71 |
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
|
72 73 |
report_ip: config.listener.core.ip || null, report_port: config.listener.core.port, |
f2c18879a
|
74 75 76 |
reverse_url: req.body.reverse_url || req.query.reverse_url || null, }, }); |
bdbbbf27d
|
77 |
if (err || !coreResponse) { |
b403448ad
|
78 79 80 81 82 83 84 85 |
matrix.core.sent_failed += 1; matrix.core.last_error = { xid, ts: new Date(), e: err, eCode: err.code, eMessage: err.message, }; |
9e61d939f
|
86 87 88 89 90 |
logger.warn(`${MODULE_NAME} 8DEBE15F: ERROR on /prepaid/buy response`, { xid, err, coreResponseTypeof: typeof coreResponse, coreResponse, |
f2c18879a
|
91 92 |
}); res.end('INVALID CORE RESPONSE'); |
732c359a7
|
93 94 |
dumper(xid, req, 'INVALID CORE RESPONSE'); |
f2c18879a
|
95 96 |
return; } |
9e61d939f
|
97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
logger.verbose(`${MODULE_NAME} 2528A9B4: Got CORE response`, { xid, coreResponse, }); const responseToPartner = { httpgetx_xid: xid, request_id: coreResponse.request_id, transaction_id: coreResponse.transaction_id, transaction_date: coreResponse.transaction_date, store_name: coreResponse.store_name, terminal_name: coreResponse.terminal_name, product_name: coreResponse.product_name, destination: coreResponse.destination, rc: coreResponse.rc, |
050d92ffb
|
112 |
sn: coreResponse.sn || undefined, |
70df828c5
|
113 114 |
amount: Number(coreResponse.amount) || undefined, ending_balance: Number(coreResponse.ending_balance) || undefined, |
9e61d939f
|
115 116 117 118 |
message: coreResponse.message, }; res.json(responseToPartner); |
732c359a7
|
119 |
dumper(xid, req, responseToPartner); |
f2c18879a
|
120 |
} |
65f444c36
|
121 |
// router.all('/', (req, res) => { res.status(404).end('404: Not implemented yet'); }); |
f2c18879a
|
122 |
router.get('/', pagePrerequisite, pageIndex); |