From 9e047c12240b1d93d5e075b4dae92f7fa17e6cc5 Mon Sep 17 00:00:00 2001 From: Adhidarma Hadiwinoto <gua@adhisimon.org> Date: Fri, 20 May 2016 15:42:48 +0700 Subject: [PATCH] saldoCheck --- partner-kospinjasa.js | 79 +++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 58 insertions(+), 21 deletions(-) diff --git a/partner-kospinjasa.js b/partner-kospinjasa.js index 7e92e8a..215bdbc 100644 --- a/partner-kospinjasa.js +++ b/partner-kospinjasa.js @@ -39,10 +39,52 @@ function start(_config, _callbackReport, options) { } function topupRequest(task, retry) { - if (retry === undefined) { - retry = max_retry; + saldoCheck(billpayment, task); +} + +function saldoCheck(callback, task) { + + var params = { + userName: config.h2h_out.userid, + productCode: '00000' , + terminal: 'H2HIPN10', + transactionType: '61', + reff: Math.random() * 99999999; + timeStamp: strftime('%Y-%m-%d %H:%M:%S', new Date()) } + params.signature = createSignatureForSaldoCheck(params, config.h2h_out.password); + + logger.info('Requesting to service', {url: config.h2h_out.partner, params: params}); + soapClient.apih2h.apih2hPort.saldoCheck({ inputSaldo: params }, function(err, result) { + + logger.verbose( + 'Got saldoCheck response', + { + lastEndpoint: soapClient.lastEndpoint, + lastRequest: soapClient.lastRequest, + lastMessage: soapClient.lastMessage, + lastResponse: soapClient.lastResponse, + } + ); + + if (err) { + logger.warn('Error requesting saldoCheck', {err: err}); + } + + var balance; + logger.verbose('saldoCheck result', {result}); + + + if (task) {} + callback(task, balance); + } + }); + +} + +function billpayment(task, balance) { + var remoteProduct = task.remoteProduct.split(','); var params = { userName: config.h2h_out.userid, @@ -59,12 +101,6 @@ function topupRequest(task, retry) { var signature = createSignature(params, config.h2h_out.password); params.signature = signature; - //topupRequestSoapDIY(task, params, retry); - topupRequestSoap(task, params, retry); -} - -function topupRequestSoap(task, params, retry) { - soap.createClient(config.h2h_out.partner, function(err, soapClient) { var _params = { @@ -240,19 +276,6 @@ function topupResponseHandler(task, response) { callbackReport(task.requestId, st24rc, st24message); } -function topupRequestRetry(task) { - task.retry--; - - if (task.retry > 0) { - logger.info('Retrying in ' + sleepBeforeRetry + 's'); - setTimeout(topupRequest, sleepBeforeRetry * 1000, task, task.retry); - } - else { - logger.warn('Maximum retry for pending status exceeded', {task: task}); - } -} - - function createSignature(params, password) { var passwordHash = crypto.createHash('sha256').update(password).digest().toString('hex'); var plain = @@ -269,6 +292,20 @@ function createSignature(params, password) { return crypto.createHash('sha1').update(plain).digest().toString('hex'); } +function createSignatureForSaldoCheck(params, password) { + var passwordHash = crypto.createHash('sha256').update(password).digest().toString('hex'); + var plain = + params.userName + + passwordHash + + params.productCode + + params.terminal + + params.transactionType + + params.reff + + params.timeStamp; + + return crypto.createHash('sha1').update(plain).digest().toString('hex'); +} + function createBillNumber(destination) { return ("0000000000000" + destination).slice(-13); } -- 1.9.0