Commit 5a947e4006be36b51e8d5373e45066f7982ce0fc

Authored by Adhidarma Hadiwinoto
1 parent 1f837fd31a
Exists in master

siap coba dapat result

Showing 2 changed files with 51 additions and 6 deletions Inline Diff

1 { 1 {
2 "name": "sate24-to-kospinjasa", 2 "name": "sate24-to-kospinjasa",
3 "version": "1.0.0", 3 "version": "1.0.0",
4 "description": "ST24 to Kospin JASA", 4 "description": "ST24 to Kospin JASA",
5 "main": "index.js", 5 "main": "index.js",
6 "scripts": { 6 "scripts": {
7 "test": "mocha" 7 "test": "mocha"
8 }, 8 },
9 "repository": { 9 "repository": {
10 "type": "git", 10 "type": "git",
11 "url": "git@gitlab.kodesumber.com:reload97/sate24-to-kospinjasa.git" 11 "url": "git@gitlab.kodesumber.com:reload97/sate24-to-kospinjasa.git"
12 }, 12 },
13 "keywords": [ 13 "keywords": [
14 "st24", 14 "st24",
15 "reload97", 15 "reload97",
16 "r97", 16 "r97",
17 "ppob", 17 "ppob",
18 "kospinjasa" 18 "kospinjasa"
19 ], 19 ],
20 "author": "Adhidarma Hadiwinoto <me@adhisimon.org>", 20 "author": "Adhidarma Hadiwinoto <me@adhisimon.org>",
21 "license": "ISC", 21 "license": "ISC",
22 "dependencies": { 22 "dependencies": {
23 "ini": "^1.3.4", 23 "ini": "^1.3.4",
24 "sate24": "git+http://gitlab.kodesumber.com/reload97/node-sate24.git", 24 "sate24": "git+http://gitlab.kodesumber.com/reload97/node-sate24.git",
25 "sate24-expresso": "git+http://gitlab.kodesumber.com/reload97/sate24-expresso.git", 25 "sate24-expresso": "git+http://gitlab.kodesumber.com/reload97/sate24-expresso.git",
26 "soap": "^0.15.0", 26 "soap": "^0.15.0",
27 "winston": "^2.2.0" 27 "winston": "^2.2.0"
28 },
29 "devDependencies": {
30 "mocha": "^2.4.5",
31 "should": "^8.3.2"
28 } 32 }
29 } 33 }
30 34
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');
4 var strftime = require('strftime');
3 5
4 var max_retry = 10; 6 var max_retry = 10;
5 var sleep_before_retry = 5000; 7 var sleep_before_retry = 5000;
6 8
7 var config; 9 var config;
8 var callbackReport; 10 var callbackReport;
9 var aaa; 11 var aaa;
10 var logger; 12 var logger;
11 var options; 13 var options;
12 14
13 function start(_config, _callbackReport, options) { 15 function start(_config, _callbackReport, options) {
14 config = _config; 16 config = _config;
15 callbackReport = _callbackReport 17 callbackReport = _callbackReport
16 18
17 if (options && options.aaa) { 19 if (options && options.aaa) {
18 aaa = options.aaa; 20 aaa = options.aaa;
19 } 21 }
20 22
21 if (options && options.logger) { 23 if (options && options.logger) {
22 logger = options.logger; 24 logger = options.logger;
23 } else { 25 } else {
24 logger = new winston.Logger({ 26 logger = new winston.Logger({
25 transports: [ 27 transports: [
26 new (winston.transports.Console)() 28 new (winston.transports.Console)()
27 ] 29 ]
28 }); 30 });
29 } 31 }
30 } 32 }
31 33
32 function topupRequest(task, retry) { 34 function topupRequest(task, retry) {
33 if (retry === undefined) { 35 if (retry === undefined) {
34 retry = max_retry; 36 retry = max_retry;
35 } 37 }
36 38
39 var remoteProduct = task.remoteProduct.split(',');
40
37 soap.createClient(url, function(err, client) { 41 soap.createClient(url, function(err, client) {
38 client.MyFunction(args, function(err, result) { 42 var args = {
39 console.log(result); 43 userName: config.h2h_out.userid,
44 productCode: remoteProduct[0] ,
45 terminal: 'terminal0',
46 transactionType: '50',
47 billNumber: createBillNumber(task.destination),
48 amount: remoteProduct[1],
49 bit61: createBillNumber(task.destination),
50 reff: task.requestId,
51 timeStamp: strftime('%d-%m-%Y %H:%M:%S', new Date());
52 }
53
54 client.billpayment(args, function(err, result) {
55 if (err) {
56 logger.warn('Error requesting service', {err: err});
57 callbackReport(task.requestId, '68', 'something wrong');
58 return;
59 }
60
61 logger.info('Got result', {result: result});
62 callbackReport(task.requestId, '68', 'got result');
40 }); 63 });
41 }); 64 });
42 } 65 }
43 66
44 function createSoapClient(url, callback) { 67 function createSignature(args, password) {
45 soap.createClient(url, function(err, client) { 68 var passwordHash = crypto.createHash('sha256').update(password).digest().toString('hex');
46 callback(err, client); 69
47 }); 70 var result = crypto.createHash('sha1').update(
71 args.userName
72 + passwordHash
73 + args.productCode
74 + args.terminal
75 + args.transactionType
76 + args.billNumber
77 + args.amount
78 + args.ref
79 + args.timestamp
80 ).digest().toString('hex');
81
82 return result;
83 }
84
85 function createBillNumber(destination) {
86 return ("0000000000000" + destination).slice(-13);
48 } 87 }
49 88
50 exports.start = start; 89 exports.start = start;
51 exports.topupRequest = topupRequest; 90 exports.topupRequest = topupRequest;
91 exports.createSignature = createSignature;
92 exports.createBillNumber = createBillNumber;
52 93