Commit 68bd2319b6b866bb9ba905f244ae992873b8715c

Authored by Adhidarma Hadiwinoto
1 parent b6b185202d
Exists in master

buang easysoap

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