Blame view

partner-kospinjasa.js 3.87 KB
1f837fd31   Adhidarma Hadiwinoto   on progress
1
2
  var winston = require('winston');
  var soap = require('soap');
5a947e400   Adhidarma Hadiwinoto   siap coba dapat r...
3
4
  var crypto = require('crypto');
  var strftime = require('strftime');
7f796c813   Adhidarma Hadiwinoto   coba easysoap
5
  var easysoap = require('easysoap');
1f837fd31   Adhidarma Hadiwinoto   on progress
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   Adhidarma Hadiwinoto   siap coba dapat r...
39
      var remoteProduct = task.remoteProduct.split(',');
b6b185202   Adhidarma Hadiwinoto   inputCheck
40
      var params = {
7f796c813   Adhidarma Hadiwinoto   coba easysoap
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   Adhidarma Hadiwinoto   inputCheck
49
          timeStamp: strftime('%d-%m-%Y %H:%M:%S', new Date())
7f796c813   Adhidarma Hadiwinoto   coba easysoap
50
      }
b6b185202   Adhidarma Hadiwinoto   inputCheck
51
52
      var signature = createSignature(params, config.h2h_out.password);
      params.signature = signature;
7f796c813   Adhidarma Hadiwinoto   coba easysoap
53

b6b185202   Adhidarma Hadiwinoto   inputCheck
54
      topupRequestSoap(task, params, retry);
7f796c813   Adhidarma Hadiwinoto   coba easysoap
55
56
57
58
  }
  
  function topupRequestEasySoap(task, args, retry) {
      //partner=http://203.130.243.155/ApiH2H/index.php?wsdl
107ff7b0f   Adhidarma Hadiwinoto   easysoap
59
      var clientParams = {
7f796c813   Adhidarma Hadiwinoto   coba easysoap
60
          host: '203.130.243.155',
caeb5ddbc   Adhidarma Hadiwinoto   typo
61
          path: '/ApiH2H/index.php',
7f796c813   Adhidarma Hadiwinoto   coba easysoap
62
63
          wsdl: '/ApiH2H/index.php?wsdl'
      }
db96f5703   Adhidarma Hadiwinoto   typo
64
      var clientOptions = {
107ff7b0f   Adhidarma Hadiwinoto   easysoap
65
66
          secure: false,
      }
7f796c813   Adhidarma Hadiwinoto   coba easysoap
67

107ff7b0f   Adhidarma Hadiwinoto   easysoap
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   Adhidarma Hadiwinoto   coba easysoap
86
  }
b6b185202   Adhidarma Hadiwinoto   inputCheck
87
  function topupRequestSoap(task, params, retry) {
5a947e400   Adhidarma Hadiwinoto   siap coba dapat r...
88

b6b185202   Adhidarma Hadiwinoto   inputCheck
89
      soap.createClient(config.h2h_out.partner, function(err, soapClient) {
35d3e5057   Adhidarma Hadiwinoto   pakai signature
90

b6b185202   Adhidarma Hadiwinoto   inputCheck
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   Adhidarma Hadiwinoto   apih2hPort
94

5a947e400   Adhidarma Hadiwinoto   siap coba dapat r...
95
96
97
98
99
              if (err) {
                  logger.warn('Error requesting service', {err: err});
                  callbackReport(task.requestId, '68', 'something wrong');
                  return;
              }
73c4fa043   Adhidarma Hadiwinoto   apih2hPort
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   Adhidarma Hadiwinoto   on progress
105
106
107
          });
      });
  }
7f796c813   Adhidarma Hadiwinoto   coba easysoap
108

b6b185202   Adhidarma Hadiwinoto   inputCheck
109
  function createSignature(params, password) {
5a947e400   Adhidarma Hadiwinoto   siap coba dapat r...
110
      var passwordHash = crypto.createHash('sha256').update(password).digest().toString('hex');
dfcc535b5   Adhidarma Hadiwinoto   coba perbaiki cre...
111
      var plain =
b6b185202   Adhidarma Hadiwinoto   inputCheck
112
          params.userName
5a947e400   Adhidarma Hadiwinoto   siap coba dapat r...
113
          + passwordHash
b6b185202   Adhidarma Hadiwinoto   inputCheck
114
115
116
117
118
119
120
          + params.productCode
          + params.terminal
          + params.transactionType
          + params.billNumber
          + params.amount
          + params.reff
          + params.timeStamp;
dfcc535b5   Adhidarma Hadiwinoto   coba perbaiki cre...
121
122
  
      var result = crypto.createHash('sha1').update(plain).digest().toString('hex');
5a947e400   Adhidarma Hadiwinoto   siap coba dapat r...
123

371375d72   Adhidarma Hadiwinoto   debug signature
124
      if (logger) {
b6b185202   Adhidarma Hadiwinoto   inputCheck
125
          logger.verbose('Calculating signature', {plain: plain, result: result, params: params, password: password});
371375d72   Adhidarma Hadiwinoto   debug signature
126
      }
5a947e400   Adhidarma Hadiwinoto   siap coba dapat r...
127
128
129
130
131
      return result;
  }
  
  function createBillNumber(destination) {
      return ("0000000000000" + destination).slice(-13);
1f837fd31   Adhidarma Hadiwinoto   on progress
132
133
134
135
  }
  
  exports.start = start;
  exports.topupRequest = topupRequest;
5a947e400   Adhidarma Hadiwinoto   siap coba dapat r...
136
137
  exports.createSignature = createSignature;
  exports.createBillNumber = createBillNumber;