Commit cc4b4d24b85ddecb4b32eea501362cd899eebe5d
1 parent
b6891de212
Exists in
master
perbaikan typo
Showing 1 changed file with 1 additions and 1 deletions Inline Diff
partner-datacell.js
1 | var url = require('url'); | 1 | var url = require('url'); |
2 | var math = require('mathjs'); | 2 | var math = require('mathjs'); |
3 | var xml = require('xml'); | 3 | var xml = require('xml'); |
4 | var strftime = require('strftime'); | 4 | var strftime = require('strftime'); |
5 | var xor = require('base64-xor'); | 5 | var xor = require('base64-xor'); |
6 | var request = require('request'); | 6 | var request = require('request'); |
7 | 7 | ||
8 | var config; | 8 | var config; |
9 | var callbackReport; | 9 | var callbackReport; |
10 | 10 | ||
11 | var max_retry = 2; | 11 | var max_retry = 2; |
12 | var sleep_before_retry = 2000; | 12 | var sleep_before_retry = 2000; |
13 | 13 | ||
14 | function calculateSignature(userid, password, msisdn, timestamp) { | 14 | function calculateSignature(userid, password, msisdn, timestamp) { |
15 | var a = msisdn.substr(msisdn.length - 4) + timestamp; | 15 | var a = msisdn.substr(msisdn.length - 4) + timestamp; |
16 | var b = userid.substr(0, 4) + password; | 16 | var b = userid.substr(0, 4) + password; |
17 | 17 | ||
18 | return xor.encode(a,b); | 18 | return xor.encode(a,b); |
19 | } | 19 | } |
20 | 20 | ||
21 | function createPayload(task) { | 21 | function createPayload(task) { |
22 | var timestamp = strftime('%H%M%S'); | 22 | var timestamp = strftime('%H%M%S'); |
23 | 23 | ||
24 | var payload = { | 24 | var payload = { |
25 | datacell: { | 25 | datacell: { |
26 | perintah: 'charge', | 26 | perintah: 'charge', |
27 | oprcode: task['remoteProduct'], | 27 | oprcode: task['remoteProduct'], |
28 | userid: config.h2h_out.userid, | 28 | userid: config.h2h_out.userid, |
29 | time: timestamp, | 29 | time: timestamp, |
30 | msisdn: task['destination'], | 30 | msisdn: task['destination'], |
31 | ref_trxid: task['requestId'], | 31 | ref_trxid: task['requestId'], |
32 | sgn: calculateSignature(config.h2h_out.userid, config.h2h_out.password, task['destination'], timestamp); | 32 | sgn: calculateSignature(config.h2h_out.userid, config.h2h_out.password, task['destination'], timestamp) |
33 | } | 33 | } |
34 | }; | 34 | }; |
35 | 35 | ||
36 | console.log(payload); | 36 | console.log(payload); |
37 | return xml(payload); | 37 | return xml(payload); |
38 | } | 38 | } |
39 | 39 | ||
40 | function topupRequest(task, retry) { | 40 | function topupRequest(task, retry) { |
41 | if (config.globals.requests_count == undefined) { | 41 | if (config.globals.requests_count == undefined) { |
42 | config.globals.requests_count = 1; | 42 | config.globals.requests_count = 1; |
43 | } else { | 43 | } else { |
44 | config.globals.requests_count++; | 44 | config.globals.requests_count++; |
45 | } | 45 | } |
46 | 46 | ||
47 | if (config.globals.active_requests_count == undefined) { | 47 | if (config.globals.active_requests_count == undefined) { |
48 | config.globals.active_requests_count = 1; | 48 | config.globals.active_requests_count = 1; |
49 | } else { | 49 | } else { |
50 | config.globals.active_requests_count++; | 50 | config.globals.active_requests_count++; |
51 | } | 51 | } |
52 | 52 | ||
53 | if (config.globals.max_active_requests_count == undefined) { | 53 | if (config.globals.max_active_requests_count == undefined) { |
54 | config.globals.max_active_requests_count = config.globals.active_requests_count; | 54 | config.globals.max_active_requests_count = config.globals.active_requests_count; |
55 | } else { | 55 | } else { |
56 | config.globals.max_active_requests_count = math.max(config.globals.max_active_requests_count, config.globals.active_requests_count); | 56 | config.globals.max_active_requests_count = math.max(config.globals.max_active_requests_count, config.globals.active_requests_count); |
57 | } | 57 | } |
58 | 58 | ||
59 | 59 | ||
60 | if (retry === undefined) { | 60 | if (retry === undefined) { |
61 | retry = max_retry; | 61 | retry = max_retry; |
62 | } | 62 | } |
63 | 63 | ||
64 | var payload_xml = createPayload(task); | 64 | var payload_xml = createPayload(task); |
65 | 65 | ||
66 | request.post(config.h2h_out.partner, {message: payload_xml}, function(error, response, body) { | 66 | request.post(config.h2h_out.partner, {message: payload_xml}, function(error, response, body) { |
67 | if (error) { | 67 | if (error) { |
68 | var error_mesasge = 'Error requesting to partner: ' + error; | 68 | var error_mesasge = 'Error requesting to partner: ' + error; |
69 | console.log(error_message); | 69 | console.log(error_message); |
70 | callbackReport(task['requestId'], '40', error_message); | 70 | callbackReport(task['requestId'], '40', error_message); |
71 | return; | 71 | return; |
72 | } | 72 | } |
73 | 73 | ||
74 | if (response.statusCode != 200) { | 74 | if (response.statusCode != 200) { |
75 | var error_mesasge = 'HTTP status code = ' + response.statusCode; | 75 | var error_mesasge = 'HTTP status code = ' + response.statusCode; |
76 | console.log(error_message); | 76 | console.log(error_message); |
77 | callbackReport(task['requestId'], '40', error_message); | 77 | callbackReport(task['requestId'], '40', error_message); |
78 | return; | 78 | return; |
79 | } | 79 | } |
80 | 80 | ||
81 | console.log('Direct response from partner:'); | 81 | console.log('Direct response from partner:'); |
82 | console.log(body); | 82 | console.log(body); |
83 | callbackReport(task['requestId'], '68', 'cek'); | 83 | callbackReport(task['requestId'], '68', 'cek'); |
84 | 84 | ||
85 | });; | 85 | });; |
86 | } | 86 | } |
87 | 87 | ||
88 | function createServer() { | 88 | function createServer() { |
89 | var httpServer = http.createServer(function(req, res) { | 89 | var httpServer = http.createServer(function(req, res) { |
90 | console.log('Got request from partner: ' + req.url); | 90 | console.log('Got request from partner: ' + req.url); |
91 | res.end('OK'); | 91 | res.end('OK'); |
92 | }); | 92 | }); |
93 | 93 | ||
94 | httpServer.listen(config.h2h_out.listen_port, function() { | 94 | httpServer.listen(config.h2h_out.listen_port, function() { |
95 | console.log('HTTP Reverse/Report server listen on port ' + config.h2h_out.listen_port); | 95 | console.log('HTTP Reverse/Report server listen on port ' + config.h2h_out.listen_port); |
96 | }); | 96 | }); |
97 | } | 97 | } |
98 | 98 | ||
99 | 99 | ||
100 | function start(_config, _callbackReport) { | 100 | function start(_config, _callbackReport) { |
101 | config = _config; | 101 | config = _config; |
102 | callbackReport = _callbackReport | 102 | callbackReport = _callbackReport |
103 | 103 | ||
104 | createServer(); | 104 | createServer(); |
105 | } | 105 | } |
106 | 106 | ||
107 | exports.start = start; | 107 | exports.start = start; |
108 | exports.topupRequest = topupRequest; | 108 | exports.topupRequest = topupRequest; |
109 | 109 |