globalpayments-api 3.11.3 → 3.11.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -1
- package/lib/src/Entities/Address.d.ts +1 -0
- package/lib/src/Entities/Address.js +1 -0
- package/lib/src/Entities/Address.js.map +1 -1
- package/lib/src/Entities/Enums/AcquisitionType.d.ts +2 -1
- package/lib/src/Entities/Enums/AcquisitionType.js +1 -0
- package/lib/src/Entities/Enums/AcquisitionType.js.map +1 -1
- package/lib/src/Terminals/Abstractions/IDeviceResponse.d.ts +2 -0
- package/lib/src/Terminals/Builders/TerminalAuthBuilder.d.ts +13 -0
- package/lib/src/Terminals/Builders/TerminalAuthBuilder.js +24 -0
- package/lib/src/Terminals/Builders/TerminalAuthBuilder.js.map +1 -1
- package/lib/src/Terminals/Builders/TerminalBuilder.d.ts +3 -3
- package/lib/src/Terminals/Builders/TerminalBuilder.js.map +1 -1
- package/lib/src/Terminals/Builders/TerminalManageBuilder.d.ts +3 -0
- package/lib/src/Terminals/Builders/TerminalManageBuilder.js +6 -0
- package/lib/src/Terminals/Builders/TerminalManageBuilder.js.map +1 -1
- package/lib/src/Terminals/UPA/Reponses/TransactionResponse.d.ts +2 -0
- package/lib/src/Terminals/UPA/Reponses/TransactionResponse.js +6 -0
- package/lib/src/Terminals/UPA/Reponses/TransactionResponse.js.map +1 -1
- package/lib/src/Terminals/UPA/UpaController.js +31 -7
- package/lib/src/Terminals/UPA/UpaController.js.map +1 -1
- package/lib/src/Terminals/UPA/UpaInterface.d.ts +1 -1
- package/lib/src/Terminals/UPA/UpaInterface.js +4 -2
- package/lib/src/Terminals/UPA/UpaInterface.js.map +1 -1
- package/lib/test/Unit/Terminals/Builders/TerminalBuilderParityTests.d.ts +17 -0
- package/lib/test/Unit/Terminals/Builders/TerminalBuilderParityTests.js +325 -0
- package/lib/test/Unit/Terminals/Builders/TerminalBuilderParityTests.js.map +1 -0
- package/lib/test/Unit/Terminals/UPA/UpaAdmin.test.js +195 -3
- package/lib/test/Unit/Terminals/UPA/UpaAdmin.test.js.map +1 -1
- package/lib/test/Unit/Terminals/UPA/UpaCredit.test.js +100 -2
- package/lib/test/Unit/Terminals/UPA/UpaCredit.test.js.map +1 -1
- package/lib/test/Unit/Terminals/UPA/UpaEMVParameterValidation.test.d.ts +7 -0
- package/lib/test/Unit/Terminals/UPA/UpaEMVParameterValidation.test.js +258 -0
- package/lib/test/Unit/Terminals/UPA/UpaEMVParameterValidation.test.js.map +1 -0
- package/lib/test/Unit/Terminals/UPA/UpaJiraStoryValidation.test.d.ts +26 -0
- package/lib/test/Unit/Terminals/UPA/UpaJiraStoryValidation.test.js +389 -0
- package/lib/test/Unit/Terminals/UPA/UpaJiraStoryValidation.test.js.map +1 -0
- package/lib/test/Unit/Terminals/UPA/UpaLanguageCode.test.d.ts +18 -0
- package/lib/test/Unit/Terminals/UPA/UpaLanguageCode.test.js +314 -0
- package/lib/test/Unit/Terminals/UPA/UpaLanguageCode.test.js.map +1 -0
- package/package.json +1 -1
- package/lib/test/Integration/Terminals/UPA/UpaTransactionResponseLive.test.d.ts +0 -1
- package/lib/test/Integration/Terminals/UPA/UpaTransactionResponseLive.test.js +0 -378
- package/lib/test/Integration/Terminals/UPA/UpaTransactionResponseLive.test.js.map +0 -1
- package/lib/test/Unit/Builders/AuthorizationBuilder/SupplementaryData.test.d.ts +0 -1
- package/lib/test/Unit/Builders/AuthorizationBuilder/SupplementaryData.test.js +0 -147
- package/lib/test/Unit/Builders/AuthorizationBuilder/SupplementaryData.test.js.map +0 -1
- package/lib/test/Unit/Terminals/UPA/Reponses/BatchList.test.d.ts +0 -1
- package/lib/test/Unit/Terminals/UPA/Reponses/BatchList.test.js +0 -64
- package/lib/test/Unit/Terminals/UPA/Reponses/BatchList.test.js.map +0 -1
- package/lib/test/Unit/Terminals/UPA/Reponses/BatchReportResponse.test.d.ts +0 -1
- package/lib/test/Unit/Terminals/UPA/Reponses/BatchReportResponse.test.js +0 -145
- package/lib/test/Unit/Terminals/UPA/Reponses/BatchReportResponse.test.js.map +0 -1
- package/lib/test/Unit/Terminals/UPA/Reponses/OpenTabDetailsResponse.test.d.ts +0 -1
- package/lib/test/Unit/Terminals/UPA/Reponses/OpenTabDetailsResponse.test.js +0 -70
- package/lib/test/Unit/Terminals/UPA/Reponses/OpenTabDetailsResponse.test.js.map +0 -1
- package/lib/test/Unit/Terminals/UPA/Reponses/SafReportResponse.test.d.ts +0 -1
- package/lib/test/Unit/Terminals/UPA/Reponses/SafReportResponse.test.js +0 -112
- package/lib/test/Unit/Terminals/UPA/Reponses/SafReportResponse.test.js.map +0 -1
- package/lib/test/Unit/Terminals/UPA/Reponses/UpaEODResponse.test.d.ts +0 -1
- package/lib/test/Unit/Terminals/UPA/Reponses/UpaEODResponse.test.js +0 -108
- package/lib/test/Unit/Terminals/UPA/Reponses/UpaEODResponse.test.js.map +0 -1
- package/lib/test/Unit/Terminals/UPA/Reponses/UpaSAFResponse.test.d.ts +0 -1
- package/lib/test/Unit/Terminals/UPA/Reponses/UpaSAFResponse.test.js +0 -95
- package/lib/test/Unit/Terminals/UPA/Reponses/UpaSAFResponse.test.js.map +0 -1
- package/lib/test/Unit/Terminals/UPA/Responses/UpaTransactionResponse.test.d.ts +0 -1
- package/lib/test/Unit/Terminals/UPA/Responses/UpaTransactionResponse.test.js +0 -1624
- package/lib/test/Unit/Terminals/UPA/Responses/UpaTransactionResponse.test.js.map +0 -1
- package/lib/test/Unit/Terminals/UPA/UpaStory1Methods.test.d.ts +0 -1
- package/lib/test/Unit/Terminals/UPA/UpaStory1Methods.test.js +0 -250
- package/lib/test/Unit/Terminals/UPA/UpaStory1Methods.test.js.map +0 -1
- package/lib/test/Unit/Terminals/UPA/UpaStory2Methods.test.d.ts +0 -1
- package/lib/test/Unit/Terminals/UPA/UpaStory2Methods.test.js +0 -1277
- package/lib/test/Unit/Terminals/UPA/UpaStory2Methods.test.js.map +0 -1
- package/lib/test/Unit/Terminals/UPA/UpaStory3_4Methods.test.d.ts +0 -1
- package/lib/test/Unit/Terminals/UPA/UpaStory3_4Methods.test.js +0 -411
- package/lib/test/Unit/Terminals/UPA/UpaStory3_4Methods.test.js.map +0 -1
|
@@ -1,378 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
/**
|
|
4
|
-
* Integration tests for UPA TransactionResponse using live MIC device.
|
|
5
|
-
*
|
|
6
|
-
* These tests run actual UPA transactions against a live merchant device
|
|
7
|
-
* to verify proper mapping of all transaction response fields.
|
|
8
|
-
*
|
|
9
|
-
* Prerequisites:
|
|
10
|
-
* - UPA device configured and connected via MEET_IN_THE_CLOUD (MITC)
|
|
11
|
-
* - Environment variables set:
|
|
12
|
-
* - GP_API_APP_ID: Global Payments API application ID
|
|
13
|
-
* - GP_API_APP_KEY: Global Payments API application key
|
|
14
|
-
* - UPA_LIVE: Set to "true" to enable live testing
|
|
15
|
-
* - GP_API_ACCOUNT_NAME: (Optional) Account name for transaction processing
|
|
16
|
-
*
|
|
17
|
-
* Test Configuration:
|
|
18
|
-
* - Region: US
|
|
19
|
-
* - Gateway: GP-API
|
|
20
|
-
* - Environment: Test (Sandbox)
|
|
21
|
-
* - Connection Mode: MEET_IN_THE_CLOUD (MITC)
|
|
22
|
-
* - Payment types: VISA, MC (Mastercard), AMEX
|
|
23
|
-
*/
|
|
24
|
-
const src_1 = require("../../../../src");
|
|
25
|
-
const UpaHelpertest_1 = require("../../../Unit/Terminals/UPA/UpaHelpertest");
|
|
26
|
-
jest.setTimeout(120000); // 2 minutes timeout for live device interaction
|
|
27
|
-
/**
|
|
28
|
-
* Helper to add delay between transactions to allow device to settle
|
|
29
|
-
*/
|
|
30
|
-
async function settleDevice(delayMs = 3000) {
|
|
31
|
-
if (UpaHelpertest_1.useLiveMic) {
|
|
32
|
-
await new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
(0, UpaHelpertest_1.describeUpaLive)("UPA Live Transaction Response Field Mapping - VISA", () => {
|
|
36
|
-
let device;
|
|
37
|
-
beforeEach(() => {
|
|
38
|
-
device = (0, UpaHelpertest_1.createTestDevice)();
|
|
39
|
-
});
|
|
40
|
-
afterEach(async () => {
|
|
41
|
-
await settleDevice();
|
|
42
|
-
});
|
|
43
|
-
test("should map all fields from VISA sale transaction", async () => {
|
|
44
|
-
try {
|
|
45
|
-
const response = await device
|
|
46
|
-
.sale(10.0) // $10.00
|
|
47
|
-
.withCurrency("USD")
|
|
48
|
-
.execute();
|
|
49
|
-
// Verify response is TransactionResponse instance
|
|
50
|
-
expect(response).toBeInstanceOf(src_1.TransactionResponse);
|
|
51
|
-
// === Response ID and Status Fields ===
|
|
52
|
-
expect(response.responseId).toBeDefined();
|
|
53
|
-
expect(response.responseId).not.toBe("");
|
|
54
|
-
expect(response.status).toBeDefined();
|
|
55
|
-
expect(response.command).toBe("Sale");
|
|
56
|
-
// === Reference and Terminal Numbers ===
|
|
57
|
-
expect(response.referenceNumber).toBeDefined();
|
|
58
|
-
expect(response.terminalRefNumber).toBeDefined();
|
|
59
|
-
expect(response.requestId).toBeDefined();
|
|
60
|
-
// === Response Codes ===
|
|
61
|
-
expect(response.responseCode).toBeDefined();
|
|
62
|
-
expect(response.responseText).toBeDefined();
|
|
63
|
-
expect(response.approvalCode).toBeDefined();
|
|
64
|
-
expect(response.deviceResponseCode).toBeDefined();
|
|
65
|
-
expect(response.deviceResponseText).toBeDefined();
|
|
66
|
-
// === AVS and CVV Response Fields ===
|
|
67
|
-
expect(response.avsResponseCode).toBeDefined();
|
|
68
|
-
expect(response.avsResponseText).toBeDefined();
|
|
69
|
-
expect(response.cvvResponseCode).toBeDefined();
|
|
70
|
-
expect(response.cvvResponseText).toBeDefined();
|
|
71
|
-
// === Amount Fields ===
|
|
72
|
-
expect(response.baseAmount).toBe(1000); // 10.00 in cents
|
|
73
|
-
expect(response.transactionAmount).toBe(1000);
|
|
74
|
-
expect(response.tipAmount).toBeGreaterThanOrEqual(0);
|
|
75
|
-
expect(response.taxAmount).toBeGreaterThanOrEqual(0);
|
|
76
|
-
expect(response.authorizedAmount).toBeGreaterThanOrEqual(0);
|
|
77
|
-
expect(response.cashBackAmount).toBeGreaterThanOrEqual(0);
|
|
78
|
-
expect(response.balanceAmount).toBeGreaterThanOrEqual(0);
|
|
79
|
-
// === Card Information ===
|
|
80
|
-
expect(response.paymentType).toBe("VISA");
|
|
81
|
-
expect(response.cardType).toBe("VISA");
|
|
82
|
-
expect(response.maskedCardNumber).toMatch(/^\d{4}\*+\d{4}$/);
|
|
83
|
-
expect(response.cardBIN).toBeDefined();
|
|
84
|
-
expect(response.expirationDate).toMatch(/^\d{4}$/); // MMYY format
|
|
85
|
-
expect(response.entryMethod).toBeDefined();
|
|
86
|
-
expect(response.cardHolderName).toBeDefined();
|
|
87
|
-
expect(response.panSequenceNumber).toBeDefined();
|
|
88
|
-
// === EMV Tag Fields (Chip Card) ===
|
|
89
|
-
// These should be populated for chip card transactions
|
|
90
|
-
if (response.entryMethod === "CHIP") {
|
|
91
|
-
expect(response.applicationLabel).toBeDefined();
|
|
92
|
-
expect(response.applicationId).toBeDefined();
|
|
93
|
-
expect(response.emvApplicationLabel).toBeDefined();
|
|
94
|
-
expect(response.emvApplicationId).toBeDefined();
|
|
95
|
-
expect(response.emvApplicationCryptogram).toBeDefined();
|
|
96
|
-
expect(response.cardHolderVerificationMethod).toBeDefined();
|
|
97
|
-
expect(response.terminalVerificationResults).toBeDefined();
|
|
98
|
-
// Verify EMV tag mappings
|
|
99
|
-
expect(response.applicationIdentifier).toBeDefined();
|
|
100
|
-
expect(response.transactionDate).toMatch(/^\d{6}$/); // YYMMDD
|
|
101
|
-
expect(response.amountAuthorised).toBeDefined();
|
|
102
|
-
expect(response.terminalType).toBeDefined();
|
|
103
|
-
expect(response.applicationTransactionCounter).toBeDefined();
|
|
104
|
-
}
|
|
105
|
-
// === Token Fields (if supported) ===
|
|
106
|
-
if (response.token) {
|
|
107
|
-
expect(response.tokenResponseCode).toBeDefined();
|
|
108
|
-
expect(response.tokenResponseMessage).toBeDefined();
|
|
109
|
-
}
|
|
110
|
-
console.log("✓ VISA sale response fields validated successfully");
|
|
111
|
-
console.log(` Response ID: ${response.responseId}`);
|
|
112
|
-
console.log(` Transaction ID: ${response.referenceNumber}`);
|
|
113
|
-
console.log(` Amount: ${response.transactionAmount / 100} USD`);
|
|
114
|
-
console.log(` Card: ${response.maskedCardNumber}`);
|
|
115
|
-
console.log(` EMV Label: ${response.applicationLabel}`);
|
|
116
|
-
}
|
|
117
|
-
catch (error) {
|
|
118
|
-
console.error("Error during VISA sale:", error);
|
|
119
|
-
throw error;
|
|
120
|
-
}
|
|
121
|
-
});
|
|
122
|
-
test("should map all fields from VISA sale with tip", async () => {
|
|
123
|
-
try {
|
|
124
|
-
const response = await device
|
|
125
|
-
.sale(50.0) // $50.00
|
|
126
|
-
.withCurrency("USD")
|
|
127
|
-
.withTip(5.0) // $5.00 tip
|
|
128
|
-
.execute();
|
|
129
|
-
expect(response.status).toBeDefined();
|
|
130
|
-
expect(response.baseAmount).toBe(5000); // 50.00
|
|
131
|
-
expect(response.tipAmount).toBe(500); // 5.00
|
|
132
|
-
expect(response.transactionAmount).toBe(5500); // 50.00 + 5.00
|
|
133
|
-
expect(response.paymentType).toBe("VISA");
|
|
134
|
-
console.log("✓ VISA sale with tip response fields validated successfully");
|
|
135
|
-
console.log(` Base Amount: ${response.baseAmount / 100} USD`);
|
|
136
|
-
console.log(` Tip Amount: ${response.tipAmount / 100} USD`);
|
|
137
|
-
console.log(` Total: ${response.transactionAmount / 100} USD`);
|
|
138
|
-
}
|
|
139
|
-
catch (error) {
|
|
140
|
-
console.error("Error during VISA sale with tip:", error);
|
|
141
|
-
throw error;
|
|
142
|
-
}
|
|
143
|
-
});
|
|
144
|
-
test("should map authorization fields from VISA pre-auth", async () => {
|
|
145
|
-
try {
|
|
146
|
-
const response = await device
|
|
147
|
-
.preAuth(25.0) // $25.00
|
|
148
|
-
.withCurrency("USD")
|
|
149
|
-
.execute();
|
|
150
|
-
expect(response.status).toBeDefined();
|
|
151
|
-
expect(response.command).toBe("PreAuth");
|
|
152
|
-
expect(response.approvalCode).toBeDefined();
|
|
153
|
-
expect(response.authorizedAmount).toBe(2500); // 25.00
|
|
154
|
-
expect(response.paymentType).toBe("VISA");
|
|
155
|
-
console.log("✓ VISA pre-auth response fields validated successfully");
|
|
156
|
-
console.log(` Authorized Amount: ${response.authorizedAmount / 100} USD`);
|
|
157
|
-
}
|
|
158
|
-
catch (error) {
|
|
159
|
-
console.error("Error during VISA pre-auth:", error);
|
|
160
|
-
throw error;
|
|
161
|
-
}
|
|
162
|
-
});
|
|
163
|
-
});
|
|
164
|
-
(0, UpaHelpertest_1.describeUpaLive)("UPA Live Transaction Response Field Mapping - Mastercard", () => {
|
|
165
|
-
let device;
|
|
166
|
-
beforeEach(() => {
|
|
167
|
-
device = (0, UpaHelpertest_1.createTestDevice)();
|
|
168
|
-
});
|
|
169
|
-
afterEach(async () => {
|
|
170
|
-
await settleDevice();
|
|
171
|
-
});
|
|
172
|
-
test("should map all fields from Mastercard sale transaction", async () => {
|
|
173
|
-
try {
|
|
174
|
-
const response = await device
|
|
175
|
-
.sale(15.0) // $15.00
|
|
176
|
-
.withCurrency("USD")
|
|
177
|
-
.execute();
|
|
178
|
-
// Verify response is TransactionResponse instance
|
|
179
|
-
expect(response).toBeInstanceOf(src_1.TransactionResponse);
|
|
180
|
-
// === Basic Response Fields ===
|
|
181
|
-
expect(response.responseId).toBeDefined();
|
|
182
|
-
expect(response.status).toBeDefined();
|
|
183
|
-
expect(response.command).toBe("Sale");
|
|
184
|
-
// === Card Information ===
|
|
185
|
-
expect(response.paymentType).toBe("MC");
|
|
186
|
-
expect(response.cardType).toBe("MC");
|
|
187
|
-
expect(response.maskedCardNumber).toMatch(/^\d{4}\*+\d{4}$/);
|
|
188
|
-
// === Amount Fields ===
|
|
189
|
-
expect(response.baseAmount).toBe(1500); // 15.00 in cents
|
|
190
|
-
expect(response.transactionAmount).toBe(1500);
|
|
191
|
-
// === AVS/CVV ===
|
|
192
|
-
expect(response.avsResponseCode).toBeDefined();
|
|
193
|
-
expect(response.cvvResponseCode).toBeDefined();
|
|
194
|
-
// === EMV Fields (if chip) ===
|
|
195
|
-
if (response.entryMethod === "CHIP") {
|
|
196
|
-
expect(response.emvApplicationLabel).toBe("MASTERCARD");
|
|
197
|
-
expect(response.applicationLabel).toBeDefined();
|
|
198
|
-
}
|
|
199
|
-
console.log("✓ Mastercard sale response fields validated successfully");
|
|
200
|
-
console.log(` Card: ${response.maskedCardNumber}`);
|
|
201
|
-
console.log(` Amount: ${response.transactionAmount / 100} USD`);
|
|
202
|
-
}
|
|
203
|
-
catch (error) {
|
|
204
|
-
console.error("Error during Mastercard sale:", error);
|
|
205
|
-
throw error;
|
|
206
|
-
}
|
|
207
|
-
});
|
|
208
|
-
test("should map all fields from Mastercard sale with cashback", async () => {
|
|
209
|
-
try {
|
|
210
|
-
const response = await device
|
|
211
|
-
.sale(30.0) // $30.00
|
|
212
|
-
.withCurrency("USD")
|
|
213
|
-
.withCashBack(10.0) // $10.00 cashback
|
|
214
|
-
.execute();
|
|
215
|
-
expect(response.status).toBeDefined();
|
|
216
|
-
expect(response.baseAmount).toBe(3000); // 30.00
|
|
217
|
-
expect(response.cashBackAmount).toBe(1000); // 10.00
|
|
218
|
-
expect(response.transactionAmount).toBe(4000); // 30.00 + 10.00
|
|
219
|
-
expect(response.paymentType).toBe("MC");
|
|
220
|
-
console.log("✓ Mastercard sale with cashback response fields validated");
|
|
221
|
-
console.log(` Base Amount: ${response.baseAmount / 100} USD`);
|
|
222
|
-
console.log(` Cashback: ${response.cashBackAmount / 100} USD`);
|
|
223
|
-
}
|
|
224
|
-
catch (error) {
|
|
225
|
-
console.error("Error during Mastercard sale with cashback:", error);
|
|
226
|
-
throw error;
|
|
227
|
-
}
|
|
228
|
-
});
|
|
229
|
-
});
|
|
230
|
-
(0, UpaHelpertest_1.describeUpaLive)("UPA Live Transaction Response Field Mapping - AMEX", () => {
|
|
231
|
-
let device;
|
|
232
|
-
beforeEach(() => {
|
|
233
|
-
device = (0, UpaHelpertest_1.createTestDevice)();
|
|
234
|
-
});
|
|
235
|
-
afterEach(async () => {
|
|
236
|
-
await settleDevice();
|
|
237
|
-
});
|
|
238
|
-
test("should map all fields from AMEX sale transaction", async () => {
|
|
239
|
-
try {
|
|
240
|
-
const response = await device
|
|
241
|
-
.sale(20.0) // $20.00
|
|
242
|
-
.withCurrency("USD")
|
|
243
|
-
.execute();
|
|
244
|
-
// Verify response is TransactionResponse instance
|
|
245
|
-
expect(response).toBeInstanceOf(src_1.TransactionResponse);
|
|
246
|
-
// === Basic Response Fields ===
|
|
247
|
-
expect(response.responseId).toBeDefined();
|
|
248
|
-
expect(response.status).toBeDefined();
|
|
249
|
-
// === Card Information ===
|
|
250
|
-
expect(response.paymentType).toBe("AMEX");
|
|
251
|
-
expect(response.cardType).toBe("AMEX");
|
|
252
|
-
expect(response.maskedCardNumber).toMatch(/^\d{4}\*+\d{4}$/);
|
|
253
|
-
// === Amount Fields ===
|
|
254
|
-
expect(response.baseAmount).toBe(2000); // 20.00 in cents
|
|
255
|
-
expect(response.transactionAmount).toBe(2000);
|
|
256
|
-
// === Response Codes ===
|
|
257
|
-
expect(response.responseCode).toBeDefined();
|
|
258
|
-
expect(response.approvalCode).toBeDefined();
|
|
259
|
-
console.log("✓ AMEX sale response fields validated successfully");
|
|
260
|
-
console.log(` Card: ${response.maskedCardNumber}`);
|
|
261
|
-
console.log(` Amount: ${response.transactionAmount / 100} USD`);
|
|
262
|
-
}
|
|
263
|
-
catch (error) {
|
|
264
|
-
console.error("Error during AMEX sale:", error);
|
|
265
|
-
throw error;
|
|
266
|
-
}
|
|
267
|
-
});
|
|
268
|
-
});
|
|
269
|
-
(0, UpaHelpertest_1.describeUpaLive)("UPA Live Transaction Response - EMV Tag Verification", () => {
|
|
270
|
-
let device;
|
|
271
|
-
beforeEach(() => {
|
|
272
|
-
device = (0, UpaHelpertest_1.createTestDevice)();
|
|
273
|
-
});
|
|
274
|
-
afterEach(async () => {
|
|
275
|
-
await settleDevice();
|
|
276
|
-
});
|
|
277
|
-
test("should include all EMV tags from chip card transaction", async () => {
|
|
278
|
-
try {
|
|
279
|
-
const response = await device
|
|
280
|
-
.sale(12.5) // $12.50
|
|
281
|
-
.withCurrency("USD")
|
|
282
|
-
.execute();
|
|
283
|
-
if (response.entryMethod !== "CHIP") {
|
|
284
|
-
console.warn("Skipping EMV tag test - card was not inserted as chip (entry method: " +
|
|
285
|
-
response.entryMethod +
|
|
286
|
-
")");
|
|
287
|
-
return;
|
|
288
|
-
}
|
|
289
|
-
// Verify key EMV tags are populated
|
|
290
|
-
const emvFields = {
|
|
291
|
-
"Application Label (50)": response.applicationLabel,
|
|
292
|
-
"Application ID (9F06)": response.applicationId,
|
|
293
|
-
"Application Preferred Name (9F12)": response.applicationPreferredName,
|
|
294
|
-
"Application Cryptogram (9F26)": response.applicationCryptogram,
|
|
295
|
-
"CVM Results (9F34)": response.cardHolderVerificationMethod,
|
|
296
|
-
"Terminal Verification Results (95)": response.terminalVerificationResults,
|
|
297
|
-
"Transaction Date (9A)": response.transactionDate,
|
|
298
|
-
"Transaction Type (9C)": response.transactionTypeEMV,
|
|
299
|
-
"Terminal Type (9F35)": response.terminalType,
|
|
300
|
-
};
|
|
301
|
-
let emvTagsFound = 0;
|
|
302
|
-
const emvTagsMissing = [];
|
|
303
|
-
for (const [tagName, tagValue] of Object.entries(emvFields)) {
|
|
304
|
-
if (tagValue && tagValue !== "") {
|
|
305
|
-
emvTagsFound++;
|
|
306
|
-
console.log(` ✓ ${tagName}: ${tagValue}`);
|
|
307
|
-
}
|
|
308
|
-
else {
|
|
309
|
-
emvTagsMissing.push(tagName);
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
expect(emvTagsFound).toBeGreaterThan(0);
|
|
313
|
-
if (emvTagsMissing.length > 0) {
|
|
314
|
-
console.warn(` Note: Some EMV tags not present: ${emvTagsMissing.join(", ")}`);
|
|
315
|
-
}
|
|
316
|
-
console.log(`✓ EMV tag verification complete - ${emvTagsFound} tags populated`);
|
|
317
|
-
}
|
|
318
|
-
catch (error) {
|
|
319
|
-
console.error("Error during EMV tag verification:", error);
|
|
320
|
-
throw error;
|
|
321
|
-
}
|
|
322
|
-
});
|
|
323
|
-
});
|
|
324
|
-
(0, UpaHelpertest_1.describeUpaLive)("UPA Live Transaction Response - Void/Reversal Mapping", () => {
|
|
325
|
-
let device;
|
|
326
|
-
beforeEach(() => {
|
|
327
|
-
device = (0, UpaHelpertest_1.createTestDevice)();
|
|
328
|
-
});
|
|
329
|
-
afterEach(async () => {
|
|
330
|
-
await settleDevice();
|
|
331
|
-
});
|
|
332
|
-
test("should map fields from transaction void", async () => {
|
|
333
|
-
try {
|
|
334
|
-
// First, perform a sale
|
|
335
|
-
const saleResponse = await device
|
|
336
|
-
.sale(18.0) // $18.00
|
|
337
|
-
.withCurrency("USD")
|
|
338
|
-
.execute();
|
|
339
|
-
expect(saleResponse.status).toBeDefined();
|
|
340
|
-
const transactionId = saleResponse.referenceNumber;
|
|
341
|
-
// Now void the transaction
|
|
342
|
-
const voidResponse = await device
|
|
343
|
-
.voidTransaction()
|
|
344
|
-
.withTransactionId(transactionId)
|
|
345
|
-
.execute();
|
|
346
|
-
// Verify void response fields
|
|
347
|
-
expect(voidResponse.responseId).toBeDefined();
|
|
348
|
-
expect(voidResponse.status).toBeDefined();
|
|
349
|
-
expect(voidResponse.responseCode).toBeDefined();
|
|
350
|
-
expect(voidResponse.referenceNumber).toBeDefined();
|
|
351
|
-
console.log("✓ Void transaction response fields validated successfully");
|
|
352
|
-
console.log(` Original Transaction: ${transactionId}`);
|
|
353
|
-
console.log(` Void Response ID: ${voidResponse.responseId}`);
|
|
354
|
-
}
|
|
355
|
-
catch (error) {
|
|
356
|
-
console.error("Error during void transaction:", error);
|
|
357
|
-
throw error;
|
|
358
|
-
}
|
|
359
|
-
});
|
|
360
|
-
});
|
|
361
|
-
// Test setup message
|
|
362
|
-
if (!UpaHelpertest_1.useLiveMic) {
|
|
363
|
-
console.log("⚠️ Live UPA tests are SKIPPED (UPA_LIVE not set to 'true')");
|
|
364
|
-
console.log("To run live tests, set environment variables:");
|
|
365
|
-
console.log(" $env:UPA_LIVE='true'");
|
|
366
|
-
console.log(" $env:GP_API_APP_ID='<your-app-id>'");
|
|
367
|
-
console.log(" $env:GP_API_APP_KEY='<your-app-key>'");
|
|
368
|
-
}
|
|
369
|
-
else {
|
|
370
|
-
console.log("🚀 Running LIVE UPA Transaction Response tests...");
|
|
371
|
-
console.log(` Gateway: GP-API`);
|
|
372
|
-
console.log(` Region: US`);
|
|
373
|
-
console.log(` Environment: Test (Sandbox)`);
|
|
374
|
-
console.log(` Connection Mode: MEET_IN_THE_CLOUD (MITC)`);
|
|
375
|
-
console.log(` Payment Types: VISA, MC, AMEX`);
|
|
376
|
-
console.log("");
|
|
377
|
-
}
|
|
378
|
-
//# sourceMappingURL=UpaTransactionResponseLive.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"UpaTransactionResponseLive.test.js","sourceRoot":"","sources":["../../../../../test/Integration/Terminals/UPA/UpaTransactionResponseLive.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const src_1 = require("../../../../src");
|
|
4
|
-
const GpApiAuthorizationRequestBuilder_1 = require("../../../../src/Builders/RequestBuilder/GpApi/GpApiAuthorizationRequestBuilder");
|
|
5
|
-
const buildConfig = () => {
|
|
6
|
-
const config = new src_1.GpApiConfig();
|
|
7
|
-
config.appId = "test-app-id";
|
|
8
|
-
config.appKey = "test-app-key";
|
|
9
|
-
config.environment = src_1.Environment.Test;
|
|
10
|
-
config.channel = src_1.Channel.CardNotPresent;
|
|
11
|
-
config.country = "GB";
|
|
12
|
-
config.accessTokenInfo = new src_1.AccessTokenInfo();
|
|
13
|
-
config.accessTokenInfo.transactionProcessingAccountName =
|
|
14
|
-
"transaction_processing";
|
|
15
|
-
config.accessTokenInfo.transactionProcessingAccountID = "TRA_test_account_id";
|
|
16
|
-
return config;
|
|
17
|
-
};
|
|
18
|
-
const buildCard = () => {
|
|
19
|
-
const card = new src_1.CreditCardData();
|
|
20
|
-
card.number = "4263970000005262";
|
|
21
|
-
card.expMonth = "12";
|
|
22
|
-
card.expYear = "2027";
|
|
23
|
-
card.cvn = "123";
|
|
24
|
-
card.cardHolderName = "James Mason";
|
|
25
|
-
return card;
|
|
26
|
-
};
|
|
27
|
-
describe("AuthorizationBuilder.withSupplementaryData (VISA_DIRECT_AFT)", () => {
|
|
28
|
-
test("stores supplementary data on the builder", () => {
|
|
29
|
-
const fields = [
|
|
30
|
-
"Sender Name",
|
|
31
|
-
"Sender Address",
|
|
32
|
-
"Sender City",
|
|
33
|
-
"Sender Country",
|
|
34
|
-
"Account Number Type",
|
|
35
|
-
"Recipient Account Number",
|
|
36
|
-
];
|
|
37
|
-
const builder = buildCard()
|
|
38
|
-
.charge(19.99)
|
|
39
|
-
.withCurrency("EUR")
|
|
40
|
-
.withSupplementaryData("VISA_DIRECT_AFT", fields);
|
|
41
|
-
expect(builder.supplementaryData).toEqual({
|
|
42
|
-
VISA_DIRECT_AFT: fields,
|
|
43
|
-
});
|
|
44
|
-
});
|
|
45
|
-
test("registers multiple supplementary data types independently", () => {
|
|
46
|
-
const builder = buildCard()
|
|
47
|
-
.charge(19.99)
|
|
48
|
-
.withCurrency("EUR")
|
|
49
|
-
.withSupplementaryData("VISA_DIRECT_AFT", ["Sender Name"])
|
|
50
|
-
.withSupplementaryData("ANOTHER_TYPE", ["Field A"]);
|
|
51
|
-
expect(builder.supplementaryData).toEqual({
|
|
52
|
-
VISA_DIRECT_AFT: ["Sender Name"],
|
|
53
|
-
ANOTHER_TYPE: ["Field A"],
|
|
54
|
-
});
|
|
55
|
-
});
|
|
56
|
-
});
|
|
57
|
-
describe("GpApiAuthorizationRequestBuilder supplementary_data serialization", () => {
|
|
58
|
-
test("emits order.supplementary_data for VISA_DIRECT_AFT sale", () => {
|
|
59
|
-
const config = buildConfig();
|
|
60
|
-
const fields = [
|
|
61
|
-
"Sender Name",
|
|
62
|
-
"Sender Address",
|
|
63
|
-
"Sender City",
|
|
64
|
-
"Sender Country",
|
|
65
|
-
"Account Number Type",
|
|
66
|
-
"Recipient Account Number",
|
|
67
|
-
];
|
|
68
|
-
const builder = buildCard()
|
|
69
|
-
.charge(19.99)
|
|
70
|
-
.withCurrency("EUR")
|
|
71
|
-
.withClientTransactionId("APM-20200417")
|
|
72
|
-
.withSupplementaryData("VISA_DIRECT_AFT", fields);
|
|
73
|
-
const request = new GpApiAuthorizationRequestBuilder_1.GpApiAuthorizationRequestBuilder().buildRequest(builder, config);
|
|
74
|
-
const body = JSON.parse(request.requestBody);
|
|
75
|
-
expect(body.order).toBeDefined();
|
|
76
|
-
expect(body.order.supplementary_data).toEqual([
|
|
77
|
-
{ type: "VISA_DIRECT_AFT", fields },
|
|
78
|
-
]);
|
|
79
|
-
});
|
|
80
|
-
test("merges supplementary_data with an existing order.reference (orderId)", () => {
|
|
81
|
-
const config = buildConfig();
|
|
82
|
-
const builder = buildCard()
|
|
83
|
-
.charge(19.99)
|
|
84
|
-
.withCurrency("EUR")
|
|
85
|
-
.withOrderId("ORDER-123")
|
|
86
|
-
.withSupplementaryData("VISA_DIRECT_AFT", ["Sender Name"]);
|
|
87
|
-
const request = new GpApiAuthorizationRequestBuilder_1.GpApiAuthorizationRequestBuilder().buildRequest(builder, config);
|
|
88
|
-
const body = JSON.parse(request.requestBody);
|
|
89
|
-
expect(body.order.reference).toBe("ORDER-123");
|
|
90
|
-
expect(body.order.supplementary_data).toEqual([
|
|
91
|
-
{ type: "VISA_DIRECT_AFT", fields: ["Sender Name"] },
|
|
92
|
-
]);
|
|
93
|
-
});
|
|
94
|
-
test("emits one entry per supplementary data type", () => {
|
|
95
|
-
const config = buildConfig();
|
|
96
|
-
const builder = buildCard()
|
|
97
|
-
.charge(19.99)
|
|
98
|
-
.withCurrency("EUR")
|
|
99
|
-
.withSupplementaryData("VISA_DIRECT_AFT", ["Sender Name"])
|
|
100
|
-
.withSupplementaryData("ANOTHER_TYPE", ["Field A", "Field B"]);
|
|
101
|
-
const request = new GpApiAuthorizationRequestBuilder_1.GpApiAuthorizationRequestBuilder().buildRequest(builder, config);
|
|
102
|
-
const body = JSON.parse(request.requestBody);
|
|
103
|
-
expect(body.order.supplementary_data).toEqual(expect.arrayContaining([
|
|
104
|
-
{ type: "VISA_DIRECT_AFT", fields: ["Sender Name"] },
|
|
105
|
-
{ type: "ANOTHER_TYPE", fields: ["Field A", "Field B"] },
|
|
106
|
-
]));
|
|
107
|
-
expect(body.order.supplementary_data).toHaveLength(2);
|
|
108
|
-
});
|
|
109
|
-
test("normalizes a single string value into a fields array", () => {
|
|
110
|
-
const config = buildConfig();
|
|
111
|
-
const builder = buildCard()
|
|
112
|
-
.charge(19.99)
|
|
113
|
-
.withCurrency("EUR")
|
|
114
|
-
.withSupplementaryData("VISA_DIRECT_AFT", "Sender Name");
|
|
115
|
-
const request = new GpApiAuthorizationRequestBuilder_1.GpApiAuthorizationRequestBuilder().buildRequest(builder, config);
|
|
116
|
-
const body = JSON.parse(request.requestBody);
|
|
117
|
-
expect(body.order.supplementary_data).toEqual([
|
|
118
|
-
{ type: "VISA_DIRECT_AFT", fields: ["Sender Name"] },
|
|
119
|
-
]);
|
|
120
|
-
});
|
|
121
|
-
test("does not add order.supplementary_data when none is configured", () => {
|
|
122
|
-
const config = buildConfig();
|
|
123
|
-
const builder = buildCard().charge(19.99).withCurrency("EUR");
|
|
124
|
-
const request = new GpApiAuthorizationRequestBuilder_1.GpApiAuthorizationRequestBuilder().buildRequest(builder, config);
|
|
125
|
-
const body = JSON.parse(request.requestBody);
|
|
126
|
-
if (body.order) {
|
|
127
|
-
expect(body.order.supplementary_data).toBeUndefined();
|
|
128
|
-
}
|
|
129
|
-
else {
|
|
130
|
-
expect(body.order).toBeUndefined();
|
|
131
|
-
}
|
|
132
|
-
});
|
|
133
|
-
test("skips entries with empty type or empty fields", () => {
|
|
134
|
-
const config = buildConfig();
|
|
135
|
-
const builder = buildCard()
|
|
136
|
-
.charge(19.99)
|
|
137
|
-
.withCurrency("EUR")
|
|
138
|
-
.withSupplementaryData("VISA_DIRECT_AFT", ["Sender Name"])
|
|
139
|
-
.withSupplementaryData("EMPTY_FIELDS", []);
|
|
140
|
-
const request = new GpApiAuthorizationRequestBuilder_1.GpApiAuthorizationRequestBuilder().buildRequest(builder, config);
|
|
141
|
-
const body = JSON.parse(request.requestBody);
|
|
142
|
-
expect(body.order.supplementary_data).toEqual([
|
|
143
|
-
{ type: "VISA_DIRECT_AFT", fields: ["Sender Name"] },
|
|
144
|
-
]);
|
|
145
|
-
});
|
|
146
|
-
});
|
|
147
|
-
//# sourceMappingURL=SupplementaryData.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SupplementaryData.test.js","sourceRoot":"","sources":["../../../../../test/Unit/Builders/AuthorizationBuilder/SupplementaryData.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const BatchList_1 = require("../../../../../src/Terminals/UPA/Reponses/BatchList");
|
|
4
|
-
const UpaHelpertest_1 = require("../UpaHelpertest");
|
|
5
|
-
jest.setTimeout(240000);
|
|
6
|
-
function sleep(delayMs) {
|
|
7
|
-
return new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
8
|
-
}
|
|
9
|
-
async function settleDevice(delayMs = 8000) {
|
|
10
|
-
if (UpaHelpertest_1.useLiveMic) {
|
|
11
|
-
await sleep(delayMs);
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
afterEach(async () => {
|
|
15
|
-
await settleDevice();
|
|
16
|
-
});
|
|
17
|
-
(0, UpaHelpertest_1.describeUpaLive)("UPA Response – BatchList (all fields, live MITC)", () => {
|
|
18
|
-
let device;
|
|
19
|
-
beforeEach(() => {
|
|
20
|
-
device = (0, UpaHelpertest_1.createTestDevice)();
|
|
21
|
-
});
|
|
22
|
-
test.only("findBatches() populates every IDeviceResponse + top-level field", async () => {
|
|
23
|
-
let response = await (0, UpaHelpertest_1.findLiveBatches)(device);
|
|
24
|
-
if (response.batches.length === 0) {
|
|
25
|
-
const sale = await (0, UpaHelpertest_1.createLiveSale)(device);
|
|
26
|
-
(0, UpaHelpertest_1.expectLiveSuccess)(sale, "Sale");
|
|
27
|
-
await settleDevice(5000);
|
|
28
|
-
response = await (0, UpaHelpertest_1.findLiveBatches)(device);
|
|
29
|
-
}
|
|
30
|
-
expect(response).toBeInstanceOf(BatchList_1.BatchList);
|
|
31
|
-
expect(response.command).toBe("AvailableBatches");
|
|
32
|
-
expect(typeof response.status).toBe("string");
|
|
33
|
-
expect(typeof response.deviceResponseCode).toBe("string");
|
|
34
|
-
expect(typeof response.deviceResponseText).toBe("string");
|
|
35
|
-
expect(typeof response.referenceNumber).toBe("string");
|
|
36
|
-
expect(typeof response.version).toBe("string");
|
|
37
|
-
expect(typeof response.ecrId).toBe("string");
|
|
38
|
-
expect(typeof response.deviceSerialNumber).toBe("string");
|
|
39
|
-
expect(Array.isArray(response.batches)).toBe(true);
|
|
40
|
-
});
|
|
41
|
-
test("findBatches() batches are numeric and returned DESC per §12.4.12.5", async () => {
|
|
42
|
-
let response = await (0, UpaHelpertest_1.findLiveBatches)(device);
|
|
43
|
-
if (response.batches.length === 0) {
|
|
44
|
-
const sale = await (0, UpaHelpertest_1.createLiveSale)(device);
|
|
45
|
-
(0, UpaHelpertest_1.expectLiveSuccess)(sale, "Sale");
|
|
46
|
-
await settleDevice(5000);
|
|
47
|
-
response = await (0, UpaHelpertest_1.findLiveBatches)(device);
|
|
48
|
-
}
|
|
49
|
-
if (response.status !== "Success") {
|
|
50
|
-
expect(["BATCH002", "APP011"]).toContain(response.deviceResponseCode);
|
|
51
|
-
console.warn(`findBatches() returned ${response.deviceResponseCode}; DESC assertions skipped.`);
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
for (const batchId of response.batches) {
|
|
55
|
-
expect(typeof batchId).toBe("number");
|
|
56
|
-
expect(Number.isFinite(batchId)).toBe(true);
|
|
57
|
-
}
|
|
58
|
-
if (response.batches.length >= 2) {
|
|
59
|
-
const sortedDesc = [...response.batches].sort((a, b) => b - a);
|
|
60
|
-
expect(response.batches).toEqual(sortedDesc);
|
|
61
|
-
}
|
|
62
|
-
});
|
|
63
|
-
});
|
|
64
|
-
//# sourceMappingURL=BatchList.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BatchList.test.js","sourceRoot":"","sources":["../../../../../../test/Unit/Terminals/UPA/Reponses/BatchList.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|