Commit 7ab18825f17eef9567c9173b011151e17e09d8f7
1 parent
75e0f7eb82
Exists in
master
_reportToCore jadi reportToCore
Showing 1 changed file with 3 additions and 3 deletions Inline Diff
partner.js
1 | "use strict"; | 1 | "use strict"; |
2 | 2 | ||
3 | const request = require('request'); | 3 | const request = require('request'); |
4 | const config = require('komodo-sdk/config'); | 4 | const config = require('komodo-sdk/config'); |
5 | const logger = require('komodo-sdk/logger'); | 5 | const logger = require('komodo-sdk/logger'); |
6 | const matrix = require('komodo-sdk/matrix'); | 6 | const matrix = require('komodo-sdk/matrix'); |
7 | const pull = require('komodo-sdk/gateway/pull'); | 7 | const pull = require('komodo-sdk/gateway/pull'); |
8 | 8 | ||
9 | const misc = require('./partner-misc'); | 9 | const misc = require('./partner-misc'); |
10 | 10 | ||
11 | /** | 11 | /** |
12 | * Pembelian ke partner | 12 | * Pembelian ke partner |
13 | * | 13 | * |
14 | * Merupakan fungsi mandatory yang harus dimiliki oleh setiap gateway. | 14 | * Merupakan fungsi mandatory yang harus dimiliki oleh setiap gateway. |
15 | */ | 15 | */ |
16 | function buy(task) { | 16 | function buy(task) { |
17 | _requestToPartner(task, false); | 17 | _requestToPartner(task, false); |
18 | } | 18 | } |
19 | 19 | ||
20 | /** | 20 | /** |
21 | * Pemeriksaan status transaksi ke partner | 21 | * Pemeriksaan status transaksi ke partner |
22 | * Merupakan fungsi mandatory yang harus dimiliki oleh setiap gateway. | 22 | * Merupakan fungsi mandatory yang harus dimiliki oleh setiap gateway. |
23 | */ | 23 | */ |
24 | function statusCheck(task) { | 24 | function statusCheck(task) { |
25 | _requestToPartner(task, true); | 25 | _requestToPartner(task, true); |
26 | } | 26 | } |
27 | 27 | ||
28 | /** | 28 | /** |
29 | * Mengirim request ke partner. | 29 | * Mengirim request ke partner. |
30 | * | 30 | * |
31 | * Untuk digunakan oleh buy dan checkStatus. | 31 | * Untuk digunakan oleh buy dan checkStatus. |
32 | */ | 32 | */ |
33 | function _requestToPartner(task, pendingOnError) { | 33 | function _requestToPartner(task, pendingOnError) { |
34 | 34 | ||
35 | const requestOptions = misc.createRequestOptions(task, config); | 35 | const requestOptions = misc.createRequestOptions(task, config); |
36 | 36 | ||
37 | logger.verbose('Requeting to partner', {requestOptions: requestOptions}); | 37 | logger.verbose('Requeting to partner', {requestOptions: requestOptions}); |
38 | request.post(requestOptions, function(err, res, body) { | 38 | request.post(requestOptions, function(err, res, body) { |
39 | 39 | ||
40 | if (err) { | 40 | if (err) { |
41 | 41 | ||
42 | let rc = '68'; | 42 | let rc = '68'; |
43 | if (!pendingOnError) { rc = '91'; } | 43 | if (!pendingOnError) { rc = '91'; } |
44 | 44 | ||
45 | logger.warn('Error requesting to partner', {task: task, err: err}) | 45 | logger.warn('Error requesting to partner', {task: task, err: err}) |
46 | 46 | ||
47 | _reportToCore({ | 47 | reportToCore({ |
48 | trx_id: task.trx_id, | 48 | trx_id: task.trx_id, |
49 | rc: rc, | 49 | rc: rc, |
50 | message: 'Error requesting to partner: ' + err, | 50 | message: 'Error requesting to partner: ' + err, |
51 | handler: config.handler_name, | 51 | handler: config.handler_name, |
52 | task: task | 52 | task: task |
53 | }) | 53 | }) |
54 | 54 | ||
55 | return; | 55 | return; |
56 | } | 56 | } |
57 | 57 | ||
58 | if (res.statusCode != 200) { | 58 | if (res.statusCode != 200) { |
59 | let rc = '68'; | 59 | let rc = '68'; |
60 | logger.warn('Partner returning non 200 HTTP STATUS CODE', {task: task, http_status_code: res.statusCode}) | 60 | logger.warn('Partner returning non 200 HTTP STATUS CODE', {task: task, http_status_code: res.statusCode}) |
61 | 61 | ||
62 | _reportToCore({ | 62 | reportToCore({ |
63 | trx_id: task.trx_id, | 63 | trx_id: task.trx_id, |
64 | rc: rc, | 64 | rc: rc, |
65 | message: 'Partner returning HTTP STATUS CODE ' + res.statusCode + ' instead of 200', | 65 | message: 'Partner returning HTTP STATUS CODE ' + res.statusCode + ' instead of 200', |
66 | handler: config.handler_name, | 66 | handler: config.handler_name, |
67 | task: task | 67 | task: task |
68 | }) | 68 | }) |
69 | 69 | ||
70 | return; | 70 | return; |
71 | } | 71 | } |
72 | 72 | ||
73 | misc.processPartnerResponseBody(body, task); | 73 | misc.processPartnerResponseBody(body, task); |
74 | }) | 74 | }) |
75 | } | 75 | } |
76 | 76 | ||
77 | /** | 77 | /** |
78 | * Mengirim report hasil transaksi ke CORE | 78 | * Mengirim report hasil transaksi ke CORE |
79 | */ | 79 | */ |
80 | function reportToCore(data) { | 80 | function reportToCore(data) { |
81 | pull.report(data); | 81 | pull.report(data); |
82 | 82 | ||
83 | if (data && data.task && data.rc == '68') { | 83 | if (data && data.task && data.rc == '68') { |
84 | let delay_ms = 60 * 1000; | 84 | let delay_ms = 60 * 1000; |
85 | if (config.auto_resend && config.auto_resend.delay_ms) { | 85 | if (config.auto_resend && config.auto_resend.delay_ms) { |
86 | delay_ms = Number(config.auto_resend.delay_ms); | 86 | delay_ms = Number(config.auto_resend.delay_ms); |
87 | } | 87 | } |
88 | 88 | ||
89 | let max_retry = 60; | 89 | let max_retry = 60; |
90 | if (config.auto_resend && config.auto_resend.max_retry) { | 90 | if (config.auto_resend && config.auto_resend.max_retry) { |
91 | max_retry = Number(config.auto_resend.max_retry); | 91 | max_retry = Number(config.auto_resend.max_retry); |
92 | } | 92 | } |
93 | 93 | ||
94 | setTimeout( | 94 | setTimeout( |
95 | function() { | 95 | function() { |
96 | 96 | ||
97 | if (data.task.remaining_retry === undefined) { | 97 | if (data.task.remaining_retry === undefined) { |
98 | data.task.remaining_retry = max_retry; | 98 | data.task.remaining_retry = max_retry; |
99 | } | 99 | } |
100 | 100 | ||
101 | if (data.task.remaining_retry--) { | 101 | if (data.task.remaining_retry--) { |
102 | logger.verbose('Got pending status, retrying', {task: data.task}); | 102 | logger.verbose('Got pending status, retrying', {task: data.task}); |
103 | statusCheck(data.task); | 103 | statusCheck(data.task); |
104 | } | 104 | } |
105 | else { | 105 | else { |
106 | logger.verbose('Exceeding retry pending status', {task: data.task}); | 106 | logger.verbose('Exceeding retry pending status', {task: data.task}); |
107 | } | 107 | } |
108 | }, | 108 | }, |
109 | delay_ms | 109 | delay_ms |
110 | ) | 110 | ) |
111 | } | 111 | } |
112 | } | 112 | } |
113 | 113 | ||
114 | exports.buy = buy; | 114 | exports.buy = buy; |
115 | exports.statusCheck = statusCheck; | 115 | exports.statusCheck = statusCheck; |
116 | exports.reportToCore = reportToCore; | 116 | exports.reportToCore = reportToCore; |
117 | 117 |