Commit bb9e3f505699b4bfc0807be48bfb3eeb7efac240

Authored by Adhidarma Hadiwinoto
1 parent 73c4fa0434
Exists in master

coba salah

Showing 1 changed file with 1 additions and 1 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 5
6 var max_retry = 10; 6 var max_retry = 10;
7 var sleep_before_retry = 5000; 7 var sleep_before_retry = 5000;
8 8
9 var config; 9 var config;
10 var callbackReport; 10 var callbackReport;
11 var aaa; 11 var aaa;
12 var logger; 12 var logger;
13 var options; 13 var options;
14 14
15 function start(_config, _callbackReport, options) { 15 function start(_config, _callbackReport, options) {
16 config = _config; 16 config = _config;
17 callbackReport = _callbackReport 17 callbackReport = _callbackReport
18 18
19 if (options && options.aaa) { 19 if (options && options.aaa) {
20 aaa = options.aaa; 20 aaa = options.aaa;
21 } 21 }
22 22
23 if (options && options.logger) { 23 if (options && options.logger) {
24 logger = options.logger; 24 logger = options.logger;
25 } else { 25 } else {
26 logger = new winston.Logger({ 26 logger = new winston.Logger({
27 transports: [ 27 transports: [
28 new (winston.transports.Console)() 28 new (winston.transports.Console)()
29 ] 29 ]
30 }); 30 });
31 } 31 }
32 } 32 }
33 33
34 function topupRequest(task, retry) { 34 function topupRequest(task, retry) {
35 if (retry === undefined) { 35 if (retry === undefined) {
36 retry = max_retry; 36 retry = max_retry;
37 } 37 }
38 38
39 var remoteProduct = task.remoteProduct.split(','); 39 var remoteProduct = task.remoteProduct.split(',');
40 40
41 soap.createClient(config.h2h_out.partner, function(err, client) { 41 soap.createClient(config.h2h_out.partner, function(err, client) {
42 var args = { 42 var args = {
43 userName: config.h2h_out.userid, 43 userNam: config.h2h_out.userid,
44 productCode: remoteProduct[0] , 44 productCode: remoteProduct[0] ,
45 terminal: 'terminal0', 45 terminal: 'terminal0',
46 transactionType: '50', 46 transactionType: '50',
47 billNumber: createBillNumber(task.destination), 47 billNumber: createBillNumber(task.destination),
48 amount: remoteProduct[1], 48 amount: remoteProduct[1],
49 bit61: createBillNumber(task.destination), 49 bit61: createBillNumber(task.destination),
50 reff: task.requestId, 50 reff: task.requestId,
51 timeStamp: strftime('%d-%m-%Y %H:%M:%S', new Date()), 51 timeStamp: strftime('%d-%m-%Y %H:%M:%S', new Date()),
52 } 52 }
53 53
54 var signature = createSignature(args, config.h2h_out.password); 54 var signature = createSignature(args, config.h2h_out.password);
55 args.signature = signature; 55 args.signature = signature;
56 56
57 logger.info('Requesting to service', {url: config.h2h_out.partner, args: args}); 57 logger.info('Requesting to service', {url: config.h2h_out.partner, args: args});
58 58
59 client.apih2h.apih2hPort.billpayment(args, function(err, result) { 59 client.apih2h.apih2hPort.billpayment(args, function(err, result) {
60 if (err) { 60 if (err) {
61 logger.warn('Error requesting service', {err: err}); 61 logger.warn('Error requesting service', {err: err});
62 callbackReport(task.requestId, '68', 'something wrong'); 62 callbackReport(task.requestId, '68', 'something wrong');
63 return; 63 return;
64 } 64 }
65 65
66 var responseMessageToST24 = result.outputParameter.resultCode.$value + ' - ' + result.outputParameter.resultDesc.$value; 66 var responseMessageToST24 = result.outputParameter.resultCode.$value + ' - ' + result.outputParameter.resultDesc.$value;
67 67
68 logger.info('Got result: ' + responseMessageToST24, {result: result}); 68 logger.info('Got result: ' + responseMessageToST24, {result: result});
69 69
70 callbackReport(task.requestId, '68', responseMessageToST24); 70 callbackReport(task.requestId, '68', responseMessageToST24);
71 }); 71 });
72 }); 72 });
73 } 73 }
74 74
75 function createSignature(args, password) { 75 function createSignature(args, password) {
76 var passwordHash = crypto.createHash('sha256').update(password).digest().toString('hex'); 76 var passwordHash = crypto.createHash('sha256').update(password).digest().toString('hex');
77 77
78 var plain = 78 var plain =
79 args.userName 79 args.userName
80 + passwordHash 80 + passwordHash
81 + args.productCode 81 + args.productCode
82 + args.terminal 82 + args.terminal
83 + args.transactionType 83 + args.transactionType
84 + args.billNumber 84 + args.billNumber
85 + args.amount 85 + args.amount
86 + args.reff 86 + args.reff
87 + args.timeStamp; 87 + args.timeStamp;
88 88
89 var result = crypto.createHash('sha1').update(plain).digest().toString('hex'); 89 var result = crypto.createHash('sha1').update(plain).digest().toString('hex');
90 90
91 if (logger) { 91 if (logger) {
92 logger.verbose('Calculating signature', {plain: plain, result: result, args: args, password: password}); 92 logger.verbose('Calculating signature', {plain: plain, result: result, args: args, password: password});
93 } 93 }
94 94
95 return result; 95 return result;
96 } 96 }
97 97
98 function createBillNumber(destination) { 98 function createBillNumber(destination) {
99 return ("0000000000000" + destination).slice(-13); 99 return ("0000000000000" + destination).slice(-13);
100 } 100 }
101 101
102 exports.start = start; 102 exports.start = start;
103 exports.topupRequest = topupRequest; 103 exports.topupRequest = topupRequest;
104 exports.createSignature = createSignature; 104 exports.createSignature = createSignature;
105 exports.createBillNumber = createBillNumber; 105 exports.createBillNumber = createBillNumber;
106 106