globalpayments-api 3.10.13 → 3.10.14

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 (53) hide show
  1. package/CHANGELOG.md +240 -236
  2. package/LICENSE.md +257 -257
  3. package/README.md +148 -148
  4. package/lib/src/Builders/RequestBuilder/GpApi/GpApiAuthorizationRequestBuilder.js +21 -0
  5. package/lib/src/Builders/RequestBuilder/GpApi/GpApiAuthorizationRequestBuilder.js.map +1 -1
  6. package/lib/src/Gateways/GpApiConnector.d.ts +0 -6
  7. package/lib/src/Gateways/GpApiConnector.js +1 -41
  8. package/lib/src/Gateways/GpApiConnector.js.map +1 -1
  9. package/lib/src/Gateways/PorticoConnector.js +2 -6
  10. package/lib/src/Gateways/PorticoConnector.js.map +1 -1
  11. package/lib/src/Terminals/Builders/TerminalAuthBuilder.d.ts +1 -1
  12. package/lib/src/Terminals/Builders/TerminalAuthBuilder.js +11 -18
  13. package/lib/src/Terminals/Builders/TerminalAuthBuilder.js.map +1 -1
  14. package/lib/src/Terminals/Builders/TerminalManageBuilder.d.ts +1 -0
  15. package/lib/src/Terminals/Builders/TerminalManageBuilder.js +4 -0
  16. package/lib/src/Terminals/Builders/TerminalManageBuilder.js.map +1 -1
  17. package/lib/src/Terminals/UPA/Reponses/TransactionResponse.js +9 -2
  18. package/lib/src/Terminals/UPA/Reponses/TransactionResponse.js.map +1 -1
  19. package/lib/src/Terminals/UPA/UpaController.js +4 -1
  20. package/lib/src/Terminals/UPA/UpaController.js.map +1 -1
  21. package/lib/src/Utils/SdkVersion.d.ts +1 -0
  22. package/lib/src/Utils/SdkVersion.js +48 -0
  23. package/lib/src/Utils/SdkVersion.js.map +1 -0
  24. package/lib/src/Utils/index.d.ts +1 -0
  25. package/lib/src/Utils/index.js +1 -0
  26. package/lib/src/Utils/index.js.map +1 -1
  27. package/lib/test/Integration/Gateways/CI/gpapi/GpApiTransactionsTests.test.js +69 -0
  28. package/lib/test/Integration/Gateways/CI/gpapi/GpApiTransactionsTests.test.js.map +1 -0
  29. package/lib/test/Integration/Gateways/CI/portico/PorticoCreditTests.test.js +111 -0
  30. package/lib/test/Integration/Gateways/CI/portico/PorticoCreditTests.test.js.map +1 -0
  31. package/lib/test/Integration/Gateways/CI/upa_mitc/UpaFunctionalityTests.test.js +84 -0
  32. package/lib/test/Integration/Gateways/CI/upa_mitc/UpaFunctionalityTests.test.js.map +1 -0
  33. package/lib/test/Integration/Gateways/GpApiConnector/3DS2.test.js +15 -15
  34. package/lib/test/Integration/Gateways/GpApiConnector/3DSecure.test.js +5 -5
  35. package/lib/test/Integration/Gateways/GpApiConnector/VisaAft.test.d.ts +1 -0
  36. package/lib/test/Integration/Gateways/GpApiConnector/VisaAft.test.js +168 -0
  37. package/lib/test/Integration/Gateways/GpApiConnector/VisaAft.test.js.map +1 -0
  38. package/lib/test/Integration/Gateways/GpEcomConnector/Credit.test.js +4 -4
  39. package/lib/test/Integration/Gateways/PorticoConnector/Ecommerce.test.js +8 -8
  40. package/lib/test/Utils/CiTestingHarness.d.ts +21 -0
  41. package/lib/test/Utils/CiTestingHarness.js +65 -7
  42. package/lib/test/Utils/CiTestingHarness.js.map +1 -1
  43. package/package.json +63 -63
  44. package/appsec.properties +0 -8
  45. package/lib/test/Integration/Gateways/CI/GpApiCreditCardNotPresentTests.test.js +0 -90
  46. package/lib/test/Integration/Gateways/CI/GpApiCreditCardNotPresentTests.test.js.map +0 -1
  47. package/lib/test/Integration/Gateways/CI/PorticoCreditTests.test.js +0 -63
  48. package/lib/test/Integration/Gateways/CI/PorticoCreditTests.test.js.map +0 -1
  49. package/lib/test/Integration/Gateways/CI/UpaMicTests.test.js +0 -52
  50. package/lib/test/Integration/Gateways/CI/UpaMicTests.test.js.map +0 -1
  51. /package/lib/test/Integration/Gateways/CI/{GpApiCreditCardNotPresentTests.test.d.ts → gpapi/GpApiTransactionsTests.test.d.ts} +0 -0
  52. /package/lib/test/Integration/Gateways/CI/{PorticoCreditTests.test.d.ts → portico/PorticoCreditTests.test.d.ts} +0 -0
  53. /package/lib/test/Integration/Gateways/CI/{UpaMicTests.test.d.ts → upa_mitc/UpaFunctionalityTests.test.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GpApiTransactionsTests.test.js","sourceRoot":"","sources":["../../../../../../test/Integration/Gateways/CI/gpapi/GpApiTransactionsTests.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const src_1 = require("../../../../../src");
4
+ const CiTestingHarness_1 = require("../../../../Utils/CiTestingHarness");
5
+ const ciTestingHarness = new CiTestingHarness_1.CiTestingHarness("https://cert.api2.heartlandportico.com", CiTestingHarness_1.CacheMode.Locked, "PorticoCreditTests");
6
+ const card = new src_1.CreditCardData();
7
+ card.number = "4111111111111111";
8
+ card.expMonth = "12";
9
+ card.expYear = "2025";
10
+ card.cvn = "123";
11
+ const track = new src_1.CreditTrackData();
12
+ track.value =
13
+ "<E1050711%B4012001000000016^VI TEST CREDIT^251200000000000000000000?|LO04K0WFOmdkDz0um+GwUkILL8ZZOP6Zc4rCpZ9+kg2T3JBT4AEOilWTI|+++++++Dbbn04ekG|11;4012001000000016=25120000000000000000?|1u2F/aEhbdoPixyAPGyIDv3gBfF|+++++++Dbbn04ekG|00|||/wECAQECAoFGAgEH2wYcShV78RZwb3NAc2VjdXJlZXhjaGFuZ2UubmV0PX50qfj4dt0lu9oFBESQQNkpoxEVpCW3ZKmoIV3T93zphPS3XKP4+DiVlM8VIOOmAuRrpzxNi0TN/DWXWSjUC8m/PI2dACGdl/hVJ/imfqIs68wYDnp8j0ZfgvM26MlnDbTVRrSx68Nzj2QAgpBCHcaBb/FZm9T7pfMr2Mlh2YcAt6gGG1i2bJgiEJn8IiSDX5M2ybzqRT86PCbKle/XCTwFFe1X|>;";
14
+ track.encryptionData = src_1.EncryptionData.version1();
15
+ const commercialData = new src_1.CommercialData(src_1.TaxType.SalesTax, src_1.TransactionModifier.LevelIII);
16
+ commercialData.poNumber = "9876543210";
17
+ commercialData.taxAmount = "10";
18
+ commercialData.destinationPostalCode = "85212";
19
+ commercialData.destinationCountryCode = "USA";
20
+ commercialData.originPostalCode = "22193";
21
+ commercialData.summaryCommodityCode = "SSC";
22
+ commercialData.customerReferenceId = "UVATREF162";
23
+ commercialData.orderDate = ciTestingHarness.getCurrentTime();
24
+ commercialData.freightAmount = "10";
25
+ commercialData.dutyAmount = "10";
26
+ const ad = new src_1.AdditionalTaxDetails();
27
+ ad.taxAmount = "10";
28
+ ad.taxRate = "10";
29
+ commercialData.additionalTaxDetails = ad;
30
+ const commercialLineItem = new src_1.CommercialLineItem();
31
+ commercialLineItem.description = "PRODUCT 1 NOTES";
32
+ commercialLineItem.productCode = "PRDCD1";
33
+ commercialLineItem.unitCost = "0.01";
34
+ commercialLineItem.quantity = "1";
35
+ commercialLineItem.unitOfMeasure = "METER";
36
+ commercialLineItem.totalAmount = "10";
37
+ const discountDetails = new src_1.DiscountDetails();
38
+ discountDetails.discountAmount = "1";
39
+ commercialLineItem.discountDetails = discountDetails;
40
+ commercialData.addLineItems(commercialLineItem);
41
+ function configurePorticoService() {
42
+ const config = new src_1.PorticoConfig();
43
+ config.secretApiKey = "skapi_cert_MTeSAQAfG1UA9qQDrzl-kz4toXvARyieptFwSKP24w";
44
+ config.developerId = "002914";
45
+ config.versionNumber = "3026";
46
+ config.serviceUrl = ciTestingHarness.getTestingUrl();
47
+ src_1.ServicesContainer.configureService(config);
48
+ ciTestingHarness.reset();
49
+ }
50
+ test("creditSale", async () => {
51
+ ciTestingHarness.setFunction("Portico|Credit Transactions|CreditSale");
52
+ configurePorticoService();
53
+ const clientTxnID = ciTestingHarness.generateRandomId("creditSale");
54
+ const response = await card
55
+ .charge("15.5")
56
+ .withCurrency("USD")
57
+ .withClientTransactionId(clientTxnID)
58
+ .withAllowDuplicates(true)
59
+ .execute();
60
+ expect(response).toBeTruthy();
61
+ expect(response.responseCode).toBe("00");
62
+ expect(response.clientTransactionId).toBe(clientTxnID);
63
+ });
64
+ test("creditTxnEdit", async () => {
65
+ ciTestingHarness.setFunction("Portico|Credit Transactions|CreditTxnEdit - aka Gratuity");
66
+ configurePorticoService();
67
+ const clientTxnID = ciTestingHarness.generateRandomId("creditTxnEdit_charge");
68
+ const chargeResponse = await card
69
+ .charge("15")
70
+ .withCurrency("USD")
71
+ .withClientTransactionId(clientTxnID)
72
+ .withAllowDuplicates(true)
73
+ .execute();
74
+ expect(chargeResponse).toBeTruthy();
75
+ expect(chargeResponse.responseCode).toBe("00");
76
+ const editClientTxnID = ciTestingHarness.generateRandomId("creditTxnEdit_edit");
77
+ const editResponse = await chargeResponse
78
+ .edit()
79
+ .withCurrency("USD")
80
+ .withGratuity("2")
81
+ .withClientTransactionId(editClientTxnID)
82
+ .execute();
83
+ expect(editResponse).toBeTruthy();
84
+ expect(editResponse.responseCode).toBe("00");
85
+ expect(editResponse.clientTransactionId).toBe(editClientTxnID);
86
+ });
87
+ test("creditAdditionalAuth", async () => {
88
+ ciTestingHarness.setFunction("Portico|Credit Transactions|CreditAdditionalAuth");
89
+ configurePorticoService();
90
+ const clientTxnID = ciTestingHarness.generateRandomId("creditAdditionalAuth_auth");
91
+ const authResponse = await card
92
+ .authorize("10")
93
+ .withCurrency("USD")
94
+ .withClientTransactionId(clientTxnID)
95
+ .withAllowDuplicates(true)
96
+ .execute();
97
+ expect(authResponse).toBeTruthy();
98
+ expect(authResponse.responseCode).toBe("00");
99
+ expect(authResponse.clientTransactionId).toBe(clientTxnID);
100
+ const additionalAuthClientTxnID = ciTestingHarness.generateRandomId("creditAdditionalAuth_additional");
101
+ const additionalAuthResponse = await src_1.Transaction.fromId(authResponse.transactionId)
102
+ .additionalAuth("10")
103
+ .withCurrency("USD")
104
+ .withModifier(src_1.TransactionModifier.Incremental)
105
+ .withClientTransactionId(additionalAuthClientTxnID)
106
+ .execute();
107
+ expect(additionalAuthResponse).toBeTruthy();
108
+ expect(additionalAuthResponse.responseCode).toBe("00");
109
+ expect(additionalAuthResponse.clientTransactionId).toBe(additionalAuthClientTxnID);
110
+ });
111
+ //# sourceMappingURL=PorticoCreditTests.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PorticoCreditTests.test.js","sourceRoot":"","sources":["../../../../../../test/Integration/Gateways/CI/portico/PorticoCreditTests.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const src_1 = require("../../../../../src");
4
+ const DeviceService_1 = require("../../../../../src/Services/DeviceService");
5
+ const Enums_1 = require("../../../../../src/Terminals/Enums");
6
+ const CiTestingHarness_1 = require("../../../../Utils/CiTestingHarness");
7
+ const MITC_UPA_APP_ID = "6l8Xr23kHL9tGmAtXUvCEXKskvF7aLGq";
8
+ const MITC_UPA_APP_KEY = "z0ApiLDfXrKmrlNa";
9
+ const harnessCacheMode = CiTestingHarness_1.CacheMode.Locked;
10
+ const ciTestingHarness = new CiTestingHarness_1.CiTestingHarness("https://apis.sandbox.globalpay.com/ucp", harnessCacheMode, "UpaFunctionalityTests");
11
+ function getGpApiConfig() {
12
+ const accessTokenInfo = new src_1.AccessTokenInfo();
13
+ accessTokenInfo.transactionProcessingAccountName = "90916726";
14
+ const gatewayConfig = new src_1.GpApiConfig();
15
+ gatewayConfig.appId = MITC_UPA_APP_ID;
16
+ gatewayConfig.appKey = MITC_UPA_APP_KEY;
17
+ gatewayConfig.channel = src_1.Channel.CardPresent;
18
+ gatewayConfig.country = "US";
19
+ gatewayConfig.deviceCurrency = "USD";
20
+ gatewayConfig.accessTokenInfo = accessTokenInfo;
21
+ gatewayConfig.serviceUrl = ciTestingHarness.getTestingUrl();
22
+ return gatewayConfig;
23
+ }
24
+ function createDevice(testKey) {
25
+ const connectionConfig = new src_1.ConnectionConfig();
26
+ connectionConfig.gatewayConfig = getGpApiConfig();
27
+ connectionConfig.deviceType = src_1.DeviceType.UPA_DEVICE;
28
+ connectionConfig.connectionMode = Enums_1.ConnectionModes.MEET_IN_THE_CLOUD;
29
+ connectionConfig.timeout = 30000;
30
+ connectionConfig.requestIdProvider =
31
+ ciTestingHarness.createRequestIdProvider(testKey);
32
+ const device = DeviceService_1.DeviceService.create(connectionConfig);
33
+ device.ecrId = "12";
34
+ ciTestingHarness.reset();
35
+ return device;
36
+ }
37
+ function assertMitcUpaResponse(response) {
38
+ expect("SUCCESS").toContain(response.deviceResponseCode);
39
+ }
40
+ test("CreditSale", async () => {
41
+ ciTestingHarness.setFunction("UPA|Functionality|Credit Sale");
42
+ const device = createDevice("CreditSale");
43
+ const amount = ciTestingHarness.generateRandomAmount("CreditSale_amount", 1, 10, 2);
44
+ const response = await device
45
+ .sale(parseFloat(amount))
46
+ .withEcrId(13)
47
+ .execute();
48
+ expect(response).toBeTruthy();
49
+ assertMitcUpaResponse(response);
50
+ });
51
+ test("RefundAgainstCard", async () => {
52
+ ciTestingHarness.setFunction("UPA|Functionality|Refund against Card");
53
+ const device = createDevice("RefundAgainstCard");
54
+ const amount = ciTestingHarness.generateRandomAmount("RefundAgainstCard_amount", 1, 10, 2);
55
+ const response = await device
56
+ .refund(parseFloat(amount))
57
+ .withEcrId(13)
58
+ .execute();
59
+ expect(response).toBeTruthy();
60
+ assertMitcUpaResponse(response);
61
+ });
62
+ test("RefundAgainstTransactionId", async () => {
63
+ ciTestingHarness.setFunction("UPA|Functionality|Refund against Transaction ID");
64
+ const device = createDevice("RefundAgainstTransactionId");
65
+ const amount = ciTestingHarness.generateRandomAmount("RefundAgainstTransactionId_amount", 1, 10, 2);
66
+ const saleResponse = await device
67
+ .sale(parseFloat(amount))
68
+ .withEcrId(13)
69
+ .execute();
70
+ expect(saleResponse).toBeTruthy();
71
+ assertMitcUpaResponse(saleResponse);
72
+ // @ts-ignore
73
+ if (harnessCacheMode === CiTestingHarness_1.CacheMode.Unlocked) {
74
+ await new Promise((resolve) => setTimeout(resolve, 15000));
75
+ }
76
+ const refundResponse = await device
77
+ .refundById(parseFloat(amount))
78
+ .withEcrId(13)
79
+ .withTransactionId(saleResponse.transactionId)
80
+ .execute();
81
+ expect(refundResponse).toBeTruthy();
82
+ assertMitcUpaResponse(refundResponse);
83
+ });
84
+ //# sourceMappingURL=UpaFunctionalityTests.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UpaFunctionalityTests.test.js","sourceRoot":"","sources":["../../../../../../test/Integration/Gateways/CI/upa_mitc/UpaFunctionalityTests.test.ts"],"names":[],"mappings":"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"}
@@ -867,11 +867,11 @@ test("challenge required v2 - initiate with mobile sdk", async () => {
867
867
  mobileData.applicationReference = "f283b3ec-27da-42a1-acea-f3f70e75bbdc";
868
868
  mobileData.sdkInterface = src_1.SdkInterface.Both;
869
869
  mobileData.sdkUiTypes = [src_1.SdkUiType.Oob];
870
- mobileData.ephemeralPublicKey = `{
871
- "kty": "EC",
872
- "crv": "P-256",
873
- "x": "WWcpTjbOqiu_1aODllw5rYTq5oLXE_T0huCPjMIRbkI",
874
- "y": "Wz_7anIeadV8SJZUfr4drwjzuWoUbOsHp5GdRZBAAiw"
870
+ mobileData.ephemeralPublicKey = `{
871
+ "kty": "EC",
872
+ "crv": "P-256",
873
+ "x": "WWcpTjbOqiu_1aODllw5rYTq5oLXE_T0huCPjMIRbkI",
874
+ "y": "Wz_7anIeadV8SJZUfr4drwjzuWoUbOsHp5GdRZBAAiw"
875
875
  }`;
876
876
  mobileData.maximumTimeout = 50;
877
877
  mobileData.referenceNumber = "3DS_LOA_SDK_PPFU_020100_00007";
@@ -909,11 +909,11 @@ test("challenge required v2 - initiate with mobile data and browser data", async
909
909
  mobileData.applicationReference = "f283b3ec-27da-42a1-acea-f3f70e75bbdc";
910
910
  mobileData.sdkInterface = src_1.SdkInterface.Browser;
911
911
  mobileData.sdkUiTypes = [src_1.SdkUiType.HtmlOther];
912
- mobileData.ephemeralPublicKey = `{
913
- "kty": "EC",
914
- "crv": "P-256",
915
- "x": "WWcpTjbOqiu_1aODllw5rYTq5oLXE_T0huCPjMIRbkI",
916
- "y": "Wz_7anIeadV8SJZUfr4drwjzuWoUbOsHp5GdRZBAAiw"
912
+ mobileData.ephemeralPublicKey = `{
913
+ "kty": "EC",
914
+ "crv": "P-256",
915
+ "x": "WWcpTjbOqiu_1aODllw5rYTq5oLXE_T0huCPjMIRbkI",
916
+ "y": "Wz_7anIeadV8SJZUfr4drwjzuWoUbOsHp5GdRZBAAiw"
917
917
  }`;
918
918
  mobileData.maximumTimeout = 50;
919
919
  mobileData.referenceNumber = "3DS_LOA_SDK_PPFU_020100_00007";
@@ -946,11 +946,11 @@ test("challenge required v2 - initiate with mobile data and source browser", asy
946
946
  mobileData.applicationReference = "f283b3ec-27da-42a1-acea-f3f70e75bbdc";
947
947
  mobileData.sdkInterface = src_1.SdkInterface.Browser;
948
948
  mobileData.sdkUiTypes = [src_1.SdkUiType.HtmlOther];
949
- mobileData.ephemeralPublicKey = `{
950
- "kty": "EC",
951
- "crv": "P-256",
952
- "x": "WWcpTjbOqiu_1aODllw5rYTq5oLXE_T0huCPjMIRbkI",
953
- "y": "Wz_7anIeadV8SJZUfr4drwjzuWoUbOsHp5GdRZBAAiw"
949
+ mobileData.ephemeralPublicKey = `{
950
+ "kty": "EC",
951
+ "crv": "P-256",
952
+ "x": "WWcpTjbOqiu_1aODllw5rYTq5oLXE_T0huCPjMIRbkI",
953
+ "y": "Wz_7anIeadV8SJZUfr4drwjzuWoUbOsHp5GdRZBAAiw"
954
954
  }`;
955
955
  mobileData.maximumTimeout = 50;
956
956
  mobileData.referenceNumber = "3DS_LOA_SDK_PPFU_020100_00007";
@@ -527,11 +527,11 @@ test("frictionless full cycle - v2 - with mobile SDK", async () => {
527
527
  mobileData.applicationReference = "f283b3ec-27da-42a1-acea-f3f70e75bbdc";
528
528
  mobileData.sdkInterface = src_1.SdkInterface.Browser;
529
529
  mobileData.sdkUiTypes = [src_1.SdkUiType.HtmlOther];
530
- mobileData.ephemeralPublicKey = `{
531
- "kty": "EC",
532
- "crv": "P-256",
533
- "x": "WWcpTjbOqiu_1aODllw5rYTq5oLXE_T0huCPjMIRbkI",
534
- "y": "Wz_7anIeadV8SJZUfr4drwjzuWoUbOsHp5GdRZBAAiw"
530
+ mobileData.ephemeralPublicKey = `{
531
+ "kty": "EC",
532
+ "crv": "P-256",
533
+ "x": "WWcpTjbOqiu_1aODllw5rYTq5oLXE_T0huCPjMIRbkI",
534
+ "y": "Wz_7anIeadV8SJZUfr4drwjzuWoUbOsHp5GdRZBAAiw"
535
535
  }`;
536
536
  mobileData.maximumTimeout = 50;
537
537
  mobileData.referenceNumber = "3DS_LOA_SDK_PPFU_020100_00007";
@@ -0,0 +1,168 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const src_1 = require("../../../../src");
4
+ const BaseGpApiTestConfig_1 = require("../../../Data/BaseGpApiTestConfig");
5
+ const currency = "GBP";
6
+ const setupConfig = () => {
7
+ const config = BaseGpApiTestConfig_1.BaseGpApiTestConfig.gpApiSetupConfig(src_1.Channel.CardNotPresent);
8
+ config.country = "GB";
9
+ config.requestLogger = new src_1.SampleRequestLogger(new src_1.Logger("logs"));
10
+ return config;
11
+ };
12
+ const buildCard = () => {
13
+ const date = new Date();
14
+ const card = new src_1.CreditCardData();
15
+ card.number = "4263970000005262";
16
+ card.expMonth = (date.getMonth() + 1).toString().padStart(2, "0");
17
+ card.expYear = (date.getFullYear() + 1).toString();
18
+ card.cvn = "131";
19
+ card.cardHolderName = "James Mason";
20
+ return card;
21
+ };
22
+ const aftFields = [
23
+ "John Smith",
24
+ "10 High Street",
25
+ "Nottingham",
26
+ "GBR",
27
+ "02",
28
+ "123456789",
29
+ ];
30
+ beforeAll(() => {
31
+ src_1.ServicesContainer.configureService(setupConfig());
32
+ });
33
+ beforeEach(() => {
34
+ src_1.ServicesContainer.configureService(setupConfig());
35
+ });
36
+ afterAll(() => {
37
+ BaseGpApiTestConfig_1.BaseGpApiTestConfig.resetGpApiConfig();
38
+ });
39
+ // Story scenario (AH-2074):
40
+ // "Merchant in the UK does an authorize transaction with an AFT type.
41
+ // Given I want to process an AFT, When I send a request with the supplementary
42
+ // data, Then I get confirmation it was properly processed."
43
+ test("UK merchant - Visa AFT sale with supplementary data (story scenario)", async () => {
44
+ const response = await buildCard()
45
+ .charge(19.99)
46
+ .withCurrency(currency)
47
+ .withClientTransactionId("APM-20200417")
48
+ .withSupplementaryData("VISA_DIRECT_AFT", [
49
+ "Sender Name",
50
+ "Sender Address",
51
+ "Sender City",
52
+ "Sender Country",
53
+ "Account Number Type",
54
+ "Recipient Account Number",
55
+ ])
56
+ .withAllowDuplicates(true)
57
+ .execute();
58
+ expect(response).toBeTruthy();
59
+ expect(response.responseCode).toBe("SUCCESS");
60
+ expect(response.responseMessage).toBe(src_1.TransactionStatus.CAPTURED);
61
+ });
62
+ // GpApiVisaAftTest::testVisaAftSale
63
+ test("visa AFT sale", async () => {
64
+ const response = await buildCard()
65
+ .charge(42)
66
+ .withCurrency(currency)
67
+ .withSupplementaryData("VISA_DIRECT_AFT", aftFields)
68
+ .withAllowDuplicates(true)
69
+ .execute();
70
+ expect(response).toBeTruthy();
71
+ expect(response.responseCode).toBe("SUCCESS");
72
+ expect(response.responseMessage).toBe(src_1.TransactionStatus.CAPTURED);
73
+ });
74
+ // GpApiVisaAftTest::testVisaAftInvalidType
75
+ test("visa AFT sale with invalid supplementary data type", async () => {
76
+ const response = await buildCard()
77
+ .charge(42)
78
+ .withCurrency(currency)
79
+ .withSupplementaryData("INVALID_TYPE", aftFields)
80
+ .withAllowDuplicates(true)
81
+ .execute();
82
+ expect(response).toBeTruthy();
83
+ expect(response.responseCode).toBe("SUCCESS");
84
+ expect(response.responseMessage).toBe(src_1.TransactionStatus.CAPTURED);
85
+ });
86
+ // GpApiVisaAftTest::testVisaAftEmptyData
87
+ test("visa AFT sale with empty supplementary data fields", async () => {
88
+ const response = await buildCard()
89
+ .charge(42)
90
+ .withCurrency(currency)
91
+ .withSupplementaryData("VISA_DIRECT_AFT", [])
92
+ .withAllowDuplicates(true)
93
+ .execute();
94
+ expect(response).toBeTruthy();
95
+ expect(response.responseCode).toBe("SUCCESS");
96
+ expect(response.responseMessage).toBe(src_1.TransactionStatus.CAPTURED);
97
+ });
98
+ // GpApiVisaAftTest::testVisaAftNullSupplementaryData
99
+ test("visa AFT sale with null supplementary data fields", async () => {
100
+ const response = await buildCard()
101
+ .charge(42)
102
+ .withCurrency(currency)
103
+ .withSupplementaryData("VISA_DIRECT_AFT", null)
104
+ .withAllowDuplicates(true)
105
+ .execute();
106
+ expect(response).toBeTruthy();
107
+ expect(response.responseCode).toBe("SUCCESS");
108
+ expect(response.responseMessage).toBe(src_1.TransactionStatus.CAPTURED);
109
+ });
110
+ // GpApiVisaAftTest::testVisaAftMissingCurrency
111
+ test("visa AFT sale without currency throws MANDATORY_DATA_MISSING", async () => {
112
+ let caught = false;
113
+ try {
114
+ await buildCard()
115
+ .charge(42)
116
+ .withSupplementaryData("VISA_DIRECT_AFT", aftFields)
117
+ .withAllowDuplicates(true)
118
+ .execute();
119
+ }
120
+ catch (error) {
121
+ caught = true;
122
+ expect(error).toBeTruthy();
123
+ expect(error?.message.includes("MANDATORY_DATA_MISSING")).toBe(true);
124
+ expect(error?.message.includes("currency")).toBe(true);
125
+ }
126
+ expect(caught).toBe(true);
127
+ });
128
+ // GpApiVisaAftTest::testVisaAftInvalidCurrency
129
+ test("visa AFT sale with invalid currency throws SYSTEM_ERROR", async () => {
130
+ let caught = false;
131
+ try {
132
+ await buildCard()
133
+ .charge(42)
134
+ .withCurrency("XYZ")
135
+ .withSupplementaryData("VISA_DIRECT_AFT", aftFields)
136
+ .withAllowDuplicates(true)
137
+ .execute();
138
+ }
139
+ catch (error) {
140
+ caught = true;
141
+ expect(error).toBeTruthy();
142
+ expect(error?.message.includes("SYSTEM_ERROR")).toBe(true);
143
+ expect(error instanceof src_1.GatewayError).toBe(true);
144
+ }
145
+ expect(caught).toBe(true);
146
+ });
147
+ // GpApiVisaAftTest::testVisaAftZeroAmount
148
+ // Note: GP-API sandbox returns INVALID_REQUEST_DATA (not MANDATORY_DATA_MISSING)
149
+ test("visa AFT sale with zero amount throws an amount error", async () => {
150
+ let caught = false;
151
+ try {
152
+ await buildCard()
153
+ .charge(0)
154
+ .withCurrency(currency)
155
+ .withSupplementaryData("VISA_DIRECT_AFT", aftFields)
156
+ .withAllowDuplicates(true)
157
+ .execute();
158
+ }
159
+ catch (error) {
160
+ caught = true;
161
+ expect(error).toBeTruthy();
162
+ expect(error instanceof src_1.GatewayError).toBe(true);
163
+ expect(error?.message.includes("INVALID_REQUEST_DATA")).toBe(true);
164
+ expect(error?.message.toLowerCase().includes("amount")).toBe(true);
165
+ }
166
+ expect(caught).toBe(true);
167
+ });
168
+ //# sourceMappingURL=VisaAft.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VisaAft.test.js","sourceRoot":"","sources":["../../../../../test/Integration/Gateways/GpApiConnector/VisaAft.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)
@@ -10,12 +10,33 @@ export declare class CiTestingHarness {
10
10
  private testName;
11
11
  private idMap;
12
12
  private fixedTimestamp;
13
+ private language;
14
+ private category;
15
+ private subcategory;
16
+ private currentFunction;
13
17
  constructor(targetServiceUrl: string, cacheMode: CacheMode, testName: string);
18
+ /**
19
+ * Set the function being tested. The convention is "category|subcategory|function".
20
+ * This is parsed at runtime into the respective fields and appended to the proxy URL
21
+ * so the proxy validates them against its functionality list and records the test run.
22
+ */
23
+ setFunction(functionPath: string | null): void;
24
+ /**
25
+ * Override the default language tag ("node") sent to the proxy.
26
+ * This is rarely needed; it exists for cross-language test scenarios.
27
+ */
28
+ setLanguage(language: string): void;
29
+ /**
30
+ * Reset the harness fields so a stale function tag does not leak from one test
31
+ * method into the next. Call this after the test URL has been consumed.
32
+ */
33
+ reset(): void;
14
34
  getTestingUrl(): string;
15
35
  generateRandomId(key: string): string;
16
36
  generateRandomAmount(key: string, min: number, max: number, decimals: number): string;
17
37
  createRequestIdProvider(key: string): IRequestIdProvider;
18
38
  getCurrentTime(): Date;
39
+ private encodeUrlPathSegment;
19
40
  private loadExistingIds;
20
41
  private getJsonFilePath;
21
42
  private writeJsonFile;