-
Notifications
You must be signed in to change notification settings - Fork 72
Expand file tree
/
Copy pathsnapBiCancel.js
More file actions
186 lines (156 loc) · 5.58 KB
/
snapBiCancel.js
File metadata and controls
186 lines (156 loc) · 5.58 KB
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
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();
let snap = new midtransClient.Snap({
// Set to true if you want Production Environment (accept real transaction).
isProduction : false,
serverKey : 'YOUR_SERVER_KEY'
});
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;
let directDebitCancelByReferenceNoBody = {
"originalReferenceNo" : "A120241031082957gyKCzhKqB2ID"
}
let directDebitCancelByExternalIdBody = {
"originalExternalId" : "8a074fc8-4eac-4b06-959a-95aeb91c7920"
}
let vaCancelBody = {
"partnerServiceId": " 1234",
"customerNo": "564902",
"virtualAccountNo": " 1234564902",
"trxId": "18f2bd6d-e1be-43e2-89e4-8f9088251f60",
"additionalInfo": {
"merchantId": merchantId
}
}
let qrisCancelBody = {
"originalReferenceNo": "A120240930075936LUOBMHxvPOID",
"merchantId": merchantId,
"reason": "cancel reason"
}
let additionalHeader = {
"X-device-id": "your device id",
"debug-id": "your debug id"
}
/**
* Example code for SnapBI cancel.
* For Direct Debit, to cancel transaction you can use externalId or referenceNo.
* you can refer to the variable directDebitCancelByReferenceNoBody or directDebitCancelByExternalIdBody (for direct debit).
* For VA you can refer to the variable vaCancelBody to see the value.
* For Qris you can refer to qrisCancelBody to see the value.
*
* Below are example code to cancel the transaction.
*/
/**
* Example code for Direct Debit to cancel using referenceNo
*/
midtransClient.SnapBi.directDebit()
.withBody(directDebitCancelByReferenceNoBody)
.cancel(externalId)
.then(r =>
console.log("Snap Bi result: " + JSON.stringify(r, null, 2))
)
midtransClient.SnapBi.directDebit()
.withBody(directDebitCancelByReferenceNoBody)
.withAccessToken("your access token")
.cancel(externalId)
.then(r =>
console.log("Snap Bi result: " + JSON.stringify(r, null, 2))
)
midtransClient.SnapBi.directDebit()
.withBody(directDebitCancelByReferenceNoBody)
.withAccessTokenHeader(additionalHeader)
.withTransactionHeader(additionalHeader)
.cancel(externalId)
.then(r =>
console.log("Snap Bi result: " + JSON.stringify(r, null, 2))
)
/**
* Example code for Direct Debit cancel using externalId
*/
midtransClient.SnapBi.directDebit()
.withBody(directDebitCancelByExternalIdBody)
.cancel(externalId)
.then(r =>
console.log("Snap Bi result: " + JSON.stringify(r, null, 2))
)
midtransClient.SnapBi.directDebit()
.withBody(directDebitCancelByExternalIdBody)
.withAccessToken("your access token")
.cancel(externalId)
.then(r =>
console.log("Snap Bi result: " + JSON.stringify(r, null, 2))
)
midtransClient.SnapBi.directDebit()
.withBody(directDebitCancelByExternalIdBody)
.withAccessTokenHeader(additionalHeader)
.withTransactionHeader(additionalHeader)
.cancel(externalId)
.then(r =>
console.log("Snap Bi result: " + JSON.stringify(r, null, 2))
)
/**
* Example code for VA (Bank Transfer) to cancel transaction
*/
midtransClient.SnapBi.va()
.withBody(vaCancelBody)
.cancel(externalId)
.then(r =>
console.log("Snap Bi result: " + JSON.stringify(r, null, 2))
)
midtransClient.SnapBi.va()
.withBody(vaCancelBody)
.withAccessToken("your access token")
.cancel(externalId)
.then(r =>
console.log("Snap Bi result: " + JSON.stringify(r, null, 2))
)
midtransClient.SnapBi.va()
.withBody(vaCancelBody)
.withAccessTokenHeader(additionalHeader)
.withTransactionHeader(additionalHeader)
.cancel("9af65919-8f31-45a5-b4f5-722c3664696d")
.then(r =>
console.log("Snap Bi result: " + JSON.stringify(r, null, 2))
)
/**
* Example code for Qris to cancel transaction
*/
midtransClient.SnapBi.qris()
.withBody(qrisCancelBody)
.cancel(externalId)
.then(r =>
console.log("Snap Bi result: " + JSON.stringify(r, null, 2))
)
midtransClient.SnapBi.qris()
.withBody(qrisCancelBody)
.withAccessToken("your access token")
.cancel(externalId)
.then(r =>
console.log("Snap Bi result: " + JSON.stringify(r, null, 2))
)
midtransClient.SnapBi.qris()
.withBody(qrisCancelBody)
.withAccessTokenHeader(additionalHeader)
.withTransactionHeader(additionalHeader)
.cancel("9af65919-8f31-45a5-b4f5-722c3664696d")
.then(r =>
console.log("Snap Bi result: " + JSON.stringify(r, null, 2))
)