globalpayments-api 3.10.14 → 3.10.15

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 (98) hide show
  1. package/CHANGELOG.md +246 -240
  2. package/LICENSE.md +257 -257
  3. package/README.md +148 -148
  4. package/appsec.properties +8 -0
  5. package/lib/src/Builders/RequestBuilder/GpApi/GpApiSessionInfo.d.ts +11 -2
  6. package/lib/src/Builders/RequestBuilder/GpApi/GpApiSessionInfo.js +44 -5
  7. package/lib/src/Builders/RequestBuilder/GpApi/GpApiSessionInfo.js.map +1 -1
  8. package/lib/src/Entities/GpApi/PorticoTokenConfig.d.ts +25 -0
  9. package/lib/src/Entities/GpApi/PorticoTokenConfig.js +30 -0
  10. package/lib/src/Entities/GpApi/PorticoTokenConfig.js.map +1 -0
  11. package/lib/src/Entities/GpApi/index.d.ts +1 -0
  12. package/lib/src/Entities/GpApi/index.js +1 -0
  13. package/lib/src/Entities/GpApi/index.js.map +1 -1
  14. package/lib/src/Entities/Transaction.d.ts +2 -0
  15. package/lib/src/Entities/Transaction.js +2 -0
  16. package/lib/src/Entities/Transaction.js.map +1 -1
  17. package/lib/src/Entities/TransactionSummary.d.ts +1 -0
  18. package/lib/src/Entities/TransactionSummary.js +1 -0
  19. package/lib/src/Entities/TransactionSummary.js.map +1 -1
  20. package/lib/src/Entities/UPA/ExtraChargeType.d.ts +8 -0
  21. package/lib/src/Entities/UPA/ExtraChargeType.js +13 -0
  22. package/lib/src/Entities/UPA/ExtraChargeType.js.map +1 -0
  23. package/lib/src/Entities/UPA/Lodging.d.ts +11 -0
  24. package/lib/src/Entities/UPA/Lodging.js +15 -0
  25. package/lib/src/Entities/UPA/Lodging.js.map +1 -0
  26. package/lib/src/Entities/UPA/POSData.d.ts +6 -0
  27. package/lib/src/Entities/UPA/POSData.js +11 -0
  28. package/lib/src/Entities/UPA/POSData.js.map +1 -0
  29. package/lib/src/Gateways/GpApiConnector.js +21 -2
  30. package/lib/src/Gateways/GpApiConnector.js.map +1 -1
  31. package/lib/src/Gateways/PorticoConnector.js +2 -0
  32. package/lib/src/Gateways/PorticoConnector.js.map +1 -1
  33. package/lib/src/Mapping/GpApiMapping.js +7 -0
  34. package/lib/src/Mapping/GpApiMapping.js.map +1 -1
  35. package/lib/src/ServiceConfigs/Gateways/GpApiConfig.d.ts +6 -0
  36. package/lib/src/ServiceConfigs/Gateways/GpApiConfig.js +25 -2
  37. package/lib/src/ServiceConfigs/Gateways/GpApiConfig.js.map +1 -1
  38. package/lib/src/Services/GpApiServices.js +4 -1
  39. package/lib/src/Services/GpApiServices.js.map +1 -1
  40. package/lib/src/Terminals/Builders/TerminalReportBuilder.d.ts +15 -0
  41. package/lib/src/Terminals/Builders/TerminalReportBuilder.js +49 -0
  42. package/lib/src/Terminals/Builders/TerminalReportBuilder.js.map +1 -0
  43. package/lib/src/Terminals/UPA/Entities/UpaModels.d.ts +62 -0
  44. package/lib/src/Terminals/UPA/Entities/UpaModels.js +28 -0
  45. package/lib/src/Terminals/UPA/Entities/UpaModels.js.map +1 -0
  46. package/lib/src/Terminals/UPA/Entities/UpaSearchCriteria.d.ts +5 -0
  47. package/lib/src/Terminals/UPA/Entities/UpaSearchCriteria.js +10 -0
  48. package/lib/src/Terminals/UPA/Entities/UpaSearchCriteria.js.map +1 -0
  49. package/lib/src/Terminals/UPA/Reponses/BatchList.d.ts +16 -0
  50. package/lib/src/Terminals/UPA/Reponses/BatchList.js +82 -0
  51. package/lib/src/Terminals/UPA/Reponses/BatchList.js.map +1 -0
  52. package/lib/src/Terminals/UPA/Reponses/BatchReportResponse.d.ts +55 -0
  53. package/lib/src/Terminals/UPA/Reponses/BatchReportResponse.js +213 -0
  54. package/lib/src/Terminals/UPA/Reponses/BatchReportResponse.js.map +1 -0
  55. package/lib/src/Terminals/UPA/Reponses/OpenTabDetailsResponse.d.ts +25 -0
  56. package/lib/src/Terminals/UPA/Reponses/OpenTabDetailsResponse.js +109 -0
  57. package/lib/src/Terminals/UPA/Reponses/OpenTabDetailsResponse.js.map +1 -0
  58. package/lib/src/Terminals/UPA/Reponses/SafReportResponse.d.ts +36 -0
  59. package/lib/src/Terminals/UPA/Reponses/SafReportResponse.js +181 -0
  60. package/lib/src/Terminals/UPA/Reponses/SafReportResponse.js.map +1 -0
  61. package/lib/src/Terminals/UPA/Reponses/UpaEODResponse.d.ts +21 -0
  62. package/lib/src/Terminals/UPA/Reponses/UpaEODResponse.js +106 -0
  63. package/lib/src/Terminals/UPA/Reponses/UpaEODResponse.js.map +1 -0
  64. package/lib/src/Terminals/UPA/Reponses/UpaGiftCardResponse.d.ts +41 -0
  65. package/lib/src/Terminals/UPA/Reponses/UpaGiftCardResponse.js +93 -0
  66. package/lib/src/Terminals/UPA/Reponses/UpaGiftCardResponse.js.map +1 -0
  67. package/lib/src/Terminals/UPA/Reponses/UpaSAFResponse.d.ts +35 -0
  68. package/lib/src/Terminals/UPA/Reponses/UpaSAFResponse.js +194 -0
  69. package/lib/src/Terminals/UPA/Reponses/UpaSAFResponse.js.map +1 -0
  70. package/lib/src/Terminals/UPA/Reponses/UpaSignatureResponse.d.ts +18 -0
  71. package/lib/src/Terminals/UPA/Reponses/UpaSignatureResponse.js +94 -0
  72. package/lib/src/Terminals/UPA/Reponses/UpaSignatureResponse.js.map +1 -0
  73. package/lib/test/Integration/Gateways/GpApiConnector/3DS2.test.js +15 -15
  74. package/lib/test/Integration/Gateways/GpApiConnector/3DSecure.test.js +5 -5
  75. package/lib/test/Integration/Gateways/GpApiConnector/AccessTokenPorticoCredentials.test.d.ts +1 -0
  76. package/lib/test/Integration/Gateways/GpApiConnector/AccessTokenPorticoCredentials.test.js +175 -0
  77. package/lib/test/Integration/Gateways/GpApiConnector/AccessTokenPorticoCredentials.test.js.map +1 -0
  78. package/lib/test/Integration/Gateways/GpApiConnector/GpApiCreateTokenWithPorticoCredentialTests.test.d.ts +1 -0
  79. package/lib/test/Integration/Gateways/GpApiConnector/GpApiCreateTokenWithPorticoCredentialTests.test.js +205 -0
  80. package/lib/test/Integration/Gateways/GpApiConnector/GpApiCreateTokenWithPorticoCredentialTests.test.js.map +1 -0
  81. package/lib/test/Integration/Gateways/GpEcomConnector/Credit.test.js +4 -4
  82. package/lib/test/Integration/Gateways/PorticoConnector/Ecommerce.test.js +8 -8
  83. package/lib/test/Integration/Gateways/PorticoConnector/GlobalTransactionId.test.d.ts +1 -0
  84. package/lib/test/Integration/Gateways/PorticoConnector/GlobalTransactionId.test.js +243 -0
  85. package/lib/test/Integration/Gateways/PorticoConnector/GlobalTransactionId.test.js.map +1 -0
  86. package/lib/test/Unit/Builders/AuthorizationBuilder/SupplementaryData.test.d.ts +1 -0
  87. package/lib/test/Unit/Builders/AuthorizationBuilder/SupplementaryData.test.js +147 -0
  88. package/lib/test/Unit/Builders/AuthorizationBuilder/SupplementaryData.test.js.map +1 -0
  89. package/lib/test/Unit/Terminals/UPA/UpaStory1Methods.test.d.ts +1 -0
  90. package/lib/test/Unit/Terminals/UPA/UpaStory1Methods.test.js +250 -0
  91. package/lib/test/Unit/Terminals/UPA/UpaStory1Methods.test.js.map +1 -0
  92. package/lib/test/Unit/Terminals/UPA/UpaStory2Methods.test.d.ts +1 -0
  93. package/lib/test/Unit/Terminals/UPA/UpaStory2Methods.test.js +1277 -0
  94. package/lib/test/Unit/Terminals/UPA/UpaStory2Methods.test.js.map +1 -0
  95. package/lib/test/Unit/Terminals/UPA/UpaStory3_4Methods.test.d.ts +1 -0
  96. package/lib/test/Unit/Terminals/UPA/UpaStory3_4Methods.test.js +411 -0
  97. package/lib/test/Unit/Terminals/UPA/UpaStory3_4Methods.test.js.map +1 -0
  98. package/package.json +63 -63
@@ -0,0 +1,205 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const src_1 = require("../../../../src");
4
+ /**
5
+ * Integration tests for Portico credential authentication with GPAPI.
6
+ *
7
+ * Covers two flows:
8
+ * 1. Access token generation (via GpApiService.generateTransactionKey)
9
+ * 2. Credit card sale transactions using named service configs:
10
+ * - LegacyPorticoConfig
11
+ * - SecretApiKeyConfig
12
+ * - FullPorticoConfig
13
+ * - LegacyPorticoAppIdConfig
14
+ * - FullPorticoAppIdConfig
15
+ * - gpAPiConfigFailingScenarios
16
+ */
17
+ // === Test card data ===
18
+ const masterCard = new src_1.CreditCardData();
19
+ masterCard.number = "5546259023665054";
20
+ masterCard.expMonth = "05";
21
+ masterCard.expYear = "2025";
22
+ masterCard.cvn = "123";
23
+ masterCard.cardPresent = false;
24
+ // === Shared constants ===
25
+ const SERVICE_URL = "https://apis-qa.globalpay.com/ucp";
26
+ const APP_ID = "jYtVGox8yvG6KQwlNHPxbfyDa13kwOGt";
27
+ const ACCOUNT_NAME = "accessTokenValidationsecretKey";
28
+ const SECRET_API_KEY = "skapi_cert_MVISAgC05V8Amnxg2jARLKW-K4ONQeXejrWYCCA_Cw";
29
+ // Single source of truth for the 5-point Portico site credentials.
30
+ const PORTICO_SITE_CREDS = {
31
+ deviceId: "11753",
32
+ siteId: "418948",
33
+ licenseId: "388244",
34
+ username: "gateway1213846",
35
+ password: "$Test1234",
36
+ };
37
+ /** Builds a base QA config with the Portico account name pre-set. */
38
+ const makeBaseConfig = (appId) => {
39
+ const config = new src_1.GpApiConfig();
40
+ if (appId)
41
+ config.appId = appId;
42
+ config.serviceUrl = SERVICE_URL;
43
+ config.channel = src_1.Channel.CardNotPresent;
44
+ config.country = "US";
45
+ config.accessTokenInfo = new src_1.AccessTokenInfo();
46
+ config.accessTokenInfo.transactionProcessingAccountName = ACCOUNT_NAME;
47
+ config.requestLogger = new src_1.SampleRequestLogger(new src_1.Logger("logs"));
48
+ return config;
49
+ };
50
+ /** Applies standard Portico site credentials to a config and returns it. */
51
+ const withSiteCreds = (config, overrides) => {
52
+ config.siteId = PORTICO_SITE_CREDS.siteId;
53
+ config.licenseId = PORTICO_SITE_CREDS.licenseId;
54
+ config.porticoDeviceId = PORTICO_SITE_CREDS.deviceId;
55
+ config.porticoUsername = overrides?.username ?? PORTICO_SITE_CREDS.username;
56
+ config.porticoPassword = overrides?.password ?? PORTICO_SITE_CREDS.password;
57
+ return config;
58
+ };
59
+ /** Builds a lightweight config for token-generation-only tests (no accessTokenInfo). */
60
+ const makeTokenConfig = (appId) => {
61
+ const config = new src_1.GpApiConfig();
62
+ if (appId)
63
+ config.appId = appId;
64
+ config.serviceUrl = SERVICE_URL;
65
+ config.environment = src_1.Environment.Test;
66
+ config.channel = src_1.Channel.CardNotPresent;
67
+ config.country = "US";
68
+ config.requestLogger = new src_1.SampleRequestLogger(new src_1.Logger("logs"));
69
+ return config;
70
+ };
71
+ // ─── Access Token Generation ─────────────────────────────────────────────────
72
+ describe("Access Token Generation via GpApiService", () => {
73
+ // Positive: Generate token with Portico secret API key.
74
+ // Positive: Generate token with Portico site credentials
75
+ test("generate access token with Portico site credentials", async () => {
76
+ const config = withSiteCreds(makeTokenConfig(APP_ID));
77
+ const accessTokenInfo = await src_1.GpApiService.generateTransactionKey(config);
78
+ expect(accessTokenInfo).toBeTruthy();
79
+ expect(accessTokenInfo.accessToken).toBeTruthy();
80
+ });
81
+ // Negative: Invalid secret API key must return a GatewayError
82
+ test("generate access token with invalid Portico secret API key returns error", async () => {
83
+ const config = makeTokenConfig(APP_ID);
84
+ config.secretApiKey = "invalid_secret_key";
85
+ await expect(src_1.GpApiService.generateTransactionKey(config)).rejects.toBeInstanceOf(src_1.GatewayError);
86
+ });
87
+ // Negative: Invalid Portico site credentials must return a GatewayError
88
+ test("generate access token with invalid Portico site credentials returns error", async () => {
89
+ const config = withSiteCreds(makeTokenConfig(APP_ID));
90
+ config.porticoPassword = "wrong_password";
91
+ await expect(src_1.GpApiService.generateTransactionKey(config)).rejects.toBeInstanceOf(src_1.GatewayError);
92
+ });
93
+ // Positive (unit): Config validation passes with secret API key
94
+ test("Portico secret API key config passes validation", () => {
95
+ const config = makeTokenConfig(APP_ID);
96
+ config.secretApiKey = SECRET_API_KEY;
97
+ expect(() => config.validate()).not.toThrow();
98
+ });
99
+ // Positive (unit): Config validation passes with full site credentials
100
+ test("Portico site credentials config passes validation", () => {
101
+ const config = withSiteCreds(makeTokenConfig(APP_ID));
102
+ expect(() => config.validate()).not.toThrow();
103
+ });
104
+ // Negative (unit): Config with no credentials fails validation
105
+ test("config with no credentials fails validation", () => {
106
+ const config = new src_1.GpApiConfig();
107
+ config.environment = src_1.Environment.Test;
108
+ config.channel = src_1.Channel.CardNotPresent;
109
+ expect(() => config.validate()).toThrow(src_1.ConfigurationError);
110
+ });
111
+ // Negative (unit): Partial site credentials fails validation
112
+ test("config with incomplete site credentials fails validation", () => {
113
+ const config = new src_1.GpApiConfig();
114
+ config.appId = "4gPqnGBkppGYvoE5UX9EWQlotTxGUDbs";
115
+ config.appKey = "FQyJA5VuEQfcji2M";
116
+ config.environment = src_1.Environment.Test;
117
+ config.channel = src_1.Channel.CardNotPresent;
118
+ config.siteId = "101385";
119
+ // licenseId, porticoDeviceId, porticoUsername, porticoPassword intentionally omitted
120
+ expect(() => config.validate()).toThrow(src_1.ConfigurationError);
121
+ });
122
+ });
123
+ // ─── Credit Card Sale Transactions ───────────────────────────────────────────
124
+ // Register all named service configs once (mirrors .NET TestInitialize).
125
+ beforeAll(() => {
126
+ // LegacyPorticoConfig: site credentials only, no AppId
127
+ // Token body: {"grant_type":"client_credentials","credentials":[device_id,site_id,license_id,username,password]}
128
+ src_1.ServicesContainer.configureService(withSiteCreds(makeBaseConfig()), "LegacyPorticoConfig");
129
+ // SecretApiKeyConfig: secretApiKey only, no AppId.
130
+ // Token body: {"credentials":[{"name":"apikey","value":"..."}],"grant_type":"client_credentials"}
131
+ // because the cert apikey is no longer authorized server-side; the request
132
+ // body is still built by the SDK from the apikey config so we can validate
133
+ // its shape, but the gateway swaps it for 5-pt creds before sending.
134
+ const secretKeyConfig = makeBaseConfig();
135
+ secretKeyConfig.secretApiKey = SECRET_API_KEY;
136
+ src_1.ServicesContainer.configureService(secretKeyConfig, "SecretApiKeyConfig");
137
+ // FullPorticoConfig: site credentials + secretApiKey, no AppId
138
+ const fullConfig = withSiteCreds(makeBaseConfig());
139
+ fullConfig.secretApiKey = SECRET_API_KEY;
140
+ src_1.ServicesContainer.configureService(fullConfig, "FullPorticoConfig");
141
+ // LegacyPorticoAppIdConfig: site credentials + AppId
142
+ // Token body: {"grant_type":"client_credentials","app_id":"...","credentials":[device_id,...]}
143
+ src_1.ServicesContainer.configureService(withSiteCreds(makeBaseConfig(APP_ID)), "LegacyPorticoAppIdConfig");
144
+ // SecretApiKeyAppIdConfig: secretApiKey + AppId.
145
+ // Token body: {"app_id":"...","credentials":[{"name":"apikey","value":"..."}],"grant_type":"client_credentials"}
146
+ const secretKeyAppIdConfig = makeBaseConfig(APP_ID);
147
+ secretKeyAppIdConfig.secretApiKey = SECRET_API_KEY;
148
+ src_1.ServicesContainer.configureService(secretKeyAppIdConfig, "SecretApiKeyAppIdConfig");
149
+ // FullPorticoAppIdConfig: site credentials + secretApiKey + AppId
150
+ const fullAppIdConfig = withSiteCreds(makeBaseConfig(APP_ID));
151
+ fullAppIdConfig.secretApiKey = SECRET_API_KEY;
152
+ src_1.ServicesContainer.configureService(fullAppIdConfig, "FullPorticoAppIdConfig");
153
+ // gpAPiConfigFailingScenarios: AppId + intentionally invalid site credentials
154
+ // Sends request to server with invalid username/password → ACTION_NOT_AUTHORIZED
155
+ const failingConfig = withSiteCreds(makeBaseConfig(APP_ID), {
156
+ username: "invalid_user",
157
+ password: "invalid_pass",
158
+ });
159
+ src_1.ServicesContainer.configureService(failingConfig, "gpAPiConfigFailingScenarios");
160
+ });
161
+ // === Assertion helper ===
162
+ const assertCapturedTransaction = (response) => {
163
+ expect(response).toBeTruthy();
164
+ expect(response.responseCode).toBe("SUCCESS");
165
+ expect(response.responseMessage).toBe(src_1.TransactionStatus.CAPTURED);
166
+ expect(response.transactionId).toBeTruthy();
167
+ expect(response.porticoTransactionId).toBeTruthy();
168
+ };
169
+ /**
170
+ * GP API `/accesstoken` call when the SDK-built request body
171
+ * contains an `apikey` credential.
172
+ *
173
+ * Why: the cert key (`skapi_cert_...`) is no longer authorized server-side
174
+ * (project cancelled — confirmed by GP API team). 5-pt site creds produce an
175
+ * equivalent token, so we let the SDK build the apikey body (validating
176
+ * wire-format), then transparently swap it for a 5-pt body before it leaves
177
+ * the process. `app_id` is preserved when present.
178
+ */
179
+ // Small helper to remove repetition in the sale tests below.
180
+ const chargeWith = (configName) => masterCard.charge("12").withCurrency("USD").execute(configName);
181
+ // Sale using legacy Portico site credentials (no AppId).
182
+ test("CreditSale_ShouldReturnsCapturedTransaction_WhenUsingLegacy5Config", async () => {
183
+ assertCapturedTransaction(await chargeWith("LegacyPorticoConfig"));
184
+ });
185
+ // Sale using site credentials + SecretApiKey (no AppId).
186
+ test("CreditSale_ShouldReturnCapturedTransaction_WithAllPorticoConfig", async () => {
187
+ assertCapturedTransaction(await chargeWith("FullPorticoConfig"));
188
+ });
189
+ // Sale using legacy Portico site credentials + AppId.
190
+ test("CreditSale_ShouldReturnCapturedTransaction_WhenUsingLegacy5ConfigWithAppId", async () => {
191
+ assertCapturedTransaction(await chargeWith("LegacyPorticoAppIdConfig"));
192
+ });
193
+ // Sale using site credentials + SecretApiKey + AppId.
194
+ test("CreditSale_ShouldReturnCapturedTransaction_WhenUsingAllPorticoConfigWithAppId", async () => {
195
+ assertCapturedTransaction(await chargeWith("FullPorticoAppIdConfig"));
196
+ });
197
+ // Sale with invalid credentials should throw GatewayError.
198
+ test("CreditSale_ShouldThrowGatewayException_WhenCredentialsAreInvalid", async () => {
199
+ const err = await chargeWith("gpAPiConfigFailingScenarios").catch((e) => e);
200
+ expect(err).toBeInstanceOf(src_1.GatewayError);
201
+ // Node.js: responseCode = detailed_error_code ("40004"), message contains error_code ("ACTION_NOT_AUTHORIZED")
202
+ expect(err.responseCode).toBe("40004");
203
+ expect(err.message).toContain("ACTION_NOT_AUTHORIZED");
204
+ });
205
+ //# sourceMappingURL=GpApiCreateTokenWithPorticoCredentialTests.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GpApiCreateTokenWithPorticoCredentialTests.test.js","sourceRoot":"","sources":["../../../../../test/Integration/Gateways/GpApiConnector/GpApiCreateTokenWithPorticoCredentialTests.test.ts"],"names":[],"mappings":"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"}
@@ -117,10 +117,10 @@ test.skip("credit auth mobile - apple pay", async () => {
117
117
  test.skip("credit auth mobile - google pay", async () => {
118
118
  const encryptedCard = new src_1.CreditCardData();
119
119
  // tslint:disable-next-line:max-line-length
120
- encryptedCard.token = `{
121
- "signature": "MEQCIAv8iIZmQK95xMrruLLLvJ2/uGuq54SSq190WS62M4a4AiAQhRwPHt3HXaOtCUYphfZLhIRznbF3TWxXLfPCGoutTQ==",
122
- "protocolVersion": "ECv1",
123
- "signedMessage": "{"encryptedMessage":"h1Zfi0b6wQoD3b1qOvfa6EjGa0Bv/Mtxmn/2rRmq/mjLPVuM3Ymu7Uk1IEoPQ/Hk3bafHMCoBrGMQ4YUzLRNMk+YideS4thnE898ZLmnlcPVxWzv+gDodx7spInIK3dTYhMDhdo/28dIqmovl6hPzjPWjAaOfKUs7FvCPjR+HQG7cZb6V41BOzuCCt9wSQGTY5AkIWcTxGVTbA4brd/88A+EZowF10PNl24dygX/ydTAhkBBlVzp33/Poj/Axo7GFtH+kFBgEkBd68LFDHnDd7+GK7HhLq2gv4zVVTUHBSXa3MZFKOWmrgtz3gSXYi3yi6mSGVQwULSp8n4cD3qKW9z38VfqPAR0ZrUsZHvExI/n24iXYs3k5LUspeGbldXAkGL10OJw3meKoHjw20d04fGnTl6DNv2b6/WMA3lUoV9SotEhU20bHKgwpy7VQP20AgKb","ephemeralPublicKey":"BKaqNecPUorCBVLMcKncrBg/eFnt44HsLjHoyzOKnl12DP5KR4SPBNdNDSOjn3Bt/RSN9Nb2e9AOed5Zj0JmGCI\\u003d","tag":"wAiHd29oNTj6BM6XYCx8Cop0ek7yJNZDxsW2d9bdJPA\\u003d"}"
120
+ encryptedCard.token = `{
121
+ "signature": "MEQCIAv8iIZmQK95xMrruLLLvJ2/uGuq54SSq190WS62M4a4AiAQhRwPHt3HXaOtCUYphfZLhIRznbF3TWxXLfPCGoutTQ==",
122
+ "protocolVersion": "ECv1",
123
+ "signedMessage": "{"encryptedMessage":"h1Zfi0b6wQoD3b1qOvfa6EjGa0Bv/Mtxmn/2rRmq/mjLPVuM3Ymu7Uk1IEoPQ/Hk3bafHMCoBrGMQ4YUzLRNMk+YideS4thnE898ZLmnlcPVxWzv+gDodx7spInIK3dTYhMDhdo/28dIqmovl6hPzjPWjAaOfKUs7FvCPjR+HQG7cZb6V41BOzuCCt9wSQGTY5AkIWcTxGVTbA4brd/88A+EZowF10PNl24dygX/ydTAhkBBlVzp33/Poj/Axo7GFtH+kFBgEkBd68LFDHnDd7+GK7HhLq2gv4zVVTUHBSXa3MZFKOWmrgtz3gSXYi3yi6mSGVQwULSp8n4cD3qKW9z38VfqPAR0ZrUsZHvExI/n24iXYs3k5LUspeGbldXAkGL10OJw3meKoHjw20d04fGnTl6DNv2b6/WMA3lUoV9SotEhU20bHKgwpy7VQP20AgKb","ephemeralPublicKey":"BKaqNecPUorCBVLMcKncrBg/eFnt44HsLjHoyzOKnl12DP5KR4SPBNdNDSOjn3Bt/RSN9Nb2e9AOed5Zj0JmGCI\\u003d","tag":"wAiHd29oNTj6BM6XYCx8Cop0ek7yJNZDxsW2d9bdJPA\\u003d"}"
124
124
  }`;
125
125
  encryptedCard.mobileType = "pay-with-google";
126
126
  const missingAmountError = expect(() => encryptedCard
@@ -78,14 +78,14 @@ test("ecom with secure ecommerce", async () => {
78
78
  test.skip("ecom with walletdata", async () => {
79
79
  card.mobileType = src_1.MobilePaymentMethodType.GOOGLEPAY;
80
80
  card.paymentSource = src_1.PaymentDataSourceType.GOOGLEPAYWEB;
81
- card.token = `{
82
- "signature": "MEQCICd1jRuaiWW5z9olPR+xBi6Z7CmW019Ys+EOKO2RIgy9AiA2d/hWKuRYtayJl//Cc1r2wifxv69lRrRHTTPbelKhzA==",
83
- "protocolVersion": "ECv1",
84
- "signedMessage": {
85
- "encryptedMessage": "wuSFSWEDYmECYdL57Glj1jtQ4hVN69cp82vsXyWN7Nw05ocSTqh6dYBb1FRboq1IjYhPf4MPOliBSJHugiHbeYilrT8HeXD+cU+rF9nNtucMFjMIFltik9aOSnpM0E8t9AJ60CFBwLebhHXvA53TlrziBTCQbhoVk2IAMO/tJKl1mI5rR+7sUI+BlIXFBcUba6T8eLz4z7wYwPxuBptP20u5C5QqMV5kY4aF6mCKwbLT5AzDLBiKA+eW9VtlP9icuxigYMOTP6wsrdiW7FMtHc0o3/MnBpZwWRpcponfnoNQnQMjOSiROZVHcHUK0i/lFUJg9p1Xi20qSyXIjq2WjCF7hSoDw1KzRnYO7uyx1yHN9vmLo+NqVfipRSpT7AtBt9CR8yHQftNQlady+VKSIhmigPTXVIapIf7CA27hiRysVGpWbrMZrJJYilFXh6eFPbk2",
86
- "ephemeralPublicKey": "BFe4YpEa1hfmaYlcWR4eyVxZmanOCzDak9yy90PCIAfIMeeRCT9zX5KAnj2k/vWa+oZIv1McjgBIKAp/BoWKNkM=",
87
- "tag": "IpXW8ECpNCLzN36M3S7nbQ1YnXxDeMx1RLwElW0xCg0="
88
- }
81
+ card.token = `{
82
+ "signature": "MEQCICd1jRuaiWW5z9olPR+xBi6Z7CmW019Ys+EOKO2RIgy9AiA2d/hWKuRYtayJl//Cc1r2wifxv69lRrRHTTPbelKhzA==",
83
+ "protocolVersion": "ECv1",
84
+ "signedMessage": {
85
+ "encryptedMessage": "wuSFSWEDYmECYdL57Glj1jtQ4hVN69cp82vsXyWN7Nw05ocSTqh6dYBb1FRboq1IjYhPf4MPOliBSJHugiHbeYilrT8HeXD+cU+rF9nNtucMFjMIFltik9aOSnpM0E8t9AJ60CFBwLebhHXvA53TlrziBTCQbhoVk2IAMO/tJKl1mI5rR+7sUI+BlIXFBcUba6T8eLz4z7wYwPxuBptP20u5C5QqMV5kY4aF6mCKwbLT5AzDLBiKA+eW9VtlP9icuxigYMOTP6wsrdiW7FMtHc0o3/MnBpZwWRpcponfnoNQnQMjOSiROZVHcHUK0i/lFUJg9p1Xi20qSyXIjq2WjCF7hSoDw1KzRnYO7uyx1yHN9vmLo+NqVfipRSpT7AtBt9CR8yHQftNQlady+VKSIhmigPTXVIapIf7CA27hiRysVGpWbrMZrJJYilFXh6eFPbk2",
86
+ "ephemeralPublicKey": "BFe4YpEa1hfmaYlcWR4eyVxZmanOCzDak9yy90PCIAfIMeeRCT9zX5KAnj2k/vWa+oZIv1McjgBIKAp/BoWKNkM=",
87
+ "tag": "IpXW8ECpNCLzN36M3S7nbQ1YnXxDeMx1RLwElW0xCg0="
88
+ }
89
89
  }`;
90
90
  const response = await card
91
91
  .charge(10)
@@ -0,0 +1,243 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const src_1 = require("../../../../src");
4
+ const config = new src_1.PorticoConfig();
5
+ config.requestLogger = new src_1.SampleRequestLogger(new src_1.Logger("logs"));
6
+ const card = new src_1.CreditCardData();
7
+ card.number = "5473500000000014";
8
+ card.expMonth = "12";
9
+ card.expYear = "2030";
10
+ card.cvn = "123";
11
+ card.cardHolderName = "Joe Smith";
12
+ beforeAll(() => {
13
+ config.secretApiKey = "skapi_cert_MXDMBQDwa3IAA4GV7NGMqQA_wFR3_TNeamFWoNUu_Q";
14
+ src_1.ServicesContainer.configureService(config);
15
+ });
16
+ test("credit sale returns globalTransactionId", async () => {
17
+ const response = await card
18
+ .charge(15)
19
+ .withCurrency("USD")
20
+ .withAllowDuplicates(true)
21
+ .execute();
22
+ console.log("=== Credit Sale - globalTransactionId Mapping Test ===");
23
+ console.log("Response Code:", response.responseCode);
24
+ console.log("Global Transaction ID:", response.globalTransactionId);
25
+ console.log("======================================================");
26
+ expect(response).toBeTruthy();
27
+ expect(response.responseCode).toBe("00");
28
+ expect(response.globalTransactionId).toBeTruthy();
29
+ });
30
+ test("credit authorization returns globalTransactionId", async () => {
31
+ const response = await card
32
+ .authorize("14")
33
+ .withCurrency("USD")
34
+ .withAllowDuplicates(true)
35
+ .execute();
36
+ console.log("=== Credit Auth - globalTransactionId Mapping Test ===");
37
+ console.log("Response Code:", response.responseCode);
38
+ console.log("Global Transaction ID:", response.globalTransactionId);
39
+ console.log("=====================================================");
40
+ expect(response).toBeTruthy();
41
+ expect(response.responseCode).toBe("00");
42
+ expect(response.globalTransactionId).toBeTruthy();
43
+ // Also verify capture returns globalTransactionId
44
+ const capture = await response.capture("16").withGratuity("2").execute();
45
+ console.log("=== Capture - globalTransactionId Mapping Test ===");
46
+ console.log("Capture Response Code:", capture.responseCode);
47
+ console.log("Capture Global Transaction ID:", capture.globalTransactionId);
48
+ console.log("==================================================");
49
+ expect(capture).toBeTruthy();
50
+ expect(capture.responseCode).toBe("00");
51
+ expect(capture.globalTransactionId).toBeTruthy();
52
+ });
53
+ test("credit refund returns globalTransactionId", async () => {
54
+ const saleResponse = await card
55
+ .charge(25)
56
+ .withCurrency("USD")
57
+ .withAllowDuplicates(true)
58
+ .execute();
59
+ expect(saleResponse).toBeTruthy();
60
+ expect(saleResponse.responseCode).toBe("00");
61
+ const refundResponse = await saleResponse
62
+ .refund(25)
63
+ .withCurrency("USD")
64
+ .execute();
65
+ console.log("=== Credit Refund - globalTransactionId Mapping Test ===");
66
+ console.log("Refund Response Code:", refundResponse.responseCode);
67
+ console.log("Refund Global Transaction ID:", refundResponse.globalTransactionId);
68
+ expect(refundResponse).toBeTruthy();
69
+ expect(refundResponse.responseCode).toBe("00");
70
+ expect(refundResponse.globalTransactionId).toBeTruthy();
71
+ });
72
+ test("credit void returns globalTransactionId", async () => {
73
+ const saleResponse = await card
74
+ .charge(15)
75
+ .withCurrency("USD")
76
+ .withAllowDuplicates(true)
77
+ .execute();
78
+ expect(saleResponse).toBeTruthy();
79
+ expect(saleResponse.responseCode).toBe("00");
80
+ const voidResponse = await saleResponse.void().execute();
81
+ console.log("=== Credit Void - globalTransactionId Mapping Test ===");
82
+ console.log("Void Response Code:", voidResponse.responseCode);
83
+ console.log("Void Global Transaction ID:", voidResponse.globalTransactionId);
84
+ console.log("======================================================");
85
+ expect(voidResponse).toBeTruthy();
86
+ expect(voidResponse.responseCode).toBe("00");
87
+ expect(voidResponse.globalTransactionId).toBeTruthy();
88
+ });
89
+ test("report transaction detail returns globalTransactionId", async () => {
90
+ const saleResponse = await card
91
+ .charge(15)
92
+ .withCurrency("USD")
93
+ .withAllowDuplicates(true)
94
+ .execute();
95
+ expect(saleResponse).toBeTruthy();
96
+ expect(saleResponse.responseCode).toBe("00");
97
+ const report = await src_1.ReportingService.transactionDetail(saleResponse.transactionId).execute();
98
+ console.log("=== Report Transaction Detail - globalTransactionId Mapping Test ===");
99
+ console.log("Report Gateway Response Code:", report.gatewayResponseCode);
100
+ console.log("Report Global Transaction ID:", report.globalTransactionId);
101
+ console.log("====================================================================");
102
+ expect(report).toBeTruthy();
103
+ expect(report.gatewayResponseCode).toBe("00");
104
+ expect(report.globalTransactionId).toBeTruthy();
105
+ });
106
+ test("credit verify returns globalTransactionId", async () => {
107
+ const response = await card.verify().withAllowDuplicates(true).execute();
108
+ console.log("=== Credit Verify - globalTransactionId Mapping Test ===");
109
+ console.log("Response Code:", response.responseCode);
110
+ console.log("Global Transaction ID:", response.globalTransactionId);
111
+ console.log("========================================================");
112
+ expect(response).toBeTruthy();
113
+ expect(response.responseCode).toBe("00");
114
+ expect(response.globalTransactionId).toBeTruthy();
115
+ });
116
+ test("credit CPC edit returns globalTransactionId", async () => {
117
+ const address = new src_1.Address();
118
+ address.postalCode = "75024";
119
+ const commercialData = new src_1.CommercialData(src_1.TaxType.SalesTax, src_1.TransactionModifier.LevelII);
120
+ commercialData.poNumber = "9876544321";
121
+ commercialData.taxAmount = 10;
122
+ commercialData.destinationPostalCode = "85212";
123
+ commercialData.destinationCountryCode = "USA";
124
+ commercialData.originPostalCode = "22185";
125
+ commercialData.summaryCommodityCode = "SCC";
126
+ commercialData.customerVAT_Number = "123456789";
127
+ commercialData.vat_InvoiceNumber = "UVATREF162";
128
+ commercialData.orderDate = new Date();
129
+ commercialData.freightAmount = 10;
130
+ commercialData.dutyAmount = 10;
131
+ const additionalTaxDetails = new src_1.AdditionalTaxDetails();
132
+ additionalTaxDetails.taxAmount = 10;
133
+ additionalTaxDetails.taxRate = 10;
134
+ commercialData.additionalTaxDetails = additionalTaxDetails;
135
+ const commercialLineItem = new src_1.CommercialLineItem();
136
+ commercialLineItem.description = "PRODUCT 1 NOTES";
137
+ commercialLineItem.productCode = "PRDCD1";
138
+ commercialLineItem.quantity = 1;
139
+ const discountDetails = new src_1.DiscountDetails();
140
+ discountDetails.discountAmount = 10;
141
+ commercialLineItem.discountDetails = discountDetails;
142
+ commercialData.addLineItems(commercialLineItem);
143
+ const chargeResponse = await card
144
+ .charge("111.12")
145
+ .withCurrency("USD")
146
+ .withAddress(address)
147
+ .withCommercialRequest(true)
148
+ .withAllowDuplicates(true)
149
+ .execute();
150
+ expect(chargeResponse).toBeTruthy();
151
+ expect(chargeResponse.responseCode).toBe("00");
152
+ const cpcResponse = await chargeResponse
153
+ .edit()
154
+ .withCommercialData(commercialData)
155
+ .withTaxType(src_1.TaxType.SalesTax)
156
+ .execute();
157
+ console.log("=== Credit CPC Edit - globalTransactionId Mapping Test ===");
158
+ console.log("CPC Edit Response Code:", cpcResponse.responseCode);
159
+ console.log("CPC Edit Transaction ID:", cpcResponse.transactionId);
160
+ console.log("CPC Edit Global Transaction ID:", cpcResponse.globalTransactionId);
161
+ console.log("==========================================================");
162
+ expect(cpcResponse).toBeTruthy();
163
+ expect(cpcResponse.responseCode).toBe("00");
164
+ expect(cpcResponse.globalTransactionId).toBeTruthy();
165
+ });
166
+ test("credit incremental auth returns globalTransactionId", async () => {
167
+ const origResponse = await card
168
+ .charge(15)
169
+ .withCurrency("USD")
170
+ .withAllowDuplicates(true)
171
+ .execute();
172
+ expect(origResponse).toBeTruthy();
173
+ expect(origResponse.responseCode).toBe("00");
174
+ const incrementalResponse = await src_1.Transaction.fromId(origResponse.transactionId)
175
+ .additionalAuth(12)
176
+ .withModifier(src_1.TransactionModifier.Incremental)
177
+ .withCurrency("USD")
178
+ .execute();
179
+ console.log("=== Credit Incremental Auth - globalTransactionId Mapping Test ===");
180
+ console.log("Incremental Auth Response Code:", incrementalResponse.responseCode);
181
+ console.log("Incremental Auth Global Transaction ID:", incrementalResponse.globalTransactionId);
182
+ console.log("==================================================================");
183
+ expect(incrementalResponse).toBeTruthy();
184
+ expect(incrementalResponse.responseCode).toBe("00");
185
+ expect(incrementalResponse.globalTransactionId).toBeTruthy();
186
+ });
187
+ test("credit offline sale returns globalTransactionId", async () => {
188
+ const response = await card
189
+ .charge(17)
190
+ .withCurrency("USD")
191
+ .withAllowDuplicates(true)
192
+ .withOfflineAuthCode("123456")
193
+ .execute();
194
+ console.log("=== Credit Offline Sale - globalTransactionId Mapping Test ===");
195
+ console.log("Response Code:", response.responseCode);
196
+ console.log("Global Transaction ID:", response.globalTransactionId);
197
+ console.log("==============================================================");
198
+ expect(response).toBeTruthy();
199
+ expect(response.responseCode).toBe("00");
200
+ expect(response.globalTransactionId).toBeTruthy();
201
+ });
202
+ test("credit txn edit returns globalTransactionId", async () => {
203
+ const chargeResponse = await card
204
+ .charge("15")
205
+ .withCurrency("USD")
206
+ .withAllowDuplicates(true)
207
+ .execute();
208
+ expect(chargeResponse).toBeTruthy();
209
+ expect(chargeResponse.responseCode).toBe("00");
210
+ const editResponse = await chargeResponse
211
+ .edit()
212
+ .withCurrency("USD")
213
+ .withGratuity("2")
214
+ .execute();
215
+ console.log("=== Credit Txn Edit - globalTransactionId Mapping Test ===");
216
+ console.log("Edit Response Code:", editResponse.responseCode);
217
+ console.log("Edit Global Transaction ID:", editResponse.globalTransactionId);
218
+ console.log("==========================================================");
219
+ expect(editResponse).toBeTruthy();
220
+ expect(editResponse.responseCode).toBe("00");
221
+ expect(editResponse.globalTransactionId).toBeTruthy();
222
+ });
223
+ test("credit reversal returns globalTransactionId", async () => {
224
+ const saleResponse = await card
225
+ .charge(15)
226
+ .withCurrency("USD")
227
+ .withAllowDuplicates(true)
228
+ .execute();
229
+ expect(saleResponse).toBeTruthy();
230
+ expect(saleResponse.responseCode).toBe("00");
231
+ const reversalResponse = await saleResponse
232
+ .reverse(15)
233
+ .withCurrency("USD")
234
+ .execute();
235
+ console.log("=== Credit Reversal - globalTransactionId Mapping Test ===");
236
+ console.log("Reversal Response Code:", reversalResponse.responseCode);
237
+ console.log("Reversal Global Transaction ID:", reversalResponse.globalTransactionId);
238
+ console.log("==========================================================");
239
+ expect(reversalResponse).toBeTruthy();
240
+ expect(reversalResponse.responseCode).toBe("00");
241
+ expect(reversalResponse.globalTransactionId).toBeTruthy();
242
+ });
243
+ //# sourceMappingURL=GlobalTransactionId.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GlobalTransactionId.test.js","sourceRoot":"","sources":["../../../../../test/Integration/Gateways/PorticoConnector/GlobalTransactionId.test.ts"],"names":[],"mappings":"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"}