Blame view

partner-kospinjasa.js 3.09 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');
1f837fd31   Adhidarma Hadiwinoto   on progress
5
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
  
  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...
38
      var remoteProduct = task.remoteProduct.split(',');
b6b185202   Adhidarma Hadiwinoto   inputCheck
39
      var params = {
7f796c813   Adhidarma Hadiwinoto   coba easysoap
40
41
42
43
44
45
46
47
          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
48
          timeStamp: strftime('%d-%m-%Y %H:%M:%S', new Date())
7f796c813   Adhidarma Hadiwinoto   coba easysoap
49
      }
b6b185202   Adhidarma Hadiwinoto   inputCheck
50
51
      var signature = createSignature(params, config.h2h_out.password);
      params.signature = signature;
7f796c813   Adhidarma Hadiwinoto   coba easysoap
52

b6b185202   Adhidarma Hadiwinoto   inputCheck
53
      topupRequestSoap(task, params, retry);
7f796c813   Adhidarma Hadiwinoto   coba easysoap
54
  }
b6b185202   Adhidarma Hadiwinoto   inputCheck
55
  function topupRequestSoap(task, params, retry) {
5a947e400   Adhidarma Hadiwinoto   siap coba dapat r...
56

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

b6b185202   Adhidarma Hadiwinoto   inputCheck
59
          logger.info('Requesting to service', {url: config.h2h_out.partner, params: params});
17d2372a2   Adhidarma Hadiwinoto   penyederhanaan ke...
60
          soapClient.billpayment({ inputCheck: params }, function(err, result) {
3899d9816   Adhidarma Hadiwinoto   log last request
61
62
  
              logger.info('Got response', {lastRequest: soapClient.lastRequest});
5a947e400   Adhidarma Hadiwinoto   siap coba dapat r...
63
64
65
66
67
              if (err) {
                  logger.warn('Error requesting service', {err: err});
                  callbackReport(task.requestId, '68', 'something wrong');
                  return;
              }
73c4fa043   Adhidarma Hadiwinoto   apih2hPort
68
69
70
71
72
              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
73
74
75
          });
      });
  }
7f796c813   Adhidarma Hadiwinoto   coba easysoap
76

b6b185202   Adhidarma Hadiwinoto   inputCheck
77
  function createSignature(params, password) {
5a947e400   Adhidarma Hadiwinoto   siap coba dapat r...
78
      var passwordHash = crypto.createHash('sha256').update(password).digest().toString('hex');
dfcc535b5   Adhidarma Hadiwinoto   coba perbaiki cre...
79
      var plain =
b6b185202   Adhidarma Hadiwinoto   inputCheck
80
          params.userName
5a947e400   Adhidarma Hadiwinoto   siap coba dapat r...
81
          + passwordHash
b6b185202   Adhidarma Hadiwinoto   inputCheck
82
83
84
85
86
87
88
          + params.productCode
          + params.terminal
          + params.transactionType
          + params.billNumber
          + params.amount
          + params.reff
          + params.timeStamp;
dfcc535b5   Adhidarma Hadiwinoto   coba perbaiki cre...
89
90
  
      var result = crypto.createHash('sha1').update(plain).digest().toString('hex');
5a947e400   Adhidarma Hadiwinoto   siap coba dapat r...
91

371375d72   Adhidarma Hadiwinoto   debug signature
92
      if (logger) {
b6b185202   Adhidarma Hadiwinoto   inputCheck
93
          logger.verbose('Calculating signature', {plain: plain, result: result, params: params, password: password});
371375d72   Adhidarma Hadiwinoto   debug signature
94
      }
5a947e400   Adhidarma Hadiwinoto   siap coba dapat r...
95
96
97
98
99
      return result;
  }
  
  function createBillNumber(destination) {
      return ("0000000000000" + destination).slice(-13);
1f837fd31   Adhidarma Hadiwinoto   on progress
100
101
102
103
  }
  
  exports.start = start;
  exports.topupRequest = topupRequest;
5a947e400   Adhidarma Hadiwinoto   siap coba dapat r...
104
105
  exports.createSignature = createSignature;
  exports.createBillNumber = createBillNumber;