-
Notifications
You must be signed in to change notification settings - Fork 60
/
Copy pathsnapBiStatus.js
186 lines (155 loc) · 5.59 KB
/
snapBiStatus.js
1
2
3
4
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
const midtransClient = require('midtrans-client'); // use this if installed via NPM
// This is just for very basic implementation reference, in production, you should validate the incoming requests and implement your backend more securely.
const { randomUUID } = require('crypto');
/**
* Setup your credentials here to try the example code.
*/
const clientId = "Zabcdefg-MIDTRANS-CLIENT-SNAP";
// Ensure to include newlines properly in the private key as shown below
const private_key = `-----BEGIN PRIVATE KEY-----
BCDEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC7Zk6kJjqamLddaN1lK03XJW3vi5zOSA7V+5eSiYeM9tCOGouJewN/Py58wgvRh7OMAMm1IbSZpAbcZbBa1=
-----END PRIVATE KEY-----`;
const clientSecret = "ABcdefghiSrLJPgKRXqdjaSAuj5WDAbeaXAX8Vn7CWGHuBCfFgABCDVqRLvNZf8BaqPGKaksMjrZDrZqzZEbaA1AYFwBewIWCqLZr4PuvuLBqfTmYIzAbCakHKejABCa";
const partnerId = "partner-id";
const merchantId = "M001234";
const channelId = "12345";
const externalId = randomUUID();
midtransClient.SnapBiConfig.snapBiPrivateKey = private_key;
midtransClient.SnapBiConfig.snapBiClientSecret = clientSecret;
midtransClient.SnapBiConfig.snapBiPartnerId = partnerId;
midtransClient.SnapBiConfig.snapBiChannelId = channelId;
midtransClient.SnapBiConfig.snapBiClientId = clientId
midtransClient.SnapBiConfig.enableLogging = true;
const externalId = randomUUID();
let directDebitStatusBodyByExternalId = {
"originalExternalId": "67fd4d9e-5fe6-477c-ab99-026a9ab88c34",
"serviceCode": "54"
}
let directDebitStatusBodyByReferenceNo = {
"originalReferenceNo": "A120240930071006pW0gbFMTguID",
"serviceCode": "54"
}
let vaStatusBody = {
"partnerServiceId": " 1234",
"customerNo": "356899",
"virtualAccountNo": " 1234356899",
"inquiryRequestId": "5a5597d1-615d-4df0-875d-aa429b2b1b68",
"additionalInfo": {
"merchantId": merchantId
}
}
let qrisStatusBody = {
"originalReferenceNo": "A120240930074508BIDP4QaNnJID",
"originalPartnerReferenceNo": "b7d2bc2e-9d5b-4cec-a39f-4244c11e1b98",
"merchantId": merchantId,
"serviceCode": "47"
}
let additionalHeader = {
"X-device-id": "your device id",
"debug-id": "your debug id"
}
/**
* Example code for SnapBI status.
* For Direct Debit, to get the transaction status you can use externalId or referenceNo.
* you can refer to the variable directDebitStatusBodyByReferenceNo or directDebitStatusBodyByExternalId (for direct debit).
* For VA you can refer to the variable vaStatusBody to see the value.
* For Qris you can refer to qrisStatusBody to see the value.
*
* Below are example code to get the transaction status.
*/
/**
* Example code for Direct Debit to get the transaction status using externalId
*/
midtransClient.SnapBi.directDebit()
.withBody(directDebitStatusBodyByExternalId)
.getStatus(externalId)
.then(r =>
console.log("Snap Bi result: " + JSON.stringify(r, null, 2))
)
midtransClient.SnapBi.directDebit()
.withBody(directDebitStatusBodyByExternalId)
.withAccessToken("your access token")
.getStatus(externalId)
.then(r =>
console.log("Snap Bi result: " + JSON.stringify(r, null, 2))
)
midtransClient.SnapBi.directDebit()
.withBody(directDebitStatusBodyByExternalId)
.withAccessTokenHeader(additionalHeader)
.withTransactionHeader(additionalHeader)
.getStatus(externalId)
.then(r =>
console.log("Snap Bi result: " + JSON.stringify(r, null, 2))
)
/**
* Example code for Direct Debit to get the transaction status using referenceNo
*/
midtransClient.SnapBi.directDebit()
.withBody(directDebitStatusBodyByReferenceNo)
.getStatus(externalId)
.then(r =>
console.log("Snap Bi result: " + JSON.stringify(r, null, 2))
)
midtransClient.SnapBi.directDebit()
.withBody(directDebitStatusBodyByReferenceNo)
.withAccessToken("your access token")
.getStatus(externalId)
.then(r =>
console.log("Snap Bi result: " + JSON.stringify(r, null, 2))
)
midtransClient.SnapBi.directDebit()
.withBody(directDebitStatusBodyByReferenceNo)
.withAccessTokenHeader(additionalHeader)
.withTransactionHeader(additionalHeader)
.getStatus(externalId)
.then(r =>
console.log("Snap Bi result: " + JSON.stringify(r, null, 2))
)
/**
* Example code for VA to get the transaction status.
*/
midtransClient.SnapBi.va()
.withBody(vaStatusBody)
.getStatus(externalId)
.then(r =>
console.log("Snap Bi result: " + JSON.stringify(r, null, 2))
)
midtransClient.SnapBi.va()
.withBody(vaStatusBody)
.withAccessToken("your access token")
.getStatus(externalId)
.then(r =>
console.log("Snap Bi result: " + JSON.stringify(r, null, 2))
)
midtransClient.SnapBi.va()
.withBody(vaStatusBody)
.withAccessTokenHeader(additionalHeader)
.withTransactionHeader(additionalHeader)
.getStatus(externalId)
.then(r =>
console.log("Snap Bi result: " + JSON.stringify(r, null, 2))
)
/**
* Example code for Qris to get the transaction status.
*/
midtransClient.SnapBi.qris()
.withBody(qrisStatusBody)
.getStatus(externalId)
.then(r =>
console.log("Snap Bi result: " + JSON.stringify(r, null, 2))
)
midtransClient.SnapBi.qris()
.withBody(qrisStatusBody)
.withAccessToken("your access token")
.getStatus(externalId)
.then(r =>
console.log("Snap Bi result: " + JSON.stringify(r, null, 2))
)
midtransClient.SnapBi.qris()
.withBody(qrisStatusBody)
.withAccessTokenHeader(additionalHeader)
.withTransactionHeader(additionalHeader)
.getStatus(externalId)
.then(r =>
console.log("Snap Bi result: " + JSON.stringify(r, null, 2))
)