Blame view
partner-kospinjasa.js
3.87 KB
1f837fd31
|
1 2 |
var winston = require('winston'); var soap = require('soap'); |
5a947e400
|
3 4 |
var crypto = require('crypto'); var strftime = require('strftime'); |
7f796c813
|
5 |
var easysoap = require('easysoap'); |
1f837fd31
|
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
var max_retry = 10; var sleep_before_retry = 5000; var config; var callbackReport; var aaa; var logger; var options; function start(_config, _callbackReport, options) { config = _config; callbackReport = _callbackReport if (options && options.aaa) { aaa = options.aaa; } if (options && options.logger) { logger = options.logger; } else { logger = new winston.Logger({ transports: [ new (winston.transports.Console)() ] }); } } function topupRequest(task, retry) { if (retry === undefined) { retry = max_retry; } |
5a947e400
|
39 |
var remoteProduct = task.remoteProduct.split(','); |
b6b185202
|
40 |
var params = { |
7f796c813
|
41 42 43 44 45 46 47 48 |
userName: config.h2h_out.userid, productCode: remoteProduct[0] , terminal: 'terminal0', transactionType: '50', billNumber: createBillNumber(task.destination), amount: remoteProduct[1], bit61: createBillNumber(task.destination), reff: task.requestId, |
b6b185202
|
49 |
timeStamp: strftime('%d-%m-%Y %H:%M:%S', new Date()) |
7f796c813
|
50 |
} |
b6b185202
|
51 52 |
var signature = createSignature(params, config.h2h_out.password); params.signature = signature; |
7f796c813
|
53 |
|
b6b185202
|
54 |
topupRequestSoap(task, params, retry); |
7f796c813
|
55 56 57 58 |
} function topupRequestEasySoap(task, args, retry) { //partner=http://203.130.243.155/ApiH2H/index.php?wsdl |
107ff7b0f
|
59 |
var clientParams = { |
7f796c813
|
60 |
host: '203.130.243.155', |
caeb5ddbc
|
61 |
path: '/ApiH2H/index.php', |
7f796c813
|
62 63 |
wsdl: '/ApiH2H/index.php?wsdl' } |
db96f5703
|
64 |
var clientOptions = { |
107ff7b0f
|
65 66 |
secure: false, } |
7f796c813
|
67 |
|
107ff7b0f
|
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
var soapClient = new easysoap.Client(clientParams, clientOptions); soapClient.call( {method: 'billpayment', params: args} ).done( //success function(res) { res.data // response data as array res.response // full response data (including xml) res.header // response header }, //method fail function(err) { console.log(err); } ); callbackReport(task.requestId, '68', 'debug'); |
7f796c813
|
86 |
} |
b6b185202
|
87 |
function topupRequestSoap(task, params, retry) { |
5a947e400
|
88 |
|
b6b185202
|
89 |
soap.createClient(config.h2h_out.partner, function(err, soapClient) { |
35d3e5057
|
90 |
|
b6b185202
|
91 92 93 |
logger.info('Requesting to service', {url: config.h2h_out.partner, params: params}); soapClient.apih2h.apih2hPort.billpayment({inputCheck: params}, function(err, result) { |
73c4fa043
|
94 |
|
5a947e400
|
95 96 97 98 99 |
if (err) { logger.warn('Error requesting service', {err: err}); callbackReport(task.requestId, '68', 'something wrong'); return; } |
73c4fa043
|
100 101 102 103 104 |
var responseMessageToST24 = result.outputParameter.resultCode.$value + ' - ' + result.outputParameter.resultDesc.$value; logger.info('Got result: ' + responseMessageToST24, {result: result}); callbackReport(task.requestId, '68', responseMessageToST24); |
1f837fd31
|
105 106 107 |
}); }); } |
7f796c813
|
108 |
|
b6b185202
|
109 |
function createSignature(params, password) { |
5a947e400
|
110 |
var passwordHash = crypto.createHash('sha256').update(password).digest().toString('hex'); |
dfcc535b5
|
111 |
var plain = |
b6b185202
|
112 |
params.userName |
5a947e400
|
113 |
+ passwordHash |
b6b185202
|
114 115 116 117 118 119 120 |
+ params.productCode + params.terminal + params.transactionType + params.billNumber + params.amount + params.reff + params.timeStamp; |
dfcc535b5
|
121 122 |
var result = crypto.createHash('sha1').update(plain).digest().toString('hex'); |
5a947e400
|
123 |
|
371375d72
|
124 |
if (logger) { |
b6b185202
|
125 |
logger.verbose('Calculating signature', {plain: plain, result: result, params: params, password: password}); |
371375d72
|
126 |
} |
5a947e400
|
127 128 129 130 131 |
return result; } function createBillNumber(destination) { return ("0000000000000" + destination).slice(-13); |
1f837fd31
|
132 133 134 135 |
} exports.start = start; exports.topupRequest = topupRequest; |
5a947e400
|
136 137 |
exports.createSignature = createSignature; exports.createBillNumber = createBillNumber; |