globalpayments-api 3.10.14 → 3.11.0

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.
Files changed (188) hide show
  1. package/CHANGELOG.md +255 -240
  2. package/LICENSE.md +257 -257
  3. package/README.md +148 -148
  4. package/appsec.properties +8 -0
  5. package/lib/src/Builders/BaseBuilder/ValidationClause.d.ts +3 -2
  6. package/lib/src/Builders/BaseBuilder/ValidationClause.js +23 -15
  7. package/lib/src/Builders/BaseBuilder/ValidationClause.js.map +1 -1
  8. package/lib/src/Builders/BaseBuilder/Validations.js +7 -2
  9. package/lib/src/Builders/BaseBuilder/Validations.js.map +1 -1
  10. package/lib/src/Builders/RequestBuilder/GpApi/GpApiSessionInfo.d.ts +11 -2
  11. package/lib/src/Builders/RequestBuilder/GpApi/GpApiSessionInfo.js +44 -5
  12. package/lib/src/Builders/RequestBuilder/GpApi/GpApiSessionInfo.js.map +1 -1
  13. package/lib/src/Builders/RequestBuilder/GpEcom/GpEcomManagementRequestBuilder.js +2 -2
  14. package/lib/src/Builders/RequestBuilder/GpEcom/GpEcomManagementRequestBuilder.js.map +1 -1
  15. package/lib/src/Entities/Enums.d.ts +4 -2
  16. package/lib/src/Entities/Enums.js +3 -1
  17. package/lib/src/Entities/Enums.js.map +1 -1
  18. package/lib/src/Entities/GpApi/PorticoTokenConfig.d.ts +25 -0
  19. package/lib/src/Entities/GpApi/PorticoTokenConfig.js +30 -0
  20. package/lib/src/Entities/GpApi/PorticoTokenConfig.js.map +1 -0
  21. package/lib/src/Entities/GpApi/index.d.ts +1 -0
  22. package/lib/src/Entities/GpApi/index.js +1 -0
  23. package/lib/src/Entities/GpApi/index.js.map +1 -1
  24. package/lib/src/Entities/RecurringEntity.js +2 -2
  25. package/lib/src/Entities/RecurringEntity.js.map +1 -1
  26. package/lib/src/Entities/Transaction.d.ts +2 -0
  27. package/lib/src/Entities/Transaction.js +2 -0
  28. package/lib/src/Entities/Transaction.js.map +1 -1
  29. package/lib/src/Entities/TransactionSummary.d.ts +1 -0
  30. package/lib/src/Entities/TransactionSummary.js +1 -0
  31. package/lib/src/Entities/TransactionSummary.js.map +1 -1
  32. package/lib/src/Entities/UPA/ExtraChargeType.d.ts +8 -0
  33. package/lib/src/Entities/UPA/ExtraChargeType.js +13 -0
  34. package/lib/src/Entities/UPA/ExtraChargeType.js.map +1 -0
  35. package/lib/src/Entities/UPA/Lodging.d.ts +11 -0
  36. package/lib/src/Entities/UPA/Lodging.js +15 -0
  37. package/lib/src/Entities/UPA/Lodging.js.map +1 -0
  38. package/lib/src/Entities/UPA/POSData.d.ts +6 -0
  39. package/lib/src/Entities/UPA/POSData.js +11 -0
  40. package/lib/src/Entities/UPA/POSData.js.map +1 -0
  41. package/lib/src/Entities/UPA/ProcessIndicator.d.ts +1 -1
  42. package/lib/src/Entities/UPA/ProcessIndicator.js.map +1 -1
  43. package/lib/src/Entities/UPA/UpaParam.d.ts +7 -7
  44. package/lib/src/Entities/UPA/UpaParam.js.map +1 -1
  45. package/lib/src/Entities/UPA/UpaTransactionData.d.ts +5 -5
  46. package/lib/src/Entities/UPA/UpaTransactionData.js.map +1 -1
  47. package/lib/src/Entities/UPA/index.d.ts +3 -0
  48. package/lib/src/Entities/UPA/index.js +3 -0
  49. package/lib/src/Entities/UPA/index.js.map +1 -1
  50. package/lib/src/Gateways/GpApiConnector.js +23 -4
  51. package/lib/src/Gateways/GpApiConnector.js.map +1 -1
  52. package/lib/src/Gateways/PorticoConnector.d.ts +1 -1
  53. package/lib/src/Gateways/PorticoConnector.js +2 -0
  54. package/lib/src/Gateways/PorticoConnector.js.map +1 -1
  55. package/lib/src/Mapping/GpApiMapping.js +7 -0
  56. package/lib/src/Mapping/GpApiMapping.js.map +1 -1
  57. package/lib/src/ServiceConfigs/Gateways/GpApiConfig.d.ts +6 -0
  58. package/lib/src/ServiceConfigs/Gateways/GpApiConfig.js +25 -2
  59. package/lib/src/ServiceConfigs/Gateways/GpApiConfig.js.map +1 -1
  60. package/lib/src/Services/GpApiServices.js +4 -1
  61. package/lib/src/Services/GpApiServices.js.map +1 -1
  62. package/lib/src/Terminals/Abstractions/IDeviceInterface.d.ts +23 -2
  63. package/lib/src/Terminals/Abstractions/IDeviceResponse.d.ts +71 -24
  64. package/lib/src/Terminals/Builders/TerminalAuthBuilder.d.ts +54 -22
  65. package/lib/src/Terminals/Builders/TerminalAuthBuilder.js +98 -13
  66. package/lib/src/Terminals/Builders/TerminalAuthBuilder.js.map +1 -1
  67. package/lib/src/Terminals/Builders/TerminalBuilder.d.ts +6 -3
  68. package/lib/src/Terminals/Builders/TerminalBuilder.js +9 -0
  69. package/lib/src/Terminals/Builders/TerminalBuilder.js.map +1 -1
  70. package/lib/src/Terminals/Builders/TerminalManageBuilder.d.ts +16 -6
  71. package/lib/src/Terminals/Builders/TerminalManageBuilder.js +27 -2
  72. package/lib/src/Terminals/Builders/TerminalManageBuilder.js.map +1 -1
  73. package/lib/src/Terminals/Builders/TerminalReportBuilder.d.ts +17 -0
  74. package/lib/src/Terminals/Builders/TerminalReportBuilder.js +57 -0
  75. package/lib/src/Terminals/Builders/TerminalReportBuilder.js.map +1 -0
  76. package/lib/src/Terminals/Builders/index.d.ts +1 -0
  77. package/lib/src/Terminals/Builders/index.js +1 -0
  78. package/lib/src/Terminals/Builders/index.js.map +1 -1
  79. package/lib/src/Terminals/DeviceController.d.ts +6 -5
  80. package/lib/src/Terminals/DeviceController.js.map +1 -1
  81. package/lib/src/Terminals/DeviceInterface.d.ts +23 -3
  82. package/lib/src/Terminals/DeviceInterface.js +68 -0
  83. package/lib/src/Terminals/DeviceInterface.js.map +1 -1
  84. package/lib/src/Terminals/Enums.d.ts +11 -0
  85. package/lib/src/Terminals/Enums.js +14 -1
  86. package/lib/src/Terminals/Enums.js.map +1 -1
  87. package/lib/src/Terminals/TerminalResponse.d.ts +44 -36
  88. package/lib/src/Terminals/TerminalResponse.js +8 -0
  89. package/lib/src/Terminals/TerminalResponse.js.map +1 -1
  90. package/lib/src/Terminals/UPA/Entities/UpaMessageId.d.ts +10 -1
  91. package/lib/src/Terminals/UPA/Entities/UpaMessageId.js +9 -0
  92. package/lib/src/Terminals/UPA/Entities/UpaMessageId.js.map +1 -1
  93. package/lib/src/Terminals/UPA/Entities/UpaModels.d.ts +62 -0
  94. package/lib/src/Terminals/UPA/Entities/UpaModels.js +28 -0
  95. package/lib/src/Terminals/UPA/Entities/UpaModels.js.map +1 -0
  96. package/lib/src/Terminals/UPA/Entities/UpaSearchCriteria.d.ts +7 -0
  97. package/lib/src/Terminals/UPA/Entities/UpaSearchCriteria.js +12 -0
  98. package/lib/src/Terminals/UPA/Entities/UpaSearchCriteria.js.map +1 -0
  99. package/lib/src/Terminals/UPA/Entities/index.d.ts +1 -0
  100. package/lib/src/Terminals/UPA/Entities/index.js +1 -0
  101. package/lib/src/Terminals/UPA/Entities/index.js.map +1 -1
  102. package/lib/src/Terminals/UPA/Interfaces/UpaMicInterface.d.ts +1 -1
  103. package/lib/src/Terminals/UPA/Interfaces/UpaMicInterface.js +7 -5
  104. package/lib/src/Terminals/UPA/Interfaces/UpaMicInterface.js.map +1 -1
  105. package/lib/src/Terminals/UPA/Reponses/BatchList.d.ts +17 -0
  106. package/lib/src/Terminals/UPA/Reponses/BatchList.js +84 -0
  107. package/lib/src/Terminals/UPA/Reponses/BatchList.js.map +1 -0
  108. package/lib/src/Terminals/UPA/Reponses/BatchReportResponse.d.ts +56 -0
  109. package/lib/src/Terminals/UPA/Reponses/BatchReportResponse.js +215 -0
  110. package/lib/src/Terminals/UPA/Reponses/BatchReportResponse.js.map +1 -0
  111. package/lib/src/Terminals/UPA/Reponses/OpenTabDetailsResponse.d.ts +27 -0
  112. package/lib/src/Terminals/UPA/Reponses/OpenTabDetailsResponse.js +113 -0
  113. package/lib/src/Terminals/UPA/Reponses/OpenTabDetailsResponse.js.map +1 -0
  114. package/lib/src/Terminals/UPA/Reponses/SafReportResponse.d.ts +39 -0
  115. package/lib/src/Terminals/UPA/Reponses/SafReportResponse.js +187 -0
  116. package/lib/src/Terminals/UPA/Reponses/SafReportResponse.js.map +1 -0
  117. package/lib/src/Terminals/UPA/Reponses/TransactionResponse.d.ts +48 -25
  118. package/lib/src/Terminals/UPA/Reponses/TransactionResponse.js +151 -15
  119. package/lib/src/Terminals/UPA/Reponses/TransactionResponse.js.map +1 -1
  120. package/lib/src/Terminals/UPA/Reponses/UpaEODResponse.d.ts +21 -0
  121. package/lib/src/Terminals/UPA/Reponses/UpaEODResponse.js +106 -0
  122. package/lib/src/Terminals/UPA/Reponses/UpaEODResponse.js.map +1 -0
  123. package/lib/src/Terminals/UPA/Reponses/UpaGiftCardResponse.d.ts +41 -0
  124. package/lib/src/Terminals/UPA/Reponses/UpaGiftCardResponse.js +93 -0
  125. package/lib/src/Terminals/UPA/Reponses/UpaGiftCardResponse.js.map +1 -0
  126. package/lib/src/Terminals/UPA/Reponses/UpaSAFResponse.d.ts +35 -0
  127. package/lib/src/Terminals/UPA/Reponses/UpaSAFResponse.js +195 -0
  128. package/lib/src/Terminals/UPA/Reponses/UpaSAFResponse.js.map +1 -0
  129. package/lib/src/Terminals/UPA/Reponses/UpaSignatureResponse.d.ts +18 -0
  130. package/lib/src/Terminals/UPA/Reponses/UpaSignatureResponse.js +94 -0
  131. package/lib/src/Terminals/UPA/Reponses/UpaSignatureResponse.js.map +1 -0
  132. package/lib/src/Terminals/UPA/Reponses/index.d.ts +8 -0
  133. package/lib/src/Terminals/UPA/Reponses/index.js +8 -0
  134. package/lib/src/Terminals/UPA/Reponses/index.js.map +1 -1
  135. package/lib/src/Terminals/UPA/UpaController.d.ts +17 -5
  136. package/lib/src/Terminals/UPA/UpaController.js +338 -79
  137. package/lib/src/Terminals/UPA/UpaController.js.map +1 -1
  138. package/lib/src/Terminals/UPA/UpaInterface.d.ts +26 -3
  139. package/lib/src/Terminals/UPA/UpaInterface.js +311 -12
  140. package/lib/src/Terminals/UPA/UpaInterface.js.map +1 -1
  141. package/lib/src/Terminals/index.d.ts +2 -0
  142. package/lib/src/Terminals/index.js +2 -0
  143. package/lib/src/Terminals/index.js.map +1 -1
  144. package/lib/src/Utils/StringUtils.js +1 -1
  145. package/lib/src/Utils/StringUtils.js.map +1 -1
  146. package/lib/test/Integration/Gateways/CI/upa_mitc/UpaFunctionalityTests.test.js +19 -8
  147. package/lib/test/Integration/Gateways/CI/upa_mitc/UpaFunctionalityTests.test.js.map +1 -1
  148. package/lib/test/Integration/Gateways/GpApiConnector/3DS2.test.js +15 -15
  149. package/lib/test/Integration/Gateways/GpApiConnector/3DSecure.test.js +5 -5
  150. package/lib/test/Integration/Gateways/GpApiConnector/AccessTokenPorticoCredentials.test.d.ts +1 -0
  151. package/lib/test/Integration/Gateways/GpApiConnector/AccessTokenPorticoCredentials.test.js +175 -0
  152. package/lib/test/Integration/Gateways/GpApiConnector/AccessTokenPorticoCredentials.test.js.map +1 -0
  153. package/lib/test/Integration/Gateways/GpApiConnector/GpApiCreateTokenWithPorticoCredentialTests.test.d.ts +1 -0
  154. package/lib/test/Integration/Gateways/GpApiConnector/GpApiCreateTokenWithPorticoCredentialTests.test.js +205 -0
  155. package/lib/test/Integration/Gateways/GpApiConnector/GpApiCreateTokenWithPorticoCredentialTests.test.js.map +1 -0
  156. package/lib/test/Integration/Gateways/GpEcomConnector/Credit.test.js +4 -4
  157. package/lib/test/Integration/Gateways/PorticoConnector/Ecommerce.test.js +8 -8
  158. package/lib/test/Integration/Gateways/PorticoConnector/GlobalTransactionId.test.d.ts +1 -0
  159. package/lib/test/Integration/Gateways/PorticoConnector/GlobalTransactionId.test.js +243 -0
  160. package/lib/test/Integration/Gateways/PorticoConnector/GlobalTransactionId.test.js.map +1 -0
  161. package/lib/test/Integration/Gateways/Terminals/RequestIdProvider.d.ts +15 -1
  162. package/lib/test/Integration/Gateways/Terminals/RequestIdProvider.js +88 -3
  163. package/lib/test/Integration/Gateways/Terminals/RequestIdProvider.js.map +1 -1
  164. package/lib/test/Unit/Builders/AuthorizationBuilder/SupplementaryData.test.d.ts +1 -0
  165. package/lib/test/Unit/Builders/AuthorizationBuilder/SupplementaryData.test.js +147 -0
  166. package/lib/test/Unit/Builders/AuthorizationBuilder/SupplementaryData.test.js.map +1 -0
  167. package/lib/test/Unit/Terminals/UPA/UpaAdmin.test.d.ts +1 -0
  168. package/lib/test/Unit/Terminals/UPA/UpaAdmin.test.js +1260 -0
  169. package/lib/test/Unit/Terminals/UPA/UpaAdmin.test.js.map +1 -0
  170. package/lib/test/Unit/Terminals/UPA/UpaCredit.test.d.ts +1 -0
  171. package/lib/test/Unit/Terminals/UPA/UpaCredit.test.js +411 -0
  172. package/lib/test/Unit/Terminals/UPA/UpaCredit.test.js.map +1 -0
  173. package/lib/test/Unit/Terminals/UPA/UpaHelpertest.d.ts +55 -0
  174. package/lib/test/Unit/Terminals/UPA/UpaHelpertest.js +490 -0
  175. package/lib/test/Unit/Terminals/UPA/UpaHelpertest.js.map +1 -0
  176. package/lib/test/Unit/Terminals/UPA/UpaReport.test.d.ts +1 -0
  177. package/lib/test/Unit/Terminals/UPA/UpaReport.test.js +801 -0
  178. package/lib/test/Unit/Terminals/UPA/UpaReport.test.js.map +1 -0
  179. package/lib/test/Unit/Terminals/UPA/UpaStory1Methods.test.d.ts +1 -0
  180. package/lib/test/Unit/Terminals/UPA/UpaStory1Methods.test.js +250 -0
  181. package/lib/test/Unit/Terminals/UPA/UpaStory1Methods.test.js.map +1 -0
  182. package/lib/test/Unit/Terminals/UPA/UpaStory2Methods.test.d.ts +1 -0
  183. package/lib/test/Unit/Terminals/UPA/UpaStory2Methods.test.js +1277 -0
  184. package/lib/test/Unit/Terminals/UPA/UpaStory2Methods.test.js.map +1 -0
  185. package/lib/test/Unit/Terminals/UPA/UpaStory3_4Methods.test.d.ts +1 -0
  186. package/lib/test/Unit/Terminals/UPA/UpaStory3_4Methods.test.js +411 -0
  187. package/lib/test/Unit/Terminals/UPA/UpaStory3_4Methods.test.js.map +1 -0
  188. package/package.json +63 -63
@@ -0,0 +1,490 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.findLiveBatches = exports.ensureSafData = exports.getFirstSafReferenceNumber = exports.isNoSafTransaction = exports.getLiveSafReport = exports.createLiveLodgingSale = exports.describeUpaLive = exports.createTestDevice = exports.buildConfig = exports.executeLiveStartCardTransaction = exports.createLivePreAuth = exports.createLiveDebitSale = exports.createLiveSale = exports.deletePreAuthWithRetry = exports.expectLiveReverseFailure = exports.expectLiveReverseResponseFields = exports.reverseLiveSaleWithRetry = exports.expectLiveBalanceFailure = exports.expectLiveBalanceResponseFields = exports.expectLiveDeletePreAuthFailure = exports.delay = exports.expectParsedStartCardTransactionResponse = exports.isKnownLiveTransportTimeout = exports.isKnownLiveReverseAutoFallbackBlocker = exports.isKnownLiveGiftCardBlocker = exports.isKnownLiveStartCardTransactionBlocker = exports.isKnownLiveBusyBlocker = exports.isKnownLiveBalanceBlocker = exports.isKnownLiveSaleBlocker = exports.formatLiveFailure = exports.expectLiveSuccess = exports.hasLiveGpApiCredentials = exports.gpApiAccountName = exports.gpApiAppKey = exports.gpApiAppId = exports.useLiveMic = void 0;
4
+ /**
5
+ * for UPA unit tests
6
+ */
7
+ const src_1 = require("../../../../src");
8
+ const Logging_1 = require("../../../../src/Utils/Logging");
9
+ const DeviceService_1 = require("../../../../src/Services/DeviceService");
10
+ const Enums_1 = require("../../../../src/Terminals/Enums");
11
+ const UpaSearchCriteria_1 = require("../../../../src/Terminals/UPA/Entities/UpaSearchCriteria");
12
+ const TransactionResponse_1 = require("../../../../src/Terminals/UPA/Reponses/TransactionResponse");
13
+ const UpaGiftCardResponse_1 = require("../../../../src/Terminals/UPA/Reponses/UpaGiftCardResponse");
14
+ exports.useLiveMic = process.env.UPA_LIVE === "true";
15
+ exports.gpApiAppId = process.env.GP_API_APP_ID;
16
+ exports.gpApiAppKey = process.env.GP_API_APP_KEY;
17
+ exports.gpApiAccountName = process.env.GP_API_ACCOUNT_NAME ?? "90918812";
18
+ exports.hasLiveGpApiCredentials = !!exports.gpApiAppId && !!exports.gpApiAppKey;
19
+ /* eslint-disable indent */
20
+ function expectLiveSuccess(response, expectedCommand) {
21
+ const expectedCommands = Array.isArray(expectedCommand)
22
+ ? expectedCommand
23
+ : [expectedCommand];
24
+ expect(expectedCommands).toContain(response.command);
25
+ expect(response.status).toBe("Success");
26
+ expect(response.deviceResponseCode).toBe("00");
27
+ }
28
+ exports.expectLiveSuccess = expectLiveSuccess;
29
+ function formatLiveFailure(response, operation) {
30
+ const deviceCode = response.deviceResponseCode ?? "";
31
+ const hostCode = response.responseCode ?? "";
32
+ return `${operation} prerequisite failed in live MIC: device ${deviceCode} ${response.deviceResponseMessage ?? ""}; host ${hostCode} ${response.responseText ?? ""}`.trim();
33
+ }
34
+ exports.formatLiveFailure = formatLiveFailure;
35
+ function isKnownLiveSaleBlocker(response) {
36
+ const pinVerificationError = response.deviceResponseCode === "HOST001" &&
37
+ response.responseCode === "86" &&
38
+ response.responseText === "CANT VERIFY PIN";
39
+ const timeoutError = response.deviceResponseCode === "APP002" &&
40
+ response.deviceResponseMessage === "TIMEOUT";
41
+ return pinVerificationError || timeoutError;
42
+ }
43
+ exports.isKnownLiveSaleBlocker = isKnownLiveSaleBlocker;
44
+ function isKnownLiveBalanceBlocker(response) {
45
+ const pinVerificationError = response.deviceResponseCode === "HOST001" &&
46
+ response.responseCode === "86" &&
47
+ response.responseText === "CANT VERIFY PIN";
48
+ const hostCommunicationError = response.deviceResponseCode === "HOST002" &&
49
+ response.deviceResponseMessage === "HOST COMMUNICATIONS ERROR";
50
+ const userCancelledError = response.deviceResponseCode === "APP001" &&
51
+ response.deviceResponseMessage === "TRANSACTION CANCELLED BY USER";
52
+ const timeoutError = response.deviceResponseCode === "APP002" &&
53
+ response.deviceResponseMessage === "TIMEOUT";
54
+ return (pinVerificationError ||
55
+ hostCommunicationError ||
56
+ userCancelledError ||
57
+ timeoutError);
58
+ }
59
+ exports.isKnownLiveBalanceBlocker = isKnownLiveBalanceBlocker;
60
+ function isKnownLiveBusyBlocker(response) {
61
+ return (response.command === "SendCommand" &&
62
+ response.deviceResponseCode === "32" &&
63
+ response.deviceResponseMessage === "BUSY");
64
+ }
65
+ exports.isKnownLiveBusyBlocker = isKnownLiveBusyBlocker;
66
+ function isKnownLiveStartCardTransactionBlocker(response) {
67
+ const documentedErrorCodes = [
68
+ "CARD002",
69
+ "CARD003",
70
+ "CARD004",
71
+ "CARD006",
72
+ "CARD007",
73
+ "CARD009",
74
+ "CARD011",
75
+ "CARD018",
76
+ "APP001",
77
+ "APP002",
78
+ "APP013",
79
+ "ERR013",
80
+ ];
81
+ return (!!response.deviceResponseCode &&
82
+ documentedErrorCodes.includes(response.deviceResponseCode));
83
+ }
84
+ exports.isKnownLiveStartCardTransactionBlocker = isKnownLiveStartCardTransactionBlocker;
85
+ function isKnownLiveGiftCardBlocker(response) {
86
+ return (response.deviceResponseCode === "GIFT001" &&
87
+ response.deviceResponseMessage === "NOT A VALID GIFT CARD");
88
+ }
89
+ exports.isKnownLiveGiftCardBlocker = isKnownLiveGiftCardBlocker;
90
+ function isKnownLiveReverseAutoFallbackBlocker(response) {
91
+ return (response.command === "Reversal" &&
92
+ response.deviceResponseCode === "ERR013" &&
93
+ response.deviceResponseMessage === "[tranNo]-MISSING MANDATORY FIELD");
94
+ }
95
+ exports.isKnownLiveReverseAutoFallbackBlocker = isKnownLiveReverseAutoFallbackBlocker;
96
+ function isKnownLiveTransportTimeout(error) {
97
+ return (error instanceof Error &&
98
+ (error.message === "Socket timeout occurred." ||
99
+ error.message.includes("ECONNRESET") ||
100
+ error.message.includes("socket hang up")));
101
+ }
102
+ exports.isKnownLiveTransportTimeout = isKnownLiveTransportTimeout;
103
+ function expectParsedStartCardTransactionResponse(response) {
104
+ expect(response.command).toBe("StartCardTransaction");
105
+ expect(response.status).toBe("Success");
106
+ expect(response.deviceResponseCode).toBe("00");
107
+ if (response.acquisitionType) {
108
+ expect(response.acquisitionType).toMatch(/^(INSERT|CONTACT|CONTACTLESS|SWIPE|MANUAL|TAP)$/);
109
+ }
110
+ if (response.luhnCheckPassed) {
111
+ expect(response.luhnCheckPassed).toMatch(/^[YN]$/);
112
+ }
113
+ if (response.fallback) {
114
+ expect(response.fallback).toMatch(/^[01]$/);
115
+ }
116
+ if (response.avsFlag) {
117
+ expect(response.avsFlag).toMatch(/^[01]$/);
118
+ }
119
+ if (response.cardSecurityPromptFlag) {
120
+ expect(response.cardSecurityPromptFlag).toMatch(/^[01]$/);
121
+ }
122
+ if (response.cashBackFlag) {
123
+ expect(response.cashBackFlag).toMatch(/^[01]$/);
124
+ }
125
+ if (response.surchargeFlag) {
126
+ expect(response.surchargeFlag).toMatch(/^[01]$/);
127
+ }
128
+ if (response.dccEligible) {
129
+ expect(response.dccEligible).toMatch(/^[01]$/);
130
+ }
131
+ }
132
+ exports.expectParsedStartCardTransactionResponse = expectParsedStartCardTransactionResponse;
133
+ function delay(ms) {
134
+ return new Promise((resolve) => setTimeout(resolve, ms));
135
+ }
136
+ exports.delay = delay;
137
+ async function expectLiveDeletePreAuthFailure(action, operation) {
138
+ try {
139
+ const response = await action();
140
+ expect(response).not.toBeNull();
141
+ expect(response).toBeInstanceOf(TransactionResponse_1.TransactionResponse);
142
+ if (isKnownLiveBusyBlocker(response)) {
143
+ console.warn(formatLiveFailure(response, operation));
144
+ return;
145
+ }
146
+ expect(response.status !== "Success" ||
147
+ response.deviceResponseCode !== "00" ||
148
+ (!!response.responseCode && response.responseCode !== "00")).toBe(true);
149
+ }
150
+ catch (error) {
151
+ if (isKnownLiveTransportTimeout(error)) {
152
+ console.warn(`${operation} timed out while waiting on the device or gateway.`);
153
+ return;
154
+ }
155
+ expect(error).toBeInstanceOf(Error);
156
+ expect(error.message).toBeTruthy();
157
+ }
158
+ }
159
+ exports.expectLiveDeletePreAuthFailure = expectLiveDeletePreAuthFailure;
160
+ function expectLiveBalanceResponseFields(response) {
161
+ expect(["BalanceInquiry", "SendCommand"]).toContain(response.command);
162
+ expect(response.status).toBe("Success");
163
+ expect(response.deviceResponseCode).toBe("00");
164
+ expect(response.responseCode).toBe("00");
165
+ expect(response.responseText).toBeTruthy();
166
+ if (response.referenceNumber) {
167
+ expect(response.referenceNumber).toMatch(/^[A-Z0-9]+$/i);
168
+ }
169
+ expect(response.availableBalance).not.toBeUndefined();
170
+ if (response.transactionType) {
171
+ expect(response.transactionType).toContain("BALANCE");
172
+ }
173
+ if (response.maskedCardNumber) {
174
+ expect(response.maskedCardNumber).toMatch(/\*{2,}|X{2,}/);
175
+ }
176
+ if (response.entryMethod) {
177
+ expect(response.entryMethod).toMatch(/^(MANUAL|SWIPE|INSERT|TAP|NONE)$/);
178
+ }
179
+ if (response.expirationDate) {
180
+ expect(response.expirationDate).toMatch(/^\d{2}\/\d{2}$/);
181
+ }
182
+ if (response.pinVerified) {
183
+ expect(response.pinVerified).toMatch(/^[01]$/);
184
+ }
185
+ if (response.fallback) {
186
+ expect(response.fallback).toMatch(/^[01]$/);
187
+ }
188
+ }
189
+ exports.expectLiveBalanceResponseFields = expectLiveBalanceResponseFields;
190
+ async function expectLiveBalanceFailure(action, operation) {
191
+ try {
192
+ const response = await action();
193
+ expect(response).not.toBeNull();
194
+ expect(response).toBeInstanceOf(TransactionResponse_1.TransactionResponse);
195
+ if (isKnownLiveBusyBlocker(response)) {
196
+ console.warn(formatLiveFailure(response, operation));
197
+ return;
198
+ }
199
+ expect(response.status !== "Success" ||
200
+ response.deviceResponseCode !== "00" ||
201
+ (!!response.responseCode && response.responseCode !== "00")).toBe(true);
202
+ }
203
+ catch (error) {
204
+ if (isKnownLiveTransportTimeout(error)) {
205
+ console.warn(`${operation} timed out while waiting on the device or gateway.`);
206
+ return;
207
+ }
208
+ expect(error).toBeInstanceOf(Error);
209
+ expect(error.message).toBeTruthy();
210
+ }
211
+ }
212
+ exports.expectLiveBalanceFailure = expectLiveBalanceFailure;
213
+ async function reverseLiveSaleWithRetry(device, terminalRefNumber, amount, maxAttempts = 3) {
214
+ let response;
215
+ for (let attempt = 1; attempt <= maxAttempts; attempt += 1) {
216
+ const builder = device.reverse().withEcrId(12);
217
+ if (terminalRefNumber) {
218
+ builder.withTerminalRefNumber(terminalRefNumber);
219
+ }
220
+ if (amount !== undefined) {
221
+ builder.withAmount(amount);
222
+ }
223
+ response = await builder.execute();
224
+ if (!isKnownLiveBusyBlocker(response) || attempt === maxAttempts) {
225
+ return response;
226
+ }
227
+ await delay(10000);
228
+ }
229
+ return response;
230
+ }
231
+ exports.reverseLiveSaleWithRetry = reverseLiveSaleWithRetry;
232
+ function expectLiveReverseResponseFields(response) {
233
+ expect(response.command).toBe("Reversal");
234
+ expect(response.status).toBe("Success");
235
+ expect(response.deviceResponseCode).toBe("00");
236
+ expect(response.responseCode).toBe("00");
237
+ expect(response.responseText).toBeTruthy();
238
+ expect(response.terminalRefNumber).toBeTruthy();
239
+ if (response.referenceNumber) {
240
+ expect(response.referenceNumber).toMatch(/^[A-Z0-9]+$/i);
241
+ }
242
+ if (response.transactionType) {
243
+ expect(response.transactionType).toContain("REVERSAL");
244
+ }
245
+ if (response.maskedCardNumber) {
246
+ expect(response.maskedCardNumber).toMatch(/\*{2,}|X{2,}/);
247
+ }
248
+ if (response.entryMethod) {
249
+ expect(response.entryMethod).toMatch(/^(MANUAL|SWIPE|INSERT|TAP|NONE)$/);
250
+ }
251
+ if (response.expirationDate) {
252
+ expect(response.expirationDate).toMatch(/^\d{2}\/\d{2}$/);
253
+ }
254
+ }
255
+ exports.expectLiveReverseResponseFields = expectLiveReverseResponseFields;
256
+ async function expectLiveReverseFailure(action, operation) {
257
+ try {
258
+ const response = await action();
259
+ expect(response).not.toBeNull();
260
+ expect(response).toBeInstanceOf(TransactionResponse_1.TransactionResponse);
261
+ if (isKnownLiveBusyBlocker(response)) {
262
+ console.warn(formatLiveFailure(response, operation));
263
+ return;
264
+ }
265
+ expect(response.status !== "Success" ||
266
+ response.deviceResponseCode !== "00" ||
267
+ (!!response.responseCode && response.responseCode !== "00")).toBe(true);
268
+ }
269
+ catch (error) {
270
+ if (isKnownLiveTransportTimeout(error)) {
271
+ console.warn(`${operation} timed out while waiting on the device or gateway.`);
272
+ return;
273
+ }
274
+ expect(error).toBeInstanceOf(Error);
275
+ expect(error.message).toBeTruthy();
276
+ }
277
+ }
278
+ exports.expectLiveReverseFailure = expectLiveReverseFailure;
279
+ async function deletePreAuthWithRetry(device, transactionId, amount, maxAttempts = 3) {
280
+ let response;
281
+ for (let attempt = 1; attempt <= maxAttempts; attempt += 1) {
282
+ response = await device
283
+ .deletePreAuth()
284
+ .withEcrId(13)
285
+ .withTransactionId(transactionId)
286
+ .withAmount(amount)
287
+ .execute();
288
+ if (!isKnownLiveBusyBlocker(response) || attempt === maxAttempts) {
289
+ return response;
290
+ }
291
+ await delay(10000);
292
+ }
293
+ return response;
294
+ }
295
+ exports.deletePreAuthWithRetry = deletePreAuthWithRetry;
296
+ async function createLiveSale(device) {
297
+ const response = await device
298
+ .sale(1.0)
299
+ .withGratuity(0)
300
+ .withEcrId(13)
301
+ .withClerkId(123)
302
+ .execute();
303
+ expect(response).toBeInstanceOf(TransactionResponse_1.TransactionResponse);
304
+ if (response.deviceResponseCode === "00") {
305
+ expect(["COMPLETE", "INITIATED"]).toContain(response.deviceResponseText);
306
+ expect(response.terminalRefNumber).toBeTruthy();
307
+ }
308
+ return response;
309
+ }
310
+ exports.createLiveSale = createLiveSale;
311
+ async function createLiveDebitSale(device) {
312
+ const response = await device
313
+ .sale(1.0)
314
+ .withPaymentMethodType(src_1.PaymentMethodType.Debit)
315
+ .withCashBack(0)
316
+ .withEcrId(13)
317
+ .withClerkId(123)
318
+ .execute();
319
+ expect(response).toBeInstanceOf(TransactionResponse_1.TransactionResponse);
320
+ if (response.deviceResponseCode === "00") {
321
+ expect(["COMPLETE", "INITIATED"]).toContain(response.deviceResponseText);
322
+ expect(response.terminalRefNumber).toBeTruthy();
323
+ }
324
+ return response;
325
+ }
326
+ exports.createLiveDebitSale = createLiveDebitSale;
327
+ async function createLivePreAuth(device) {
328
+ const response = await device
329
+ .authorize(1.0)
330
+ .withEcrId(13)
331
+ .withClerkId(123)
332
+ .execute();
333
+ expect(response).toBeInstanceOf(TransactionResponse_1.TransactionResponse);
334
+ if (response.deviceResponseCode !== "00") {
335
+ throw new Error(formatLiveFailure(response, "PreAuth"));
336
+ }
337
+ expect(["COMPLETE", "INITIATED"]).toContain(response.deviceResponseText);
338
+ expect(response.transactionId).toBeTruthy();
339
+ return response;
340
+ }
341
+ exports.createLivePreAuth = createLivePreAuth;
342
+ async function executeLiveStartCardTransaction(device, param, indicator, transData, operation) {
343
+ let response;
344
+ try {
345
+ response = await device.startCardTransaction(param, indicator, transData);
346
+ }
347
+ catch (error) {
348
+ if (isKnownLiveTransportTimeout(error)) {
349
+ console.warn(`${operation} timed out while waiting on the device or gateway.`);
350
+ return undefined;
351
+ }
352
+ throw error;
353
+ }
354
+ expect(response).not.toBeNull();
355
+ expect(response).toBeInstanceOf(UpaGiftCardResponse_1.UpaGiftCardResponse);
356
+ if (isKnownLiveGiftCardBlocker(response) ||
357
+ isKnownLiveStartCardTransactionBlocker(response)) {
358
+ console.warn(formatLiveFailure(response, operation));
359
+ return undefined;
360
+ }
361
+ expectLiveSuccess(response, "StartCardTransaction");
362
+ expectParsedStartCardTransactionResponse(response);
363
+ return response;
364
+ }
365
+ exports.executeLiveStartCardTransaction = executeLiveStartCardTransaction;
366
+ /* eslint-enable indent */
367
+ function buildConfig(gpApiOverrides = {}) {
368
+ const config = new src_1.ConnectionConfig();
369
+ config.deviceType = src_1.DeviceType.UPA_DEVICE;
370
+ config.connectionMode = Enums_1.ConnectionModes.MEET_IN_THE_CLOUD;
371
+ const requestId = Math.floor(Math.random() * 10000);
372
+ config.requestIdProvider = { getRequestId: () => requestId };
373
+ const logger = new Logging_1.SampleRequestLogger(new Logging_1.Logger("logs"));
374
+ config.requestLogger = logger;
375
+ if (exports.useLiveMic && !exports.hasLiveGpApiCredentials) {
376
+ throw new Error("Set GP_API_APP_ID and GP_API_APP_KEY to run live UPA tests.");
377
+ }
378
+ const gpApiConfig = new src_1.GpApiConfig();
379
+ gpApiConfig.appId = exports.gpApiAppId ?? "UNIT_TEST_APP_ID";
380
+ gpApiConfig.appKey = exports.gpApiAppKey ?? "UNIT_TEST_APP_KEY";
381
+ gpApiConfig.environment = src_1.Environment.Test;
382
+ gpApiConfig.channel = src_1.Channel.CardPresent;
383
+ gpApiConfig.country = "US";
384
+ gpApiConfig.deviceCurrency = "USD";
385
+ gpApiConfig.requestLogger = logger;
386
+ if (exports.useLiveMic) {
387
+ gpApiConfig.accessTokenInfo = new src_1.AccessTokenInfo();
388
+ gpApiConfig.accessTokenInfo.transactionProcessingAccountName =
389
+ exports.gpApiAccountName;
390
+ }
391
+ else {
392
+ gpApiConfig.accessTokenInfo = {
393
+ transactionProcessingAccountName: "test",
394
+ accessToken: "UNIT_TEST_FAKE_TOKEN",
395
+ };
396
+ }
397
+ Object.assign(gpApiConfig, gpApiOverrides);
398
+ config.gatewayConfig = gpApiConfig;
399
+ return config;
400
+ }
401
+ exports.buildConfig = buildConfig;
402
+ function createTestDevice() {
403
+ const device = DeviceService_1.DeviceService.create(buildConfig());
404
+ device.ecrId = "13";
405
+ return device;
406
+ }
407
+ exports.createTestDevice = createTestDevice;
408
+ exports.describeUpaLive = exports.useLiveMic && !exports.hasLiveGpApiCredentials ? describe.skip : describe;
409
+ // ---------------------------------------------------------------------------
410
+ // Lodging / SAF / batch helpers (used by UpaCredit, UpaReport, UpaAdmin tests)
411
+ // ---------------------------------------------------------------------------
412
+ async function createLiveLodgingSale(device) {
413
+ const folioNumber = String(Date.now()).slice(-6);
414
+ const lodging = new src_1.Lodging();
415
+ lodging.folioNumber = folioNumber;
416
+ lodging.extraChargeTypes = [
417
+ src_1.ExtraChargeType.Restaurant,
418
+ src_1.ExtraChargeType.MiniBar,
419
+ ];
420
+ lodging.extraChargeTotal = 12.5;
421
+ lodging.dailyRate = 89.99;
422
+ const response = await device
423
+ .sale(1.0)
424
+ .withClerkId(123)
425
+ .withEcrId(13)
426
+ .withLodging(lodging)
427
+ .execute();
428
+ expect(response).toBeInstanceOf(TransactionResponse_1.TransactionResponse);
429
+ return response;
430
+ }
431
+ exports.createLiveLodgingSale = createLiveLodgingSale;
432
+ async function getLiveSafReport(device) {
433
+ const response = await device
434
+ .getSAFReport()
435
+ .where(UpaSearchCriteria_1.UpaSearchCriteria.EcrId, 13)
436
+ .and(UpaSearchCriteria_1.UpaSearchCriteria.ReportOutput, Enums_1.ReportOutput.ReturnData)
437
+ .execute();
438
+ expect(response).toBeInstanceOf(src_1.SafReportResponse);
439
+ return response;
440
+ }
441
+ exports.getLiveSafReport = getLiveSafReport;
442
+ function isNoSafTransaction(response) {
443
+ return (response.command === "GetSAFReport" &&
444
+ response.status === "Failed" &&
445
+ response.deviceResponseCode === "SAF001");
446
+ }
447
+ exports.isNoSafTransaction = isNoSafTransaction;
448
+ function getFirstSafReferenceNumber(response) {
449
+ const buckets = [
450
+ response.reportResult?.approved,
451
+ response.reportResult?.pending,
452
+ response.reportResult?.declined,
453
+ ];
454
+ for (const bucket of buckets) {
455
+ for (const summary of Object.values((bucket ?? {}))) {
456
+ const transaction = summary?.transactions?.[0];
457
+ if (transaction?.referenceNumber) {
458
+ return transaction.referenceNumber;
459
+ }
460
+ }
461
+ }
462
+ return undefined;
463
+ }
464
+ exports.getFirstSafReferenceNumber = getFirstSafReferenceNumber;
465
+ async function ensureSafData(device, seedSale, settle) {
466
+ const initialReport = await getLiveSafReport(device);
467
+ if (!isNoSafTransaction(initialReport)) {
468
+ return initialReport;
469
+ }
470
+ console.warn("No SAF records found. Attempting to seed SAF with a live sale. Present a card if prompted.");
471
+ const saleResponse = await seedSale(device);
472
+ await settle(5000);
473
+ if (saleResponse.safTransaction ||
474
+ saleResponse.storeAndForward === 1) {
475
+ return getLiveSafReport(device);
476
+ }
477
+ console.warn("SAF seed attempt did not create a SAF record. This device or tenant accepted the sale online instead of storing it. To validate SAF flows, enable terminal SAF mode or create a host-timeout/offline transaction on the terminal.");
478
+ return undefined;
479
+ }
480
+ exports.ensureSafData = ensureSafData;
481
+ async function findLiveBatches(device) {
482
+ const response = await device
483
+ .findBatches()
484
+ .where(UpaSearchCriteria_1.UpaSearchCriteria.EcrId, 13)
485
+ .execute();
486
+ expect(response).toBeInstanceOf(src_1.BatchList);
487
+ return response;
488
+ }
489
+ exports.findLiveBatches = findLiveBatches;
490
+ //# sourceMappingURL=UpaHelpertest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UpaHelpertest.js","sourceRoot":"","sources":["../../../../../test/Unit/Terminals/UPA/UpaHelpertest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};