Blame view

partner-kospinjasa.js 2.93 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(',');
2b3124a96   Adhidarma Hadiwinoto   url dan logger
39
      soap.createClient(config.h2h_out.partner, function(err, client) {
5a947e400   Adhidarma Hadiwinoto   siap coba dapat r...
40
41
42
43
44
45
46
47
48
          var args = {
              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,
35d3e5057   Adhidarma Hadiwinoto   pakai signature
49
              timeStamp: strftime('%d-%m-%Y %H:%M:%S', new Date()),
5a947e400   Adhidarma Hadiwinoto   siap coba dapat r...
50
          }
35d3e5057   Adhidarma Hadiwinoto   pakai signature
51
52
          var signature = createSignature(args, config.h2h_out.password);
          args.signature = signature;
2b3124a96   Adhidarma Hadiwinoto   url dan logger
53
          logger.info('Requesting to service', {url: config.h2h_out.partner, args: args});
73c4fa043   Adhidarma Hadiwinoto   apih2hPort
54
55
  
          client.apih2h.apih2hPort.billpayment(args, function(err, result) {
5a947e400   Adhidarma Hadiwinoto   siap coba dapat r...
56
57
58
59
60
              if (err) {
                  logger.warn('Error requesting service', {err: err});
                  callbackReport(task.requestId, '68', 'something wrong');
                  return;
              }
73c4fa043   Adhidarma Hadiwinoto   apih2hPort
61
62
63
64
65
              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
66
67
68
          });
      });
  }
5a947e400   Adhidarma Hadiwinoto   siap coba dapat r...
69
70
  function createSignature(args, password) {
      var passwordHash = crypto.createHash('sha256').update(password).digest().toString('hex');
dfcc535b5   Adhidarma Hadiwinoto   coba perbaiki cre...
71
      var plain =
5a947e400   Adhidarma Hadiwinoto   siap coba dapat r...
72
73
74
75
76
77
78
          args.userName
          + passwordHash
          + args.productCode
          + args.terminal
          + args.transactionType
          + args.billNumber
          + args.amount
dfcc535b5   Adhidarma Hadiwinoto   coba perbaiki cre...
79
80
81
82
          + args.reff
          + args.timeStamp;
  
      var result = crypto.createHash('sha1').update(plain).digest().toString('hex');
5a947e400   Adhidarma Hadiwinoto   siap coba dapat r...
83

371375d72   Adhidarma Hadiwinoto   debug signature
84
      if (logger) {
cb466883c   Adhidarma Hadiwinoto   password
85
          logger.verbose('Calculating signature', {plain: plain, result: result, args: args, password: password});
371375d72   Adhidarma Hadiwinoto   debug signature
86
      }
5a947e400   Adhidarma Hadiwinoto   siap coba dapat r...
87
88
89
90
91
      return result;
  }
  
  function createBillNumber(destination) {
      return ("0000000000000" + destination).slice(-13);
1f837fd31   Adhidarma Hadiwinoto   on progress
92
93
94
95
  }
  
  exports.start = start;
  exports.topupRequest = topupRequest;
5a947e400   Adhidarma Hadiwinoto   siap coba dapat r...
96
97
  exports.createSignature = createSignature;
  exports.createBillNumber = createBillNumber;