Commit 68bd2319b6b866bb9ba905f244ae992873b8715c
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 |