From 0cda3b29fd1f18b8c032e5b82da8c6c4cb594927 Mon Sep 17 00:00:00 2001 From: Adhidarma Hadiwinoto <me@adhisimon.org> Date: Mon, 11 Mar 2019 20:43:14 +0700 Subject: [PATCH] PIN bisa dapat dari database --- lib/partner-mkios.js | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/lib/partner-mkios.js b/lib/partner-mkios.js index 239c099..82fe4e0 100644 --- a/lib/partner-mkios.js +++ b/lib/partner-mkios.js @@ -20,10 +20,12 @@ if (config && config.debug_modem) { process.env.KOMODO_DEBUG_MODEM=1; } +/* if (!config || !config.partner || !config.partner.pin) { logger.warn('Undefined PIN'); process.exit(1); } +*/ matrix.modem = {}; @@ -45,10 +47,14 @@ const resumeHandlers = {}; let last_trx_id = null; +function getPin() { + return ( config && config.partner && config.partner.pin ) || ( matrix && matrix.modem && matrix.modem.pin_trx ); +} + modem.on('open', function() { logger.info('Modem opened'); - const ussd_command = '*776*' + config.partner.pin + '#'; + const ussd_command = '*776*' + getPin() + '#'; db.run("INSERT INTO ussd VALUES (?, ?, 'OUT', ?, ?)", moment().format('YYYY-MM-DD HH:mm:ss'), moment().format('YYYY-MM-DD'), matrix.modem.imsi, 'AT+CUSD=1,"' + ussd_command + '",15', function(err) { if (err) { logger.warn('Error inserting ussd command (stock check) to local database', {err: err}); @@ -62,6 +68,7 @@ modem.on('imsi', function(imsi) { logger.verbose('IMSI: ' + imsi); matrix.modem.imsi = imsi; matrix.modem.msisdn = chips && chips.by_imsi && chips.by_imsi[imsi] && chips.by_imsi[imsi].msisdn ? chips.by_imsi[imsi].msisdn : config.partner.msisdn; + matrix.modem.pin_trx = chips && chips.by_imsi && chips.by_imsi[imsi] && chips.by_imsi[imsi].pin ? chips.by_imsi[imsi].pin : null; }) @@ -286,11 +293,21 @@ function onTrxFinish(trx_id) { } function buy(task) { + + if (!getPin()) { + report({ + trx_id: task.trx_id, + rc: '40', + message: 'INTERNAL: Tidak dapat melakukan transaksi. PIN transaksi tidak terdefinisi.' + }); + return; + } + if (task.product === task.remote_product) { report({ trx_id: task.trx_id, rc: '40', - message: 'INTERNAL: Gagal melakukan transaksi. Kode USSD belum terdefinisi.' + message: 'INTERNAL: Tidak dapat melakukan transaksi. Kode USSD belum terdefinisi.' }); return; } @@ -311,7 +328,7 @@ function buy(task) { return; } - const ussd_command = task.remote_product.split(',')[0].replace("<DESTINATION>", task.destination).replace("<PIN>", config.partner.pin); + const ussd_command = task.remote_product.split(',')[0].replace("<DESTINATION>", task.destination).replace("<PIN>", getPin()); logger.verbose('Going to execute USSD', {trx_id: task.trx_id, destination: task.destination, product: task.product, ussd: ussd_command}); db.run("INSERT INTO ussd VALUES (?, ?, 'OUT', ?, ?)", moment().format('YYYY-MM-DD HH:mm:ss'), moment().format('YYYY-MM-DD'), matrix.modem.imsi, 'AT+CUSD=1,"' + ussd_command + '",15', function(err) { -- 1.9.0