Commit 23f8809e9335b85839ea6107215e9e297634f0fa

Authored by Adhidarma Hadiwinoto
1 parent 8ccd0140be
Exists in master

coba urut

Showing 1 changed file with 16 additions and 2 deletions Inline Diff

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