globalpayments-api 1.4.8 → 1.4.9

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 (88) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/lib/src/Builders/PayFacBuilder.d.ts +96 -0
  3. package/lib/src/Builders/PayFacBuilder.js +184 -0
  4. package/lib/src/Entities/DocumentUploadData.d.ts +13 -0
  5. package/lib/src/Entities/DocumentUploadData.js +48 -0
  6. package/lib/src/Entities/Enums.d.ts +44 -1
  7. package/lib/src/Entities/Enums.js +119 -1
  8. package/lib/src/Entities/ProFac/AccountBalanceResponseData.d.ts +7 -0
  9. package/lib/src/Entities/ProFac/AccountBalanceResponseData.js +9 -0
  10. package/lib/src/Entities/ProFac/AccountPermissions.d.ts +15 -0
  11. package/lib/src/Entities/ProFac/AccountPermissions.js +9 -0
  12. package/lib/src/Entities/ProFac/BankAccountData.d.ts +10 -0
  13. package/lib/src/Entities/ProFac/BankAccountData.js +9 -0
  14. package/lib/src/Entities/ProFac/BankAccountOwnershipData.d.ts +8 -0
  15. package/lib/src/Entities/ProFac/BankAccountOwnershipData.js +11 -0
  16. package/lib/src/Entities/ProFac/BeneficialOwnerData.d.ts +6 -0
  17. package/lib/src/Entities/ProFac/BeneficialOwnerData.js +10 -0
  18. package/lib/src/Entities/ProFac/BeneficialOwnerDataResult.d.ts +5 -0
  19. package/lib/src/Entities/ProFac/BeneficialOwnerDataResult.js +9 -0
  20. package/lib/src/Entities/ProFac/BusinessData.d.ts +14 -0
  21. package/lib/src/Entities/ProFac/BusinessData.js +11 -0
  22. package/lib/src/Entities/ProFac/DeviceAttributeInfo.d.ts +4 -0
  23. package/lib/src/Entities/ProFac/DeviceAttributeInfo.js +9 -0
  24. package/lib/src/Entities/ProFac/DeviceData.d.ts +5 -0
  25. package/lib/src/Entities/ProFac/DeviceData.js +10 -0
  26. package/lib/src/Entities/ProFac/DeviceInfo.d.ts +6 -0
  27. package/lib/src/Entities/ProFac/DeviceInfo.js +9 -0
  28. package/lib/src/Entities/ProFac/FlashFundsPaymentCardData.d.ts +7 -0
  29. package/lib/src/Entities/ProFac/FlashFundsPaymentCardData.js +13 -0
  30. package/lib/src/Entities/ProFac/GrossBillingInformation.d.ts +8 -0
  31. package/lib/src/Entities/ProFac/GrossBillingInformation.js +9 -0
  32. package/lib/src/Entities/ProFac/OrderDevice.d.ts +18 -0
  33. package/lib/src/Entities/ProFac/OrderDevice.js +9 -0
  34. package/lib/src/Entities/ProFac/OwnersData.d.ts +12 -0
  35. package/lib/src/Entities/ProFac/OwnersData.js +11 -0
  36. package/lib/src/Entities/ProFac/PayFacResponseData.d.ts +55 -0
  37. package/lib/src/Entities/ProFac/PayFacResponseData.js +9 -0
  38. package/lib/src/Entities/ProFac/RenewAccountData.d.ts +10 -0
  39. package/lib/src/Entities/ProFac/RenewAccountData.js +11 -0
  40. package/lib/src/Entities/ProFac/SignificantOwnerData.d.ts +8 -0
  41. package/lib/src/Entities/ProFac/SignificantOwnerData.js +11 -0
  42. package/lib/src/Entities/ProFac/ThreatRiskData.d.ts +5 -0
  43. package/lib/src/Entities/ProFac/ThreatRiskData.js +9 -0
  44. package/lib/src/Entities/ProFac/UserPersonalData.d.ts +26 -0
  45. package/lib/src/Entities/ProFac/UserPersonalData.js +14 -0
  46. package/lib/src/Entities/SSORequestData.d.ts +5 -0
  47. package/lib/src/Entities/SSORequestData.js +9 -0
  48. package/lib/src/Entities/Transaction.d.ts +2 -0
  49. package/lib/src/Gateways/IPayFacProvider.d.ts +5 -0
  50. package/lib/src/Gateways/IPayFacProvider.js +2 -0
  51. package/lib/src/Gateways/PayPlanConnector.d.ts +1 -0
  52. package/lib/src/Gateways/PayPlanConnector.js +13 -1
  53. package/lib/src/Gateways/PorticoConnector.js +0 -1
  54. package/lib/src/Gateways/ProPayConnector.d.ts +41 -0
  55. package/lib/src/Gateways/ProPayConnector.js +698 -0
  56. package/lib/src/Gateways/XmlGateway.js +1 -0
  57. package/lib/src/PaymentMethods/CreditCardData.d.ts +1 -0
  58. package/lib/src/PaymentMethods/CreditCardData.js +6 -0
  59. package/lib/src/Services/PayFacService.d.ts +26 -0
  60. package/lib/src/Services/PayFacService.js +77 -0
  61. package/lib/src/ServicesConfig.d.ts +4 -0
  62. package/lib/src/ServicesContainer.d.ts +4 -1
  63. package/lib/src/ServicesContainer.js +16 -2
  64. package/lib/test/Integration/Gateways/PorticoConnector/CreditTest.js +1 -2
  65. package/lib/test/Integration/Gateways/ProPayConnector/Certifications/GetInformationCertificationTests.d.ts +1 -0
  66. package/lib/test/Integration/Gateways/ProPayConnector/Certifications/GetInformationCertificationTests.js +100 -0
  67. package/lib/test/Integration/Gateways/ProPayConnector/Certifications/ProPayAccountCertificationTests.d.ts +1 -0
  68. package/lib/test/Integration/Gateways/ProPayConnector/Certifications/ProPayAccountCertificationTests.js +352 -0
  69. package/lib/test/Integration/Gateways/ProPayConnector/Certifications/ProPayFundCertificationTests.d.ts +1 -0
  70. package/lib/test/Integration/Gateways/ProPayConnector/Certifications/ProPayFundCertificationTests.js +123 -0
  71. package/lib/test/Integration/Gateways/ProPayConnector/Certifications/ProPayInNetworkTransactionCertificationTests.d.ts +1 -0
  72. package/lib/test/Integration/Gateways/ProPayConnector/Certifications/ProPayInNetworkTransactionCertificationTests.js +146 -0
  73. package/lib/test/Integration/Gateways/ProPayConnector/Certifications/TestData/TestAccountData.d.ts +39 -0
  74. package/lib/test/Integration/Gateways/ProPayConnector/Certifications/TestData/TestAccountData.js +371 -0
  75. package/lib/test/Integration/Gateways/ProPayConnector/GetInformationTests.d.ts +1 -0
  76. package/lib/test/Integration/Gateways/ProPayConnector/GetInformationTests.js +100 -0
  77. package/lib/test/Integration/Gateways/ProPayConnector/ProPayAccountTests.d.ts +1 -0
  78. package/lib/test/Integration/Gateways/ProPayConnector/ProPayAccountTests.js +535 -0
  79. package/lib/test/Integration/Gateways/ProPayConnector/ProPayFundsTests.d.ts +1 -0
  80. package/lib/test/Integration/Gateways/ProPayConnector/ProPayFundsTests.js +124 -0
  81. package/lib/test/Integration/Gateways/ProPayConnector/ProPayInNetworkTransactionTests.d.ts +1 -0
  82. package/lib/test/Integration/Gateways/ProPayConnector/ProPayInNetworkTransactionTests.js +144 -0
  83. package/lib/test/Integration/Gateways/ProPayConnector/TestData/TestAccountData.d.ts +33 -0
  84. package/lib/test/Integration/Gateways/ProPayConnector/TestData/TestAccountData.js +268 -0
  85. package/lib/test/Integration/Gateways/ProPayConnector/TestData/TestFundsData.d.ts +4 -0
  86. package/lib/test/Integration/Gateways/ProPayConnector/TestData/TestFundsData.js +30 -0
  87. package/logger.txt +481 -2
  88. package/package.json +1 -1
@@ -0,0 +1,698 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.ProPayConnector = void 0;
19
+ var __1 = require("../");
20
+ var Enums_1 = require("../Entities/Enums");
21
+ var XmlGateway_1 = require("./XmlGateway");
22
+ var elementtree_1 = require("@azz/elementtree");
23
+ var BusinessData_1 = require("../Entities/ProFac/BusinessData");
24
+ var UserPersonalData_1 = require("../Entities/ProFac/UserPersonalData");
25
+ var AccountPermissions_1 = require("../Entities/ProFac/AccountPermissions");
26
+ var GrossBillingInformation_1 = require("../Entities/ProFac/GrossBillingInformation");
27
+ var Entities_1 = require("../Entities");
28
+ var PayFacResponseData_1 = require("../Entities/ProFac/PayFacResponseData");
29
+ var BankAccountData_1 = require("../Entities/ProFac/BankAccountData");
30
+ var AccountBalanceResponseData_1 = require("../Entities/ProFac/AccountBalanceResponseData");
31
+ var BeneficialOwnerDataResult_1 = require("../Entities/ProFac/BeneficialOwnerDataResult");
32
+ var fs = require("fs");
33
+ var ProPayConnector = /** @class */ (function (_super) {
34
+ __extends(ProPayConnector, _super);
35
+ function ProPayConnector() {
36
+ return _super !== null && _super.apply(this, arguments) || this;
37
+ }
38
+ ProPayConnector.prototype.processPayFac = function (builder) {
39
+ var _this = this;
40
+ var transaction = elementtree_1.Element("XMLRequest");
41
+ // Credentials
42
+ elementtree_1.SubElement(transaction, "certStr").append(elementtree_1.CData(this.certStr.toString()));
43
+ elementtree_1.SubElement(transaction, "termid").append(elementtree_1.CData(this.termID));
44
+ elementtree_1.SubElement(transaction, "class").append(elementtree_1.CData("partner"));
45
+ //Transaction
46
+ var xmlTrans = elementtree_1.SubElement(transaction, "XMLTrans");
47
+ elementtree_1.SubElement(xmlTrans, "transType").append(elementtree_1.CData(this.mapRequestType(builder)));
48
+ this.HydrateAccountDetails(xmlTrans, builder);
49
+ return this.doTransaction(new elementtree_1.ElementTree(transaction).write()).then(function (response) { return _this.mapResponse(builder, response); });
50
+ };
51
+ ProPayConnector.prototype.HydrateAccountDetails = function (xmlTrans, builder) {
52
+ this.UpdateGatewaySettings(builder);
53
+ // common fields
54
+ this.hydrateCommonFields(xmlTrans, builder);
55
+ if (builder.password != null) {
56
+ elementtree_1.SubElement(xmlTrans, "password").append(elementtree_1.CData(builder.password));
57
+ }
58
+ if (builder.accountPermissions != null) {
59
+ this.HydrateAccountPermissions(xmlTrans, builder.accountPermissions);
60
+ }
61
+ if (builder.userPersonalData != null) {
62
+ this.HydrateUserPersonalData(xmlTrans, builder.userPersonalData);
63
+ }
64
+ if (builder.businessData != null) {
65
+ this.HydrateBusinessData(xmlTrans, builder.businessData);
66
+ }
67
+ this.HydrateBankDetails(xmlTrans, builder);
68
+ if (builder.mailingAddressInformation != null || builder.mailingAddressInformation != undefined) {
69
+ this.HydrateMailAddress(xmlTrans, builder.mailingAddressInformation);
70
+ }
71
+ if (builder.threatRiskData != null) {
72
+ this.HydrateThreatRiskData(xmlTrans, builder.threatRiskData);
73
+ }
74
+ if (builder.significantOwnerData != null) {
75
+ this.HydrateSignificantOwnerData(xmlTrans, builder.significantOwnerData);
76
+ }
77
+ if (builder.timeZone && builder.timeZone.trim()) {
78
+ elementtree_1.SubElement(xmlTrans, "TimeZone").append(elementtree_1.CData(builder.timeZone));
79
+ }
80
+ if (builder.deviceData != null) {
81
+ this.HydrateDeviceData(xmlTrans, builder.deviceData);
82
+ }
83
+ if (builder.beneficialOwnerData != null || builder.beneficialOwnerData != undefined) {
84
+ this.HydrateBeneficialOwnerData(xmlTrans, builder.beneficialOwnerData);
85
+ }
86
+ if (builder.grossBillingInformation != null) {
87
+ this.HydrateGrossBillingData(xmlTrans, builder.grossBillingInformation);
88
+ }
89
+ if (builder.renewalAccountData != null) {
90
+ this.HydrateAccountRenewDetails(xmlTrans, builder.renewalAccountData);
91
+ }
92
+ if (builder.FlashFundsPaymentCardData != null) {
93
+ this.HydrateFlashFundsPaymentCardData(xmlTrans, builder.FlashFundsPaymentCardData);
94
+ }
95
+ if (builder.documentUploadData != null) {
96
+ this.HydrateDocumentUploadData(xmlTrans, builder.TransactionType, builder.documentUploadData);
97
+ }
98
+ if (builder.sSORequestData != null) {
99
+ this.HydrateSSORequestData(xmlTrans, builder.sSORequestData);
100
+ }
101
+ if (builder.orderDevice != null) {
102
+ this.HydrateOrderDeviceData(xmlTrans, builder.orderDevice);
103
+ }
104
+ this.HydrateBankAccountOwnershipData(xmlTrans, builder);
105
+ };
106
+ ProPayConnector.prototype.hydrateCommonFields = function (xmlTrans, builder) {
107
+ var elementMap = {
108
+ 'accountNum': builder.accountNumber ? builder.accountNumber : '',
109
+ 'amount': builder.amount ? builder.amount : '',
110
+ 'recAccntNum': builder.receivingAccountNumber ? builder.receivingAccountNumber : '',
111
+ 'allowPending': builder.allowPending == true ? 'Y' : '',
112
+ 'ccAmount': builder.cCAmount ? builder.cCAmount : '',
113
+ 'requireCCRefund': builder.requireCCRefund == true ? 'Y' : builder.requireCCRefund == false ? 'N' : '',
114
+ 'transNum': builder.transNum ? builder.transNum : '',
115
+ 'gatewayTransactionId': builder.gatewayTransactionId ? builder.gatewayTransactionId : '',
116
+ 'globaltransId': builder.globaltransId ? builder.globaltransId : '',
117
+ 'globalTransSource': builder.globalTransSource ? builder.globalTransSource : '',
118
+ 'cardBrandTransactionId': builder.cardBrandTransactionId ? builder.cardBrandTransactionId : '',
119
+ };
120
+ this.createNewElements(xmlTrans, elementMap);
121
+ };
122
+ ProPayConnector.prototype.HydrateBankAccountOwnershipData = function (xmlTrans, builder) {
123
+ var _a, _b;
124
+ if (builder.primaryBankAccountOwner != null || builder.secondaryBankAccountOwner != null) {
125
+ var ownersDataTag = elementtree_1.SubElement(xmlTrans, "BankAccountOwnerData");
126
+ if (builder.primaryBankAccountOwner != null) {
127
+ var primaryOwnerTag = elementtree_1.SubElement(ownersDataTag, "PrimaryBankAccountOwner");
128
+ elementtree_1.SubElement(primaryOwnerTag, "FirstName").text = builder.primaryBankAccountOwner.firstName;
129
+ elementtree_1.SubElement(primaryOwnerTag, "LastName").text = builder.primaryBankAccountOwner.lastName;
130
+ elementtree_1.SubElement(primaryOwnerTag, "Address1").text = (_a = builder.primaryBankAccountOwner.ownerAddress) === null || _a === void 0 ? void 0 : _a.streetAddress1;
131
+ elementtree_1.SubElement(primaryOwnerTag, "Address2").text = builder.primaryBankAccountOwner.ownerAddress.streetAddress2;
132
+ elementtree_1.SubElement(primaryOwnerTag, "Address3").text = builder.primaryBankAccountOwner.ownerAddress.streetAddress3;
133
+ elementtree_1.SubElement(primaryOwnerTag, "City").text = builder.primaryBankAccountOwner.ownerAddress.city;
134
+ elementtree_1.SubElement(primaryOwnerTag, "StateProvince").text = builder.primaryBankAccountOwner.ownerAddress.state;
135
+ elementtree_1.SubElement(primaryOwnerTag, "PostalCode").text = builder.primaryBankAccountOwner.ownerAddress.postalCode;
136
+ elementtree_1.SubElement(primaryOwnerTag, "Country").text = builder.primaryBankAccountOwner.ownerAddress.country;
137
+ elementtree_1.SubElement(primaryOwnerTag, "Phone").text = builder.primaryBankAccountOwner.phoneNumber;
138
+ }
139
+ if (builder.secondaryBankAccountOwner != null) {
140
+ var secondaryOwnerTag = elementtree_1.SubElement(ownersDataTag, "SecondaryBankAccountOwner");
141
+ elementtree_1.SubElement(secondaryOwnerTag, "FirstName").text = builder.secondaryBankAccountOwner.firstName;
142
+ elementtree_1.SubElement(secondaryOwnerTag, "LastName").text = builder.secondaryBankAccountOwner.lastName;
143
+ elementtree_1.SubElement(secondaryOwnerTag, "Address1").text = (_b = builder.secondaryBankAccountOwner.ownerAddress) === null || _b === void 0 ? void 0 : _b.streetAddress1;
144
+ elementtree_1.SubElement(secondaryOwnerTag, "Address2").text = builder.secondaryBankAccountOwner.ownerAddress.streetAddress2;
145
+ elementtree_1.SubElement(secondaryOwnerTag, "Address3").text = builder.secondaryBankAccountOwner.ownerAddress.streetAddress3;
146
+ elementtree_1.SubElement(secondaryOwnerTag, "City").text = builder.secondaryBankAccountOwner.ownerAddress.city;
147
+ elementtree_1.SubElement(secondaryOwnerTag, "StateProvince").text = builder.secondaryBankAccountOwner.ownerAddress.state;
148
+ elementtree_1.SubElement(secondaryOwnerTag, "PostalCode").text = builder.secondaryBankAccountOwner.ownerAddress.postalCode;
149
+ elementtree_1.SubElement(secondaryOwnerTag, "Country").text = builder.secondaryBankAccountOwner.ownerAddress.country;
150
+ elementtree_1.SubElement(secondaryOwnerTag, "Phone").text = builder.secondaryBankAccountOwner.phoneNumber;
151
+ }
152
+ }
153
+ };
154
+ ProPayConnector.prototype.HydrateMailAddress = function (xmlTrans, mailingAddressInformation) {
155
+ elementtree_1.SubElement(xmlTrans, "mailAddr").append(elementtree_1.CData(mailingAddressInformation === null || mailingAddressInformation === void 0 ? void 0 : mailingAddressInformation.streetAddress1));
156
+ elementtree_1.SubElement(xmlTrans, "mailApt").append(elementtree_1.CData(mailingAddressInformation === null || mailingAddressInformation === void 0 ? void 0 : mailingAddressInformation.streetAddress2));
157
+ elementtree_1.SubElement(xmlTrans, "mailAddr3").append(elementtree_1.CData(mailingAddressInformation === null || mailingAddressInformation === void 0 ? void 0 : mailingAddressInformation.streetAddress3));
158
+ elementtree_1.SubElement(xmlTrans, "mailCity").append(elementtree_1.CData(mailingAddressInformation === null || mailingAddressInformation === void 0 ? void 0 : mailingAddressInformation.city));
159
+ elementtree_1.SubElement(xmlTrans, "mailCountry").append(elementtree_1.CData(mailingAddressInformation === null || mailingAddressInformation === void 0 ? void 0 : mailingAddressInformation.country));
160
+ elementtree_1.SubElement(xmlTrans, "mailState").append(elementtree_1.CData(mailingAddressInformation === null || mailingAddressInformation === void 0 ? void 0 : mailingAddressInformation.state));
161
+ elementtree_1.SubElement(xmlTrans, "mailZip").append(elementtree_1.CData(mailingAddressInformation === null || mailingAddressInformation === void 0 ? void 0 : mailingAddressInformation.postalCode));
162
+ };
163
+ ProPayConnector.prototype.HydrateBankDetails = function (xmlTrans, builder) {
164
+ if (builder.creditCardInformation != null) {
165
+ elementtree_1.SubElement(xmlTrans, "NameOnCard").append(elementtree_1.CData(builder.creditCardInformation.cardHolderName));
166
+ elementtree_1.SubElement(xmlTrans, "ccNum").append(elementtree_1.CData(builder.creditCardInformation.number));
167
+ elementtree_1.SubElement(xmlTrans, "expDate").append(elementtree_1.CData(builder.creditCardInformation.getShortExpiry()));
168
+ }
169
+ if (builder.aCHInformation != null) {
170
+ elementtree_1.SubElement(xmlTrans, "PaymentBankAccountNumber").append(elementtree_1.CData(builder.aCHInformation.accountNumber));
171
+ elementtree_1.SubElement(xmlTrans, "PaymentBankRoutingNumber").append(elementtree_1.CData(builder.aCHInformation.routingNumber));
172
+ elementtree_1.SubElement(xmlTrans, "PaymentBankAccountType").append(elementtree_1.CData(builder.aCHInformation.accountType));
173
+ }
174
+ if (builder.bankAccountData != null) {
175
+ elementtree_1.SubElement(xmlTrans, "AccountCountryCode").append(elementtree_1.CData(builder.bankAccountData.accountCountryCode));
176
+ elementtree_1.SubElement(xmlTrans, "accountName").append(elementtree_1.CData(builder.bankAccountData.accountName));
177
+ elementtree_1.SubElement(xmlTrans, "AccountNumber").append(elementtree_1.CData(builder.bankAccountData.accountNumber));
178
+ elementtree_1.SubElement(xmlTrans, "AccountOwnershipType").append(elementtree_1.CData(builder.bankAccountData.accountOwnershipType));
179
+ elementtree_1.SubElement(xmlTrans, "AccountType").append(elementtree_1.CData(builder.bankAccountData.accountType));
180
+ elementtree_1.SubElement(xmlTrans, "BankName").append(elementtree_1.CData(builder.bankAccountData.bankName));
181
+ elementtree_1.SubElement(xmlTrans, "RoutingNumber").append(elementtree_1.CData(builder.bankAccountData.routingNumber));
182
+ }
183
+ if (builder.secondaryBankInformation != null) {
184
+ elementtree_1.SubElement(xmlTrans, "SecondaryAccountCountryCode").append(elementtree_1.CData(builder.secondaryBankInformation.accountCountryCode));
185
+ elementtree_1.SubElement(xmlTrans, "SecondaryAccountName").append(elementtree_1.CData(builder.secondaryBankInformation.accountName));
186
+ elementtree_1.SubElement(xmlTrans, "SecondaryAccountNumber").append(elementtree_1.CData(builder.secondaryBankInformation.accountNumber));
187
+ elementtree_1.SubElement(xmlTrans, "SecondaryAccountOwnershipType").append(elementtree_1.CData(builder.secondaryBankInformation.accountOwnershipType));
188
+ elementtree_1.SubElement(xmlTrans, "SecondaryAccountType").append(elementtree_1.CData(builder.secondaryBankInformation.accountType));
189
+ elementtree_1.SubElement(xmlTrans, "SecondaryBankName").append(elementtree_1.CData(builder.secondaryBankInformation.bankName));
190
+ elementtree_1.SubElement(xmlTrans, "SecondaryRoutingNumber").append(elementtree_1.CData(builder.secondaryBankInformation.routingNumber));
191
+ }
192
+ };
193
+ ProPayConnector.prototype.HydrateBusinessData = function (xmlTrans, businessData) {
194
+ var _a;
195
+ elementtree_1.SubElement(xmlTrans, "BusinessLegalName").append(elementtree_1.CData(businessData.businessLegalName));
196
+ elementtree_1.SubElement(xmlTrans, "DoingBusinessAs").append(elementtree_1.CData(businessData.doingBusinessAs));
197
+ elementtree_1.SubElement(xmlTrans, "EIN").append(elementtree_1.CData(businessData.employerIdentificationNumber));
198
+ elementtree_1.SubElement(xmlTrans, "MCCCode").append(elementtree_1.CData(businessData.merchantCategoryCode));
199
+ elementtree_1.SubElement(xmlTrans, "WebsiteURL").append(elementtree_1.CData(businessData.websiteURL));
200
+ elementtree_1.SubElement(xmlTrans, "BusinessDesc").append(elementtree_1.CData(businessData.businessDescription));
201
+ elementtree_1.SubElement(xmlTrans, "MonthlyBankCardVolume").append(elementtree_1.CData(businessData.monthlyBankCardVolume));
202
+ elementtree_1.SubElement(xmlTrans, "AverageTicket").append(elementtree_1.CData(businessData.averageTicket));
203
+ elementtree_1.SubElement(xmlTrans, "HighestTicket").append(elementtree_1.CData(businessData.highestTicket));
204
+ elementtree_1.SubElement(xmlTrans, "BusinessAddress").append(elementtree_1.CData((_a = businessData.businessAddress) === null || _a === void 0 ? void 0 : _a.streetAddress1));
205
+ elementtree_1.SubElement(xmlTrans, "BusinessAddress2").append(elementtree_1.CData(businessData.businessAddress.streetAddress2));
206
+ elementtree_1.SubElement(xmlTrans, "BusinessCity").append(elementtree_1.CData(businessData.businessAddress.city));
207
+ elementtree_1.SubElement(xmlTrans, "BusinessCountry").append(elementtree_1.CData(businessData.businessAddress.country));
208
+ elementtree_1.SubElement(xmlTrans, "BusinessState").append(elementtree_1.CData(businessData.businessAddress.state));
209
+ elementtree_1.SubElement(xmlTrans, "BusinessZip").append(elementtree_1.CData(businessData.businessAddress.postalCode));
210
+ };
211
+ ProPayConnector.prototype.HydrateUserPersonalData = function (xmlTrans, userPersonalData) {
212
+ elementtree_1.SubElement(xmlTrans, "firstName").append(elementtree_1.CData(userPersonalData.firstName));
213
+ elementtree_1.SubElement(xmlTrans, "mInitial").append(elementtree_1.CData(userPersonalData.middleInitial));
214
+ elementtree_1.SubElement(xmlTrans, "lastName").append(elementtree_1.CData(userPersonalData.lastName));
215
+ elementtree_1.SubElement(xmlTrans, "dob").append(elementtree_1.CData(userPersonalData.dateOfBirth));
216
+ elementtree_1.SubElement(xmlTrans, "ssn").append(elementtree_1.CData(userPersonalData.sSN));
217
+ if (userPersonalData.sourceEmail != null)
218
+ elementtree_1.SubElement(xmlTrans, "sourceEmail").append(elementtree_1.CData(userPersonalData.sourceEmail));
219
+ elementtree_1.SubElement(xmlTrans, "dayPhone").append(elementtree_1.CData(userPersonalData.dayPhone));
220
+ elementtree_1.SubElement(xmlTrans, "evenPhone").append(elementtree_1.CData(userPersonalData.eveningPhone));
221
+ elementtree_1.SubElement(xmlTrans, "NotificationEmail").append(elementtree_1.CData(userPersonalData.notificationEmail));
222
+ elementtree_1.SubElement(xmlTrans, "currencyCode").append(elementtree_1.CData(userPersonalData.currencyCode));
223
+ elementtree_1.SubElement(xmlTrans, "tier").append(elementtree_1.CData(userPersonalData.tier));
224
+ if (userPersonalData.externalID != null)
225
+ elementtree_1.SubElement(xmlTrans, "externalId").append(elementtree_1.CData(userPersonalData.externalID));
226
+ if (userPersonalData.userAddress != null)
227
+ elementtree_1.SubElement(xmlTrans, "addr").append(elementtree_1.CData(userPersonalData.userAddress.streetAddress1));
228
+ if (userPersonalData.userAddress != null)
229
+ elementtree_1.SubElement(xmlTrans, "aptNum").append(elementtree_1.CData(userPersonalData.userAddress.streetAddress2));
230
+ if (userPersonalData.userAddress != null)
231
+ elementtree_1.SubElement(xmlTrans, "addr3").append(elementtree_1.CData(userPersonalData.userAddress.streetAddress3));
232
+ if (userPersonalData.userAddress != null)
233
+ elementtree_1.SubElement(xmlTrans, "city").append(elementtree_1.CData(userPersonalData.userAddress.city));
234
+ if (userPersonalData.userAddress != null)
235
+ elementtree_1.SubElement(xmlTrans, "state").append(elementtree_1.CData(userPersonalData.userAddress.state));
236
+ if (userPersonalData.userAddress != null)
237
+ elementtree_1.SubElement(xmlTrans, "zip").append(elementtree_1.CData(userPersonalData.userAddress.postalCode));
238
+ if (userPersonalData.userAddress != null)
239
+ elementtree_1.SubElement(xmlTrans, "country").append(elementtree_1.CData(userPersonalData.userAddress.country));
240
+ elementtree_1.SubElement(xmlTrans, "IpSignup").append(elementtree_1.CData(userPersonalData.ipSignup));
241
+ elementtree_1.SubElement(xmlTrans, "USCitizen").append(elementtree_1.CData(userPersonalData.uSCitizen == true ? 'true' : userPersonalData.uSCitizen == false ? 'false' : ''));
242
+ elementtree_1.SubElement(xmlTrans, "bOAttestation").append(elementtree_1.CData(userPersonalData.bOAttestation == true ? 'true' : userPersonalData.bOAttestation == false ? 'false' : ''));
243
+ elementtree_1.SubElement(xmlTrans, "TermsAcceptanceIP").append(elementtree_1.CData(userPersonalData.termsAcceptanceIP));
244
+ elementtree_1.SubElement(xmlTrans, "TermsAcceptanceTimeStamp").append(elementtree_1.CData(userPersonalData.termsAcceptanceTimeStamp));
245
+ elementtree_1.SubElement(xmlTrans, "TermsVersion").append(elementtree_1.CData(userPersonalData.termsVersion == null ? '' : userPersonalData.termsVersion.toString()));
246
+ };
247
+ ProPayConnector.prototype.HydrateThreatRiskData = function (xmlTrans, threatRiskData) {
248
+ elementtree_1.SubElement(xmlTrans, "MerchantSourceip").append(elementtree_1.CData(threatRiskData === null || threatRiskData === void 0 ? void 0 : threatRiskData.merchantSourceIP));
249
+ elementtree_1.SubElement(xmlTrans, "ThreatMetrixPolicy").append(elementtree_1.CData(threatRiskData === null || threatRiskData === void 0 ? void 0 : threatRiskData.threatMetrixPolicy));
250
+ elementtree_1.SubElement(xmlTrans, "ThreatMetrixSessionid").append(elementtree_1.CData(threatRiskData === null || threatRiskData === void 0 ? void 0 : threatRiskData.threatMetrixSessionID));
251
+ };
252
+ ProPayConnector.prototype.HydrateSignificantOwnerData = function (xmlTrans, significantOwnerData) {
253
+ var _a;
254
+ elementtree_1.SubElement(xmlTrans, "AuthorizedSignerFirstName").append(elementtree_1.CData(significantOwnerData === null || significantOwnerData === void 0 ? void 0 : significantOwnerData.authorizedSignerFirstName));
255
+ elementtree_1.SubElement(xmlTrans, "AuthorizedSignerLastName").append(elementtree_1.CData(significantOwnerData === null || significantOwnerData === void 0 ? void 0 : significantOwnerData.authorizedSignerLastName));
256
+ elementtree_1.SubElement(xmlTrans, "AuthorizedSignerTitle").append(elementtree_1.CData(significantOwnerData === null || significantOwnerData === void 0 ? void 0 : significantOwnerData.authorizedSignerTitle));
257
+ elementtree_1.SubElement(xmlTrans, "SignificantOwnerFirstName").append(elementtree_1.CData(significantOwnerData === null || significantOwnerData === void 0 ? void 0 : significantOwnerData.significantOwner.firstName));
258
+ elementtree_1.SubElement(xmlTrans, "SignificantOwnerLastName").append(elementtree_1.CData(significantOwnerData === null || significantOwnerData === void 0 ? void 0 : significantOwnerData.significantOwner.lastName));
259
+ elementtree_1.SubElement(xmlTrans, "SignificantOwnerSSN").append(elementtree_1.CData(significantOwnerData === null || significantOwnerData === void 0 ? void 0 : significantOwnerData.significantOwner.sSN));
260
+ elementtree_1.SubElement(xmlTrans, "SignificantOwnerDateOfBirth").append(elementtree_1.CData(significantOwnerData === null || significantOwnerData === void 0 ? void 0 : significantOwnerData.significantOwner.DateOfBirth));
261
+ elementtree_1.SubElement(xmlTrans, "SignificantOwnerStreetAddress").append(elementtree_1.CData((_a = significantOwnerData === null || significantOwnerData === void 0 ? void 0 : significantOwnerData.significantOwner.ownerAddress) === null || _a === void 0 ? void 0 : _a.streetAddress1));
262
+ elementtree_1.SubElement(xmlTrans, "SignificantOwnerCityName").append(elementtree_1.CData(significantOwnerData === null || significantOwnerData === void 0 ? void 0 : significantOwnerData.significantOwner.ownerAddress.city));
263
+ elementtree_1.SubElement(xmlTrans, "SignificantOwnerRegionCode").append(elementtree_1.CData(significantOwnerData === null || significantOwnerData === void 0 ? void 0 : significantOwnerData.significantOwner.ownerAddress.state));
264
+ elementtree_1.SubElement(xmlTrans, "SignificantOwnerPostalCode").append(elementtree_1.CData(significantOwnerData === null || significantOwnerData === void 0 ? void 0 : significantOwnerData.significantOwner.ownerAddress.postalCode));
265
+ elementtree_1.SubElement(xmlTrans, "SignificantOwnerCountryCode").append(elementtree_1.CData(significantOwnerData === null || significantOwnerData === void 0 ? void 0 : significantOwnerData.significantOwner.ownerAddress.country));
266
+ elementtree_1.SubElement(xmlTrans, "SignificantOwnerTitle").append(elementtree_1.CData(significantOwnerData === null || significantOwnerData === void 0 ? void 0 : significantOwnerData.significantOwner.title));
267
+ elementtree_1.SubElement(xmlTrans, "SignificantOwnerPercentage").append(elementtree_1.CData(significantOwnerData === null || significantOwnerData === void 0 ? void 0 : significantOwnerData.significantOwner.percentage));
268
+ };
269
+ ProPayConnector.prototype.HydrateAccountPermissions = function (xmlTrans, accountPermissions) {
270
+ if (accountPermissions.aCHIn != null)
271
+ elementtree_1.SubElement(xmlTrans, "ACHIn").append(elementtree_1.CData(accountPermissions.aCHIn == true ? "Y" : "N"));
272
+ if (accountPermissions.aCHOut != null)
273
+ elementtree_1.SubElement(xmlTrans, "ACHOut").append(elementtree_1.CData(accountPermissions.aCHOut == true ? "Y" : "N"));
274
+ if (accountPermissions.cCProcessing != null)
275
+ elementtree_1.SubElement(xmlTrans, "CCProcessing").append(elementtree_1.CData(accountPermissions.cCProcessing == true ? "Y" : "N"));
276
+ if (accountPermissions.proPayIn != null)
277
+ elementtree_1.SubElement(xmlTrans, "ProPayIn").append(elementtree_1.CData(accountPermissions.proPayIn == true ? "Y" : "N"));
278
+ if (accountPermissions.proPayOut != null)
279
+ elementtree_1.SubElement(xmlTrans, "ProPayOut").append(elementtree_1.CData(accountPermissions.proPayOut == true ? "Y" : "N"));
280
+ if (accountPermissions.creditCardMonthLimit != null)
281
+ elementtree_1.SubElement(xmlTrans, "CreditCardMonthLimit").append(elementtree_1.CData(accountPermissions.creditCardMonthLimit));
282
+ if (accountPermissions.creditCardTransactionLimit != null)
283
+ elementtree_1.SubElement(xmlTrans, "CreditCardTransactionLimit").append(elementtree_1.CData(accountPermissions.creditCardTransactionLimit));
284
+ if (accountPermissions.merchantOverallStatus != null)
285
+ elementtree_1.SubElement(xmlTrans, "MerchantOverallStatus").append(elementtree_1.CData(String(accountPermissions.merchantOverallStatus)));
286
+ if (accountPermissions.softLimitEnabled != null)
287
+ elementtree_1.SubElement(xmlTrans, "SoftLimitEnabled", accountPermissions.softLimitEnabled == true ? "Y" : "N");
288
+ if (accountPermissions.aCHPaymentSoftLimitEnabled != null)
289
+ elementtree_1.SubElement(xmlTrans, "AchPaymentSoftLimitEnabled", accountPermissions.aCHPaymentSoftLimitEnabled == true ? "Y" : "N");
290
+ if (accountPermissions.softLimitACHOffPercent != null)
291
+ elementtree_1.SubElement(xmlTrans, "SoftLimitAchOffPercent", accountPermissions.softLimitACHOffPercent);
292
+ if (accountPermissions.aCHPaymentACHOffPercent != null)
293
+ elementtree_1.SubElement(xmlTrans, "AchPaymentAchOffPercent", accountPermissions.aCHPaymentACHOffPercent);
294
+ };
295
+ ProPayConnector.prototype.HydrateDeviceData = function (xmlTrans, deviceData) {
296
+ var devices = elementtree_1.SubElement(xmlTrans, "Devices");
297
+ if (deviceData.devices.length > 0) {
298
+ deviceData.devices.forEach(function (deviceObj) {
299
+ var device = elementtree_1.SubElement(devices, "Device");
300
+ elementtree_1.SubElement(device, "Name").append(elementtree_1.CData(deviceObj.name));
301
+ elementtree_1.SubElement(device, "Quantity").append(elementtree_1.CData(deviceObj.quantity == null ? "0" : String(deviceObj.quantity)));
302
+ if (deviceObj.attributes != null) {
303
+ if (deviceObj.attributes.length > 0) {
304
+ var attributes = elementtree_1.SubElement(device, "Attributes");
305
+ deviceObj.attributes.forEach(function (attributeInfo) {
306
+ var item = elementtree_1.SubElement(attributes, "Item");
307
+ item.set("Name", attributeInfo.name);
308
+ item.set("Value", attributeInfo.value);
309
+ });
310
+ }
311
+ }
312
+ });
313
+ }
314
+ };
315
+ ProPayConnector.prototype.HydrateBeneficialOwnerData = function (xmlTrans, beneficialOwnerData) {
316
+ var ownerDetails = elementtree_1.SubElement(xmlTrans, "BeneficialOwnerData");
317
+ elementtree_1.SubElement(ownerDetails, "OwnerCount").text = beneficialOwnerData === null || beneficialOwnerData === void 0 ? void 0 : beneficialOwnerData.ownersCount;
318
+ if (Number(beneficialOwnerData === null || beneficialOwnerData === void 0 ? void 0 : beneficialOwnerData.ownersCount) > 0) {
319
+ var ownersList = elementtree_1.SubElement(ownerDetails, "Owners");
320
+ beneficialOwnerData.ownersList.forEach(function (ownerInfo) {
321
+ var _a;
322
+ var newOwner = elementtree_1.SubElement(ownersList, "Owner");
323
+ elementtree_1.SubElement(newOwner, "FirstName").text = ownerInfo.firstName;
324
+ elementtree_1.SubElement(newOwner, "LastName").text = ownerInfo.lastName;
325
+ elementtree_1.SubElement(newOwner, "Email").text = ownerInfo.email;
326
+ elementtree_1.SubElement(newOwner, "SSN").text = ownerInfo.sSN;
327
+ elementtree_1.SubElement(newOwner, "DateOfBirth").text = ownerInfo.DateOfBirth;
328
+ elementtree_1.SubElement(newOwner, "Address").text = (_a = ownerInfo.ownerAddress) === null || _a === void 0 ? void 0 : _a.streetAddress1;
329
+ elementtree_1.SubElement(newOwner, "City").text = ownerInfo.ownerAddress.city;
330
+ elementtree_1.SubElement(newOwner, "State").text = ownerInfo.ownerAddress.state;
331
+ elementtree_1.SubElement(newOwner, "Zip").text = ownerInfo.ownerAddress.postalCode;
332
+ elementtree_1.SubElement(newOwner, "Country").text = ownerInfo.ownerAddress.country;
333
+ elementtree_1.SubElement(newOwner, "Title").text = ownerInfo.title;
334
+ if (ownerInfo.percentage != null)
335
+ elementtree_1.SubElement(newOwner, "Percentage").text = ownerInfo.percentage;
336
+ });
337
+ }
338
+ };
339
+ ProPayConnector.prototype.HydrateGrossBillingData = function (xmlTrans, grossBillingInformation) {
340
+ var _a;
341
+ elementtree_1.SubElement(xmlTrans, "GrossSettleAddress").append(elementtree_1.CData((_a = grossBillingInformation.grossSettleAddress) === null || _a === void 0 ? void 0 : _a.streetAddress1));
342
+ elementtree_1.SubElement(xmlTrans, "GrossSettleCity").append(elementtree_1.CData(grossBillingInformation.grossSettleAddress.city));
343
+ elementtree_1.SubElement(xmlTrans, "GrossSettleState").append(elementtree_1.CData(grossBillingInformation.grossSettleAddress.state));
344
+ elementtree_1.SubElement(xmlTrans, "GrossSettleZipCode").append(elementtree_1.CData(grossBillingInformation.grossSettleAddress.postalCode));
345
+ elementtree_1.SubElement(xmlTrans, "GrossSettleCountry").append(elementtree_1.CData(grossBillingInformation.grossSettleAddress.country));
346
+ elementtree_1.SubElement(xmlTrans, "GrossSettleCreditCardNumber").append(elementtree_1.CData(grossBillingInformation.grossSettleCreditCardData.Number));
347
+ elementtree_1.SubElement(xmlTrans, "GrossSettleNameOnCard").append(elementtree_1.CData(grossBillingInformation.grossSettleCreditCardData.CardHolderName));
348
+ elementtree_1.SubElement(xmlTrans, "GrossSettleCreditCardExpDate").append(elementtree_1.CData(grossBillingInformation.grossSettleCreditCardData.getShortExpiry()));
349
+ elementtree_1.SubElement(xmlTrans, "GrossSettleAccountCountryCode").append(elementtree_1.CData(grossBillingInformation.grossSettleBankData.accountCountryCode));
350
+ elementtree_1.SubElement(xmlTrans, "GrossSettleAccountHolderName").append(elementtree_1.CData(grossBillingInformation.grossSettleBankData.accountHolderName));
351
+ elementtree_1.SubElement(xmlTrans, "GrossSettleAccountNumber").append(elementtree_1.CData(grossBillingInformation.grossSettleBankData.accountNumber));
352
+ elementtree_1.SubElement(xmlTrans, "GrossSettleAccountType").append(elementtree_1.CData(grossBillingInformation.grossSettleBankData.accountType));
353
+ elementtree_1.SubElement(xmlTrans, "GrossSettleRoutingNumber").append(elementtree_1.CData(grossBillingInformation.grossSettleBankData.routingNumber));
354
+ };
355
+ ProPayConnector.prototype.HydrateAccountRenewDetails = function (xmlTrans, renewAccountData) {
356
+ var elementMap = {
357
+ 'tier': renewAccountData.tier,
358
+ 'CVV2': renewAccountData.creditCard.cvn,
359
+ 'ccNum': renewAccountData.creditCard.number,
360
+ 'expDate': renewAccountData.creditCard.getShortExpiry(),
361
+ 'zip': renewAccountData.zipCode,
362
+ 'PaymentBankAccountNumber': renewAccountData.paymentBankAccountNumber,
363
+ 'PaymentBankRoutingNumber': renewAccountData.paymentBankRoutingNumber,
364
+ 'PaymentBankAccountType': renewAccountData.paymentBankAccountType
365
+ };
366
+ this.createNewElements(xmlTrans, elementMap);
367
+ };
368
+ ProPayConnector.prototype.HydrateFlashFundsPaymentCardData = function (xmlTrans, cardData) {
369
+ var _a;
370
+ elementtree_1.SubElement(xmlTrans, "ccNum").append(elementtree_1.CData(cardData.creditCard.number));
371
+ elementtree_1.SubElement(xmlTrans, "expDate").append(elementtree_1.CData(cardData.creditCard.getShortExpiry()));
372
+ elementtree_1.SubElement(xmlTrans, "CVV2").append(elementtree_1.CData(cardData.creditCard.cvn));
373
+ elementtree_1.SubElement(xmlTrans, "cardholderName").append(elementtree_1.CData(cardData.creditCard.cardHolderName));
374
+ elementtree_1.SubElement(xmlTrans, "addr").append(elementtree_1.CData((_a = cardData.cardholderAddress) === null || _a === void 0 ? void 0 : _a.streetAddress1));
375
+ elementtree_1.SubElement(xmlTrans, "city").append(elementtree_1.CData(cardData.cardholderAddress.city));
376
+ elementtree_1.SubElement(xmlTrans, "state").append(elementtree_1.CData(cardData.cardholderAddress.state));
377
+ elementtree_1.SubElement(xmlTrans, "zip").append(elementtree_1.CData(cardData.cardholderAddress.postalCode));
378
+ elementtree_1.SubElement(xmlTrans, "country").append(elementtree_1.CData(cardData.cardholderAddress.country));
379
+ };
380
+ ProPayConnector.prototype.HydrateDocumentUploadData = function (xmlTrans, transType, docUploadData) {
381
+ var docNameTag = transType == Enums_1.TransactionType.UploadDocumentChargeback ? "DocumentName" : "documentName";
382
+ var docTypeTag = transType == Enums_1.TransactionType.UploadDocumentChargeback ? "DocType" : "docType";
383
+ elementtree_1.SubElement(xmlTrans, docNameTag).append(elementtree_1.CData(docUploadData.documentName));
384
+ docUploadData.transactionReference ? elementtree_1.SubElement(xmlTrans, "TransactionReference").append(elementtree_1.CData(docUploadData.transactionReference)) : '';
385
+ docUploadData.docCategory ? elementtree_1.SubElement(xmlTrans, "DocCategory").append(elementtree_1.CData(docUploadData.docCategory)) : '';
386
+ elementtree_1.SubElement(xmlTrans, docTypeTag).append(elementtree_1.CData(docUploadData.docType));
387
+ elementtree_1.SubElement(xmlTrans, "Document").append(elementtree_1.CData(docUploadData.document));
388
+ };
389
+ ProPayConnector.prototype.HydrateSSORequestData = function (xmlTrans, ssoRequestData) {
390
+ elementtree_1.SubElement(xmlTrans, "ReferrerUrl").append(elementtree_1.CData(ssoRequestData.referrerURL));
391
+ elementtree_1.SubElement(xmlTrans, "IpAddress").append(elementtree_1.CData(ssoRequestData.iPAddress));
392
+ elementtree_1.SubElement(xmlTrans, "IpSubnetMask").append(elementtree_1.CData(ssoRequestData.iPSubnetMask));
393
+ };
394
+ ProPayConnector.prototype.HydrateOrderDeviceData = function (xmlTrans, orderDeviceData) {
395
+ elementtree_1.SubElement(xmlTrans, "accntNum").append(elementtree_1.CData(orderDeviceData.accountNum.toString()));
396
+ elementtree_1.SubElement(xmlTrans, "shipTo").append(elementtree_1.CData(orderDeviceData.shipTo));
397
+ elementtree_1.SubElement(xmlTrans, "shipToContact").append(elementtree_1.CData(orderDeviceData.shipToContact));
398
+ elementtree_1.SubElement(xmlTrans, "shipToAddress").append(elementtree_1.CData(orderDeviceData.shipToAddress));
399
+ elementtree_1.SubElement(xmlTrans, "shipToAddress2").append(elementtree_1.CData(orderDeviceData.shipToAddress2));
400
+ elementtree_1.SubElement(xmlTrans, "shipToCity").append(elementtree_1.CData(orderDeviceData.shipToCity));
401
+ elementtree_1.SubElement(xmlTrans, "shipToState").append(elementtree_1.CData(orderDeviceData.shipToState));
402
+ elementtree_1.SubElement(xmlTrans, "shipToZip").append(elementtree_1.CData(orderDeviceData.shipToZip));
403
+ elementtree_1.SubElement(xmlTrans, "shipToPhone").append(elementtree_1.CData(orderDeviceData.shipToPhone));
404
+ elementtree_1.SubElement(xmlTrans, "cardholderName").append(elementtree_1.CData(orderDeviceData.cardholderName));
405
+ elementtree_1.SubElement(xmlTrans, "CcNum").append(elementtree_1.CData(orderDeviceData.ccNum));
406
+ elementtree_1.SubElement(xmlTrans, "ExpDate").append(elementtree_1.CData(orderDeviceData.expDate));
407
+ elementtree_1.SubElement(xmlTrans, "CVV2").append(elementtree_1.CData(orderDeviceData.cVV2));
408
+ elementtree_1.SubElement(xmlTrans, "billingZip").append(elementtree_1.CData(orderDeviceData.billingZip));
409
+ };
410
+ ProPayConnector.prototype.UpdateGatewaySettings = function (builder) {
411
+ var certTransactions = [
412
+ Enums_1.TransactionType.EditAccount,
413
+ Enums_1.TransactionType.ObtainSSOKey,
414
+ Enums_1.TransactionType.UpdateBankAccountOwnership,
415
+ Enums_1.TransactionType.AddFunds,
416
+ Enums_1.TransactionType.AddCardFlashFunds
417
+ ];
418
+ if (certTransactions.includes(builder.transactionType)) {
419
+ this.headers["X509Certificate"] = this.setX509Certificate();
420
+ }
421
+ };
422
+ ProPayConnector.prototype.createNewElements = function (xmlns, mapping) {
423
+ for (var _i = 0, _a = Object.entries(mapping); _i < _a.length; _i++) {
424
+ var _b = _a[_i], key = _b[0], value = _b[1];
425
+ if (value != null && value != '')
426
+ elementtree_1.SubElement(xmlns, key).append(elementtree_1.CData("" + value));
427
+ }
428
+ };
429
+ ProPayConnector.prototype.setX509Certificate = function () {
430
+ var x509RawData = fs.readFileSync(this.x509CertificatePath);
431
+ return x509RawData.toString().replace(/(\r\n|\n|\r)/gm, "");
432
+ };
433
+ ProPayConnector.prototype.mapRequestType = function (builder) {
434
+ switch (builder.transactionType) {
435
+ case Enums_1.TransactionType.CreateAccount:
436
+ return "01";
437
+ case Enums_1.TransactionType.EditAccount:
438
+ return "42";
439
+ case Enums_1.TransactionType.ResetPassword:
440
+ return "32";
441
+ case Enums_1.TransactionType.RenewAccount:
442
+ return "39";
443
+ case Enums_1.TransactionType.UpdateBeneficialOwnership:
444
+ return "44";
445
+ case Enums_1.TransactionType.DisownAccount:
446
+ return "41";
447
+ case Enums_1.TransactionType.UploadDocumentChargeback:
448
+ return "46";
449
+ case Enums_1.TransactionType.UploadDocument:
450
+ return "47";
451
+ case Enums_1.TransactionType.ObtainSSOKey:
452
+ return "300";
453
+ case Enums_1.TransactionType.UpdateBankAccountOwnership:
454
+ return "210";
455
+ case Enums_1.TransactionType.AddFunds:
456
+ return "37";
457
+ case Enums_1.TransactionType.SweepFunds:
458
+ return "38";
459
+ case Enums_1.TransactionType.AddCardFlashFunds:
460
+ return "209";
461
+ case Enums_1.TransactionType.PushMoneyFlashFunds:
462
+ return "45";
463
+ case Enums_1.TransactionType.DisburseFunds:
464
+ return "02";
465
+ case Enums_1.TransactionType.SpendBack:
466
+ return "11";
467
+ case Enums_1.TransactionType.ReverseSplitPay:
468
+ return "43";
469
+ case Enums_1.TransactionType.SplitFunds:
470
+ return "16";
471
+ case Enums_1.TransactionType.GetAccountDetails:
472
+ // We are using the Additional TransactionModifier to differentiate between GetAccountDetails and GetAccountDetailsEnhanced
473
+ if (builder.transactionModifier == Enums_1.TransactionModifier.Additional) {
474
+ return "19";
475
+ }
476
+ // If the TransactionModifier isn't "Additional" then it is either "None" or an unsupported value that should be treated as "None"
477
+ return "13";
478
+ case Enums_1.TransactionType.GetAccountBalance:
479
+ return "14";
480
+ case Enums_1.TransactionType.OrderDevice:
481
+ return "430";
482
+ default:
483
+ throw new Error("Unsupported transaction exception.");
484
+ }
485
+ };
486
+ ProPayConnector.prototype.mapResponse = function (builder, rawResponse) {
487
+ var xmlTransaction = elementtree_1.XML(rawResponse).find(".//XMLTrans");
488
+ var responseCode = xmlTransaction.findtext(".//status");
489
+ fs.appendFile('loggerDebug.txt', rawResponse + '\n', function (err) {
490
+ if (err)
491
+ throw err;
492
+ });
493
+ if (responseCode != "00" && responseCode != "66") {
494
+ throw new Error("Unexpected Gateway Response: " + String(responseCode));
495
+ }
496
+ var proPayResponse = this.populateProPayResponse(builder, xmlTransaction);
497
+ var response = new __1.Transaction();
498
+ response.payFacData = proPayResponse,
499
+ response.responseCode = responseCode;
500
+ return response;
501
+ };
502
+ ProPayConnector.prototype.populateProPayResponse = function (builder, root) {
503
+ if (builder.transactionType == Enums_1.TransactionType.GetAccountDetails &&
504
+ builder.transactionModifier == Enums_1.TransactionModifier.Additional) {
505
+ return this.populateResponseWithEnhancedAccountDetails(root);
506
+ }
507
+ else {
508
+ var responseData = new PayFacResponseData_1.PayFacResponseData();
509
+ responseData.accountNumber = this.getAccountNumberFromResponse(root);
510
+ responseData.recAccountNum = root.findtext(".//recAccntNum");
511
+ responseData.password = root.findtext(".//password");
512
+ responseData.amount = root.findtext(".//amount");
513
+ responseData.transNum = root.findtext(".//transNum");
514
+ responseData.pending = root.findtext(".//pending");
515
+ responseData.secondaryAmount = root.findtext(".//secondaryAmount");
516
+ responseData.secondaryTransNum = root.findtext(".//secondaryTransNum");
517
+ responseData.sourceEmail = root.findtext(".//sourceEmail");
518
+ responseData.authToken = root.findtext(".//AuthToken");
519
+ responseData.beneficialOwnerDataResults = this.getBeneficialOwnerDataResultsFromResponse(root);
520
+ responseData.accountStatus = root.findtext(".//accntStatus");
521
+ responseData.physicalAddress = this.getPhysicalAddressFromResponse(root);
522
+ responseData.affiliation = root.findtext(".//affiliation");
523
+ responseData.aPIReady = root.findtext(".//apiReady");
524
+ responseData.currencyCode = root.findtext(".//currencyCode");
525
+ responseData.expiration = root.findtext(".//expiration");
526
+ responseData.signupDate = root.findtext(".//signupDate");
527
+ responseData.tier = root.findtext(".//tier");
528
+ responseData.visaCheckoutMerchantID = root.findtext(".//visaCheckoutMerchantId");
529
+ responseData.creditCardTransactionLimit = root.findtext(".//CreditCardTransactionLimit");
530
+ responseData.creditCardMonthLimit = root.findtext(".//CreditCardMonthLimit");
531
+ responseData.aCHPaymentPerTranLimit = root.findtext(".//ACHPaymentPerTranLimit");
532
+ responseData.aCHPaymentMonthLimit = root.findtext(".//ACHPaymentMonthLimit");
533
+ responseData.creditCardMonthlyVolume = root.findtext(".//CreditCardMonthlyVolume");
534
+ responseData.aCHPaymentMonthlyVolume = root.findtext(".//ACHPaymentMonthlyVolume");
535
+ responseData.reserveBalance = root.findtext(".//ReserveBalance");
536
+ responseData.masterPassCheckoutMerchantID = root.findtext(".//MasterPassCheckoutMerchantId");
537
+ responseData.pendingAmount = root.findtext(".//pendingAmount");
538
+ responseData.reserveAmount = root.findtext(".//reserveAmount>");
539
+ responseData.aCHOut = this.getACHOutBalanceInfoFromResponse(root);
540
+ responseData.flashFunds = this.getFlashFundsBalanceInfoFromResponse(root);
541
+ return responseData;
542
+ }
543
+ ;
544
+ };
545
+ ProPayConnector.prototype.populateResponseWithEnhancedAccountDetails = function (root) {
546
+ var _a, _b;
547
+ var responseResult = new PayFacResponseData_1.PayFacResponseData();
548
+ responseResult.accountNumber = this.getAccountNumberFromResponse(root);
549
+ var personalData = new UserPersonalData_1.UserPersonalData();
550
+ personalData.sourceEmail = root.findtext(".//sourceEmail");
551
+ personalData.firstName = root.findtext(".//firstName");
552
+ personalData.middleInitial = root.findtext(".//middleInitial");
553
+ personalData.lastName = root.findtext(".//lastName");
554
+ personalData.dayPhone = root.findtext(".//dayPhone");
555
+ personalData.eveningPhone = root.findtext(".//evenPhone");
556
+ personalData.externalID = root.findtext(".//externalId");
557
+ personalData.tier = root.findtext(".//tier");
558
+ personalData.currencyCode = root.findtext(".//currencyCode");
559
+ personalData.notificationEmail = root.findtext(".//notificati;onEmail");
560
+ responseResult.personalData = personalData;
561
+ var homeAddress = new Entities_1.Address();
562
+ homeAddress.streetAddress1 = root.findtext(".//addr");
563
+ homeAddress.streetAddress2 = root.findtext(".//aptNum");
564
+ homeAddress.city = root.findtext(".//city");
565
+ homeAddress.state = root.findtext(".//state");
566
+ homeAddress.postalCode = root.findtext(".//postalCode");
567
+ homeAddress.country = root.findtext(".//country");
568
+ responseResult.homeAddress = homeAddress;
569
+ var mailAddress = new Entities_1.Address();
570
+ mailAddress.streetAddress1 = root.findtext(".//mailAddr");
571
+ mailAddress.streetAddress2 = root.findtext(".//mailApt");
572
+ mailAddress.city = root.findtext(".//mailCity");
573
+ mailAddress.state = root.findtext(".//mailState");
574
+ mailAddress.postalCode = root.findtext(".//mailPostalCode");
575
+ mailAddress.country = root.findtext(".//mailCountry");
576
+ responseResult.mailAddress = mailAddress;
577
+ var businessData = new BusinessData_1.BusinessData();
578
+ businessData.businessLegalName = root.findtext(".//businessLegalName");
579
+ businessData.doingBusinessAs = root.findtext(".//doingBusinessAs");
580
+ businessData.employerIdentificationNumber = root.findtext(".//ein");
581
+ businessData.websiteURL = root.findtext(".//websiteURL");
582
+ businessData.averageTicket = root.findtext(".//averageTicket");
583
+ businessData.highestTicket = root.findtext(".//highestTicket");
584
+ responseResult.businessData = businessData;
585
+ var businessAddress = new Entities_1.Address();
586
+ businessAddress.streetAddress1 = root.findtext(".//businessAddress");
587
+ businessAddress.streetAddress2 = root.findtext(".//businessAddress2");
588
+ businessAddress.city = root.findtext(".//businessCity");
589
+ businessAddress.state = root.findtext(".//businessState");
590
+ businessAddress.postalCode = root.findtext(".//businessZip");
591
+ businessData.businessAddress = businessAddress;
592
+ responseResult.businessData = businessData;
593
+ var accountLimits = new AccountPermissions_1.AccountPermissions();
594
+ accountLimits.creditCardTransactionLimit = root.findtext(".//creditCardTransactionLimit");
595
+ accountLimits.creditCardMonthLimit = root.findtext(".//creditCardMonthLimit");
596
+ accountLimits.aCHPaymentSoftLimitEnabled = ((_a = root.findtext(".//achPaymentSoftLimitEnabled")) === null || _a === void 0 ? void 0 : _a.toUpperCase()) == "Y" ? true : false;
597
+ accountLimits.aCHPaymentACHOffPercent = root.findtext(".//achPaymentAchOffPercent");
598
+ accountLimits.softLimitEnabled = ((_b = root.findtext(".//softLimitEnabled")) === null || _b === void 0 ? void 0 : _b.toUpperCase()) == "Y" ? true : false;
599
+ accountLimits.softLimitACHOffPercent = root.findtext(".//softLimitAchOffPercent");
600
+ responseResult.aCHPaymentPerTranLimit = root.findtext(".//achPaymentPerTranLimit");
601
+ responseResult.aCHPaymentMonthLimit = root.findtext(".//achPaymentMonthLimit");
602
+ responseResult.aCHPaymentMonthlyVolume = root.findtext(".//achPaymentMonthlyVolume");
603
+ responseResult.creditCardMonthlyVolume = root.findtext(".//creditCardMonthlyVolume");
604
+ responseResult.availableBalance = root.findtext(".//availableBalance");
605
+ responseResult.pendingBalance = root.findtext(".//pendingBalance");
606
+ responseResult.reserveBalance = root.findtext(".//reserveBalance");
607
+ responseResult.accountLimits = accountLimits;
608
+ var primaryBankAccountData = new BankAccountData_1.BankAccountData();
609
+ primaryBankAccountData.accountCountryCode = root.findtext(".//primaryAccountCountryCode");
610
+ primaryBankAccountData.accountType = root.findtext(".//primaryAccountType");
611
+ primaryBankAccountData.accountOwnershipType = root.findtext(".//primaryAccountOwnershipType");
612
+ primaryBankAccountData.bankName = root.findtext(".//primaryBankName");
613
+ primaryBankAccountData.accountNumber = root.findtext(".//primaryAccountNumberLast4");
614
+ primaryBankAccountData.routingNumber = root.findtext(".//primaryRoutingNumber");
615
+ responseResult.primaryBankAccountData = primaryBankAccountData;
616
+ var secondaryBankAccountData = new BankAccountData_1.BankAccountData();
617
+ secondaryBankAccountData.accountCountryCode = root.findtext(".//secondaryAccountCountryCode");
618
+ secondaryBankAccountData.accountType = root.findtext(".//secondaryAccountType");
619
+ secondaryBankAccountData.accountOwnershipType = root.findtext(".//secondaryAccountOwnershipTy;e");
620
+ secondaryBankAccountData.bankName = root.findtext(".//secondaryBankName");
621
+ secondaryBankAccountData.accountNumber = root.findtext(".//secondaryAccoun;tNumberLast4");
622
+ secondaryBankAccountData.routingNumber = root.findtext(".//secondaryRoutingNumber");
623
+ responseResult.secondaryBankAccountData = secondaryBankAccountData;
624
+ var grossBillingInformation = new GrossBillingInformation_1.GrossBillingInformation();
625
+ var grossSettleBankData = new BankAccountData_1.BankAccountData();
626
+ grossSettleBankData.accountHolderName = root.findtext(".//grossSettleAccountHolderName");
627
+ grossSettleBankData.accountNumber = root.findtext(".//grossSettleAccountNumberLast4");
628
+ grossSettleBankData.routingNumber = root.findtext(".//grossSettleRoutingNumber");
629
+ grossSettleBankData.accountType = root.findtext(".//grossSettleAccountType");
630
+ var grossSettleAddress = new Entities_1.Address();
631
+ grossSettleAddress.streetAddress1 = root.findtext(".//grossSettleAccountAddress");
632
+ grossSettleAddress.city = root.findtext(".//rossSettleAccountCity");
633
+ grossSettleAddress.state = root.findtext(".//grossSettleAccountState");
634
+ grossSettleAddress.country = root.findtext(".//grossSettleAccountCountryCode");
635
+ grossSettleAddress.postalCode = root.findtext(".//grossSettleAccountZipCode");
636
+ grossBillingInformation.grossSettleBankData = grossSettleBankData;
637
+ grossBillingInformation.grossSettleAddress = grossSettleAddress;
638
+ return responseResult;
639
+ };
640
+ ProPayConnector.prototype.getAccountNumberFromResponse = function (root) {
641
+ // ProPay API 4.1 (Create an account) has the account number specified in the response as "accntNum"
642
+ // All other methods specify it as "accountNum" in the response
643
+ if (root.find(".//accntNum")) {
644
+ return root.findtext(".//accntNum");
645
+ }
646
+ else {
647
+ return root.findtext(".//accountNum");
648
+ }
649
+ };
650
+ ProPayConnector.prototype.getBeneficialOwnerDataResultsFromResponse = function (root) {
651
+ var beneficialOwnerDataResults = new Array();
652
+ if (root.find("beneficialOwnerDataResult")) {
653
+ root.findall("Owner").forEach(function (owner) {
654
+ var beneficialOwner = new BeneficialOwnerDataResult_1.BeneficialOwnerDataResult();
655
+ beneficialOwner.firstName = owner.findtext(".//FirstName");
656
+ beneficialOwner.lastName = owner.findtext(".//LastName");
657
+ beneficialOwner.status = owner.findtext(".//Status");
658
+ beneficialOwnerDataResults.push(beneficialOwner);
659
+ });
660
+ }
661
+ return beneficialOwnerDataResults;
662
+ };
663
+ ProPayConnector.prototype.getPhysicalAddressFromResponse = function (root) {
664
+ var addr = new Entities_1.Address();
665
+ if (root.find("addr") || root.find("city") || root.find("state") || root.find("zip")) {
666
+ addr.streetAddress1 = root.findtext(".//addr"),
667
+ addr.city = root.findtext(".//city"),
668
+ addr.state = root.findtext(".//state"),
669
+ addr.postalCode = root.findtext(".//zip");
670
+ }
671
+ return addr;
672
+ };
673
+ ProPayConnector.prototype.getACHOutBalanceInfoFromResponse = function (root) {
674
+ var balanceResponse = new AccountBalanceResponseData_1.AccountBalanceResponseData();
675
+ if (root.find("achOut")) {
676
+ balanceResponse.enabled = root.findtext(".//enabled"),
677
+ balanceResponse.limitRemaining = root.findtext(".//limitRemaining"),
678
+ balanceResponse.transferFee = root.findtext(".//transferFee"),
679
+ balanceResponse.feeType = root.findtext(".//feeType"),
680
+ balanceResponse.accountLastFour = root.findtext(".//accountLastFour");
681
+ }
682
+ return balanceResponse;
683
+ ;
684
+ };
685
+ ProPayConnector.prototype.getFlashFundsBalanceInfoFromResponse = function (root) {
686
+ var balanceResponse = new AccountBalanceResponseData_1.AccountBalanceResponseData();
687
+ if (root.find("flashFunds")) {
688
+ balanceResponse.enabled = root.findtext(".//enabled"),
689
+ balanceResponse.limitRemaining = root.findtext(".//limitRemaining"),
690
+ balanceResponse.transferFee = root.findtext(".//transferFee"),
691
+ balanceResponse.feeType = root.findtext(".//feeType"),
692
+ balanceResponse.accountLastFour = root.findtext(".//accountLastFour");
693
+ }
694
+ return balanceResponse;
695
+ };
696
+ return ProPayConnector;
697
+ }(XmlGateway_1.XmlGateway));
698
+ exports.ProPayConnector = ProPayConnector;