globalpayments-api 3.8.2 → 3.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (243) hide show
  1. package/CHANGELOG.md +13 -1
  2. package/LICENSE.md +257 -257
  3. package/README.md +141 -141
  4. package/lib/src/Builders/AuthorizationBuilder.d.ts +23 -1
  5. package/lib/src/Builders/AuthorizationBuilder.js +94 -0
  6. package/lib/src/Builders/AuthorizationBuilder.js.map +1 -1
  7. package/lib/src/Builders/ManagementBuilder.d.ts +18 -1
  8. package/lib/src/Builders/ManagementBuilder.js +23 -0
  9. package/lib/src/Builders/ManagementBuilder.js.map +1 -1
  10. package/lib/src/Builders/RequestBuilder/GpApi/GpApiAuthorizationRequestBuilder.d.ts +3 -0
  11. package/lib/src/Builders/RequestBuilder/GpApi/GpApiAuthorizationRequestBuilder.js +163 -24
  12. package/lib/src/Builders/RequestBuilder/GpApi/GpApiAuthorizationRequestBuilder.js.map +1 -1
  13. package/lib/src/Builders/RequestBuilder/GpApi/GpApiManagementRequestBuilder.d.ts +4 -1
  14. package/lib/src/Builders/RequestBuilder/GpApi/GpApiManagementRequestBuilder.js +38 -2
  15. package/lib/src/Builders/RequestBuilder/GpApi/GpApiManagementRequestBuilder.js.map +1 -1
  16. package/lib/src/Builders/RequestBuilder/GpEcom/GpEcomRequestBuilder.js.map +1 -1
  17. package/lib/src/Builders/TransactionBuilder.d.ts +2 -3
  18. package/lib/src/Builders/TransactionBuilder.js +0 -6
  19. package/lib/src/Builders/TransactionBuilder.js.map +1 -1
  20. package/lib/src/Entities/AlternativePaymentResponse.d.ts +66 -0
  21. package/lib/src/Entities/AlternativePaymentResponse.js +72 -0
  22. package/lib/src/Entities/AlternativePaymentResponse.js.map +1 -0
  23. package/lib/src/Entities/Customer.d.ts +3 -3
  24. package/lib/src/Entities/Customer.js.map +1 -1
  25. package/lib/src/Entities/DccRateData.d.ts +61 -0
  26. package/lib/src/Entities/DccRateData.js +64 -0
  27. package/lib/src/Entities/DccRateData.js.map +1 -0
  28. package/lib/src/Entities/Enums/DccProcessor.d.ts +4 -0
  29. package/lib/src/Entities/Enums/DccProcessor.js +9 -0
  30. package/lib/src/Entities/Enums/DccProcessor.js.map +1 -0
  31. package/lib/src/Entities/Enums/DccRateType.d.ts +4 -0
  32. package/lib/src/Entities/Enums/DccRateType.js +9 -0
  33. package/lib/src/Entities/Enums/DccRateType.js.map +1 -0
  34. package/lib/src/Entities/Enums/MerchantCategory.d.ts +9 -0
  35. package/lib/src/Entities/Enums/MerchantCategory.js +14 -0
  36. package/lib/src/Entities/Enums/MerchantCategory.js.map +1 -0
  37. package/lib/src/Entities/Enums.d.ts +138 -1
  38. package/lib/src/Entities/Enums.js +138 -1
  39. package/lib/src/Entities/Enums.js.map +1 -1
  40. package/lib/src/Entities/OrderDetails.d.ts +6 -0
  41. package/lib/src/Entities/OrderDetails.js +11 -0
  42. package/lib/src/Entities/OrderDetails.js.map +1 -0
  43. package/lib/src/Entities/Transaction.d.ts +5 -1
  44. package/lib/src/Entities/Transaction.js +18 -0
  45. package/lib/src/Entities/Transaction.js.map +1 -1
  46. package/lib/src/Entities/TransactionSummary.d.ts +2 -1
  47. package/lib/src/Entities/TransactionSummary.js +1 -0
  48. package/lib/src/Entities/TransactionSummary.js.map +1 -1
  49. package/lib/src/Entities/index.d.ts +6 -0
  50. package/lib/src/Entities/index.js +6 -0
  51. package/lib/src/Entities/index.js.map +1 -1
  52. package/lib/src/Gateways/GpApiConnector.js +12 -2
  53. package/lib/src/Gateways/GpApiConnector.js.map +1 -1
  54. package/lib/src/Gateways/GpEcomConnector.js.map +1 -1
  55. package/lib/src/Mapping/GpApiMapping.d.ts +3 -1
  56. package/lib/src/Mapping/GpApiMapping.js +111 -3
  57. package/lib/src/Mapping/GpApiMapping.js.map +1 -1
  58. package/lib/src/PaymentMethods/Credit.d.ts +2 -1
  59. package/lib/src/PaymentMethods/Credit.js +12 -0
  60. package/lib/src/PaymentMethods/Credit.js.map +1 -1
  61. package/lib/src/PaymentMethods/ECheck.d.ts +10 -1
  62. package/lib/src/PaymentMethods/ECheck.js +11 -0
  63. package/lib/src/PaymentMethods/ECheck.js.map +1 -1
  64. package/lib/src/PaymentMethods/TransactionReference.d.ts +3 -2
  65. package/lib/src/PaymentMethods/TransactionReference.js +1 -1
  66. package/lib/src/PaymentMethods/TransactionReference.js.map +1 -1
  67. package/lib/src/Utils/CardUtils.js +4 -5
  68. package/lib/src/Utils/CardUtils.js.map +1 -1
  69. package/lib/src/Utils/StringUtils.js +3 -0
  70. package/lib/src/Utils/StringUtils.js.map +1 -1
  71. package/lib/test/Data/BaseGpApiTestConfig.js +2 -0
  72. package/lib/test/Data/BaseGpApiTestConfig.js.map +1 -1
  73. package/lib/test/Data/TestCards.js +1 -0
  74. package/lib/test/Data/TestCards.js.map +1 -1
  75. package/lib/test/Integration/Gateways/GpApiConnector/3DS2Test.d.ts +1 -0
  76. package/lib/test/Integration/Gateways/GpApiConnector/3DS2Test.js +1029 -0
  77. package/lib/test/Integration/Gateways/GpApiConnector/3DS2Test.js.map +1 -0
  78. package/lib/test/Integration/Gateways/GpApiConnector/3DSecureTest.d.ts +1 -0
  79. package/lib/test/Integration/Gateways/GpApiConnector/3DSecureTest.js +649 -0
  80. package/lib/test/Integration/Gateways/GpApiConnector/3DSecureTest.js.map +1 -0
  81. package/lib/test/Integration/Gateways/GpApiConnector/AccessTokenTest.d.ts +1 -0
  82. package/lib/test/Integration/Gateways/GpApiConnector/AccessTokenTest.js +109 -0
  83. package/lib/test/Integration/Gateways/GpApiConnector/AccessTokenTest.js.map +1 -0
  84. package/lib/test/Integration/Gateways/GpApiConnector/Ach.test.d.ts +1 -0
  85. package/lib/test/Integration/Gateways/GpApiConnector/Ach.test.js +120 -0
  86. package/lib/test/Integration/Gateways/GpApiConnector/Ach.test.js.map +1 -0
  87. package/lib/test/Integration/Gateways/GpApiConnector/Apm.test.d.ts +1 -0
  88. package/lib/test/Integration/Gateways/GpApiConnector/Apm.test.js +425 -0
  89. package/lib/test/Integration/Gateways/GpApiConnector/Apm.test.js.map +1 -0
  90. package/lib/test/Integration/Gateways/GpApiConnector/CreditCardNotPresentTest.d.ts +1 -0
  91. package/lib/test/Integration/Gateways/GpApiConnector/CreditCardNotPresentTest.js +1025 -0
  92. package/lib/test/Integration/Gateways/GpApiConnector/CreditCardNotPresentTest.js.map +1 -0
  93. package/lib/test/Integration/Gateways/GpApiConnector/CreditCardPresentTest.d.ts +1 -0
  94. package/lib/test/Integration/Gateways/GpApiConnector/CreditCardPresentTest.js +439 -0
  95. package/lib/test/Integration/Gateways/GpApiConnector/CreditCardPresentTest.js.map +1 -0
  96. package/lib/test/Integration/Gateways/GpApiConnector/DccCardNotPresent.test.d.ts +1 -0
  97. package/lib/test/Integration/Gateways/GpApiConnector/DccCardNotPresent.test.js +256 -0
  98. package/lib/test/Integration/Gateways/GpApiConnector/DccCardNotPresent.test.js.map +1 -0
  99. package/lib/test/Integration/Gateways/GpApiConnector/DebitCardTest.d.ts +1 -0
  100. package/lib/test/Integration/Gateways/GpApiConnector/DebitCardTest.js +143 -0
  101. package/lib/test/Integration/Gateways/GpApiConnector/DebitCardTest.js.map +1 -0
  102. package/lib/test/Integration/Gateways/GpApiConnector/EbtCard.test.d.ts +1 -0
  103. package/lib/test/Integration/Gateways/GpApiConnector/EbtCard.test.js +88 -0
  104. package/lib/test/Integration/Gateways/GpApiConnector/EbtCard.test.js.map +1 -0
  105. package/lib/test/Integration/Gateways/GpApiConnector/GpApiCertificationTest.d.ts +1 -0
  106. package/lib/test/Integration/Gateways/GpApiConnector/GpApiCertificationTest.js +639 -0
  107. package/lib/test/Integration/Gateways/GpApiConnector/GpApiCertificationTest.js.map +1 -0
  108. package/lib/test/Integration/Gateways/GpApiConnector/GpApiTokenManagementTest.d.ts +1 -0
  109. package/lib/test/Integration/Gateways/GpApiConnector/GpApiTokenManagementTest.js +149 -0
  110. package/lib/test/Integration/Gateways/GpApiConnector/GpApiTokenManagementTest.js.map +1 -0
  111. package/lib/test/Integration/Gateways/GpApiConnector/ReportingDepositsTest.d.ts +1 -0
  112. package/lib/test/Integration/Gateways/GpApiConnector/ReportingDepositsTest.js +226 -0
  113. package/lib/test/Integration/Gateways/GpApiConnector/ReportingDepositsTest.js.map +1 -0
  114. package/lib/test/Integration/Gateways/GpApiConnector/ReportingSettlementTransactionsTest.d.ts +1 -0
  115. package/lib/test/Integration/Gateways/GpApiConnector/ReportingSettlementTransactionsTest.js +434 -0
  116. package/lib/test/Integration/Gateways/GpApiConnector/ReportingSettlementTransactionsTest.js.map +1 -0
  117. package/lib/test/Integration/Gateways/GpApiConnector/ReportingStoredPaymentMethodsTest.d.ts +1 -0
  118. package/lib/test/Integration/Gateways/GpApiConnector/ReportingStoredPaymentMethodsTest.js +217 -0
  119. package/lib/test/Integration/Gateways/GpApiConnector/ReportingStoredPaymentMethodsTest.js.map +1 -0
  120. package/lib/test/Integration/Gateways/GpApiConnector/ReportingTransactionsTest.d.ts +1 -0
  121. package/lib/test/Integration/Gateways/GpApiConnector/ReportingTransactionsTest.js +338 -0
  122. package/lib/test/Integration/Gateways/GpApiConnector/ReportingTransactionsTest.js.map +1 -0
  123. package/lib/test/Integration/Gateways/GpEcomConnector/Certification/AuthTest.d.ts +1 -0
  124. package/lib/test/Integration/Gateways/GpEcomConnector/Certification/AuthTest.js +2446 -0
  125. package/lib/test/Integration/Gateways/GpEcomConnector/Certification/AuthTest.js.map +1 -0
  126. package/lib/test/Integration/Gateways/GpEcomConnector/Certification/AvsTest.d.ts +1 -0
  127. package/lib/test/Integration/Gateways/GpEcomConnector/Certification/AvsTest.js +506 -0
  128. package/lib/test/Integration/Gateways/GpEcomConnector/Certification/AvsTest.js.map +1 -0
  129. package/lib/test/Integration/Gateways/GpEcomConnector/Certification/CreditTest.d.ts +1 -0
  130. package/lib/test/Integration/Gateways/GpEcomConnector/Certification/CreditTest.js +1296 -0
  131. package/lib/test/Integration/Gateways/GpEcomConnector/Certification/CreditTest.js.map +1 -0
  132. package/lib/test/Integration/Gateways/GpEcomConnector/Certification/HoldTest.d.ts +1 -0
  133. package/lib/test/Integration/Gateways/GpEcomConnector/Certification/HoldTest.js +847 -0
  134. package/lib/test/Integration/Gateways/GpEcomConnector/Certification/HoldTest.js.map +1 -0
  135. package/lib/test/Integration/Gateways/GpEcomConnector/CreditTest.d.ts +1 -0
  136. package/lib/test/Integration/Gateways/GpEcomConnector/CreditTest.js +215 -0
  137. package/lib/test/Integration/Gateways/GpEcomConnector/CreditTest.js.map +1 -0
  138. package/lib/test/Integration/Gateways/GpEcomConnector/HppTest.d.ts +1 -0
  139. package/lib/test/Integration/Gateways/GpEcomConnector/HppTest.js +99 -0
  140. package/lib/test/Integration/Gateways/GpEcomConnector/HppTest.js.map +1 -0
  141. package/lib/test/Integration/Gateways/GpEcomConnector/RecurringTest.d.ts +1 -0
  142. package/lib/test/Integration/Gateways/GpEcomConnector/RecurringTest.js +133 -0
  143. package/lib/test/Integration/Gateways/GpEcomConnector/RecurringTest.js.map +1 -0
  144. package/lib/test/Integration/Gateways/PorticoConnector/AchTest.d.ts +1 -0
  145. package/lib/test/Integration/Gateways/PorticoConnector/AchTest.js +59 -0
  146. package/lib/test/Integration/Gateways/PorticoConnector/AchTest.js.map +1 -0
  147. package/lib/test/Integration/Gateways/PorticoConnector/Certifications/CheckTest.d.ts +1 -0
  148. package/lib/test/Integration/Gateways/PorticoConnector/Certifications/CheckTest.js +378 -0
  149. package/lib/test/Integration/Gateways/PorticoConnector/Certifications/CheckTest.js.map +1 -0
  150. package/lib/test/Integration/Gateways/PorticoConnector/Certifications/EcommerceCheckTest.d.ts +1 -0
  151. package/lib/test/Integration/Gateways/PorticoConnector/Certifications/EcommerceCheckTest.js +86 -0
  152. package/lib/test/Integration/Gateways/PorticoConnector/Certifications/EcommerceCheckTest.js.map +1 -0
  153. package/lib/test/Integration/Gateways/PorticoConnector/Certifications/EcommerceTest.d.ts +1 -0
  154. package/lib/test/Integration/Gateways/PorticoConnector/Certifications/EcommerceTest.js +1723 -0
  155. package/lib/test/Integration/Gateways/PorticoConnector/Certifications/EcommerceTest.js.map +1 -0
  156. package/lib/test/Integration/Gateways/PorticoConnector/Certifications/MotoCheckTest.d.ts +1 -0
  157. package/lib/test/Integration/Gateways/PorticoConnector/Certifications/MotoCheckTest.js +86 -0
  158. package/lib/test/Integration/Gateways/PorticoConnector/Certifications/MotoCheckTest.js.map +1 -0
  159. package/lib/test/Integration/Gateways/PorticoConnector/Certifications/MotoTest.d.ts +1 -0
  160. package/lib/test/Integration/Gateways/PorticoConnector/Certifications/MotoTest.js +1760 -0
  161. package/lib/test/Integration/Gateways/PorticoConnector/Certifications/MotoTest.js.map +1 -0
  162. package/lib/test/Integration/Gateways/PorticoConnector/Certifications/RecurringTest.d.ts +1 -0
  163. package/lib/test/Integration/Gateways/PorticoConnector/Certifications/RecurringTest.js +420 -0
  164. package/lib/test/Integration/Gateways/PorticoConnector/Certifications/RecurringTest.js.map +1 -0
  165. package/lib/test/Integration/Gateways/PorticoConnector/Certifications/RetailTest.d.ts +1 -0
  166. package/lib/test/Integration/Gateways/PorticoConnector/Certifications/RetailTest.js +2221 -0
  167. package/lib/test/Integration/Gateways/PorticoConnector/Certifications/RetailTest.js.map +1 -0
  168. package/lib/test/Integration/Gateways/PorticoConnector/CreditTest.d.ts +1 -0
  169. package/lib/test/Integration/Gateways/PorticoConnector/CreditTest.js +392 -0
  170. package/lib/test/Integration/Gateways/PorticoConnector/CreditTest.js.map +1 -0
  171. package/lib/test/Integration/Gateways/PorticoConnector/DebitTest.d.ts +1 -0
  172. package/lib/test/Integration/Gateways/PorticoConnector/DebitTest.js +88 -0
  173. package/lib/test/Integration/Gateways/PorticoConnector/DebitTest.js.map +1 -0
  174. package/lib/test/Integration/Gateways/PorticoConnector/EbtTest.d.ts +1 -0
  175. package/lib/test/Integration/Gateways/PorticoConnector/EbtTest.js +72 -0
  176. package/lib/test/Integration/Gateways/PorticoConnector/EbtTest.js.map +1 -0
  177. package/lib/test/Integration/Gateways/PorticoConnector/EcommerceTest.d.ts +1 -0
  178. package/lib/test/Integration/Gateways/PorticoConnector/EcommerceTest.js +143 -0
  179. package/lib/test/Integration/Gateways/PorticoConnector/EcommerceTest.js.map +1 -0
  180. package/lib/test/Integration/Gateways/PorticoConnector/GiftTest.d.ts +1 -0
  181. package/lib/test/Integration/Gateways/PorticoConnector/GiftTest.js +147 -0
  182. package/lib/test/Integration/Gateways/PorticoConnector/GiftTest.js.map +1 -0
  183. package/lib/test/Integration/Gateways/PorticoConnector/PorticoManagementTokenTest.d.ts +1 -0
  184. package/lib/test/Integration/Gateways/PorticoConnector/PorticoManagementTokenTest.js +48 -0
  185. package/lib/test/Integration/Gateways/PorticoConnector/PorticoManagementTokenTest.js.map +1 -0
  186. package/lib/test/Integration/Gateways/PorticoConnector/RecurringTest.d.ts +1 -0
  187. package/lib/test/Integration/Gateways/PorticoConnector/RecurringTest.js +101 -0
  188. package/lib/test/Integration/Gateways/PorticoConnector/RecurringTest.js.map +1 -0
  189. package/lib/test/Integration/Gateways/PorticoConnector/ReportingTest.d.ts +1 -0
  190. package/lib/test/Integration/Gateways/PorticoConnector/ReportingTest.js +50 -0
  191. package/lib/test/Integration/Gateways/PorticoConnector/ReportingTest.js.map +1 -0
  192. package/lib/test/Integration/Gateways/ProPayConnector/Certifications/GetInformationCertificationTest.d.ts +1 -0
  193. package/lib/test/Integration/Gateways/ProPayConnector/Certifications/GetInformationCertificationTest.js +44 -0
  194. package/lib/test/Integration/Gateways/ProPayConnector/Certifications/GetInformationCertificationTest.js.map +1 -0
  195. package/lib/test/Integration/Gateways/ProPayConnector/Certifications/ProPayAccountCertificationTest.d.ts +1 -0
  196. package/lib/test/Integration/Gateways/ProPayConnector/Certifications/ProPayAccountCertificationTest.js +221 -0
  197. package/lib/test/Integration/Gateways/ProPayConnector/Certifications/ProPayAccountCertificationTest.js.map +1 -0
  198. package/lib/test/Integration/Gateways/ProPayConnector/Certifications/ProPayFundCertificationTest.d.ts +1 -0
  199. package/lib/test/Integration/Gateways/ProPayConnector/Certifications/ProPayFundCertificationTest.js +60 -0
  200. package/lib/test/Integration/Gateways/ProPayConnector/Certifications/ProPayFundCertificationTest.js.map +1 -0
  201. package/lib/test/Integration/Gateways/ProPayConnector/Certifications/ProPayInNetworkTransactionCertificationTest.d.ts +1 -0
  202. package/lib/test/Integration/Gateways/ProPayConnector/Certifications/ProPayInNetworkTransactionCertificationTest.js +80 -0
  203. package/lib/test/Integration/Gateways/ProPayConnector/Certifications/ProPayInNetworkTransactionCertificationTest.js.map +1 -0
  204. package/lib/test/Integration/Gateways/ProPayConnector/GetInformationTest.d.ts +1 -0
  205. package/lib/test/Integration/Gateways/ProPayConnector/GetInformationTest.js +44 -0
  206. package/lib/test/Integration/Gateways/ProPayConnector/GetInformationTest.js.map +1 -0
  207. package/lib/test/Integration/Gateways/ProPayConnector/ProPayAccountTest.d.ts +1 -0
  208. package/lib/test/Integration/Gateways/ProPayConnector/ProPayAccountTest.js +330 -0
  209. package/lib/test/Integration/Gateways/ProPayConnector/ProPayAccountTest.js.map +1 -0
  210. package/lib/test/Integration/Gateways/ProPayConnector/ProPayFundsTest.d.ts +1 -0
  211. package/lib/test/Integration/Gateways/ProPayConnector/ProPayFundsTest.js +60 -0
  212. package/lib/test/Integration/Gateways/ProPayConnector/ProPayFundsTest.js.map +1 -0
  213. package/lib/test/Integration/Gateways/ProPayConnector/ProPayInNetworkTransactionTest.d.ts +1 -0
  214. package/lib/test/Integration/Gateways/ProPayConnector/ProPayInNetworkTransactionTest.js +80 -0
  215. package/lib/test/Integration/Gateways/ProPayConnector/ProPayInNetworkTransactionTest.js.map +1 -0
  216. package/lib/test/Integration/Gateways/Terminals/UPA/UpaMicTest.d.ts +1 -0
  217. package/lib/test/Integration/Gateways/Terminals/UPA/UpaMicTest.js +149 -0
  218. package/lib/test/Integration/Gateways/Terminals/UPA/UpaMicTest.js.map +1 -0
  219. package/lib/test/Integration/Services/CheckServiceTest.d.ts +1 -0
  220. package/lib/test/Integration/Services/CheckServiceTest.js +45 -0
  221. package/lib/test/Integration/Services/CheckServiceTest.js.map +1 -0
  222. package/lib/test/Integration/Services/CreditServiceTest.d.ts +1 -0
  223. package/lib/test/Integration/Services/CreditServiceTest.js +174 -0
  224. package/lib/test/Integration/Services/CreditServiceTest.js.map +1 -0
  225. package/lib/test/Integration/Services/DebitServiceTest.d.ts +1 -0
  226. package/lib/test/Integration/Services/DebitServiceTest.js +81 -0
  227. package/lib/test/Integration/Services/DebitServiceTest.js.map +1 -0
  228. package/lib/test/Integration/Services/EBTServiceTest.d.ts +1 -0
  229. package/lib/test/Integration/Services/EBTServiceTest.js +64 -0
  230. package/lib/test/Integration/Services/EBTServiceTest.js.map +1 -0
  231. package/lib/test/Unit/Builders/AuthorizationBuilder/ValidationTest.d.ts +1 -0
  232. package/lib/test/Unit/Builders/AuthorizationBuilder/ValidationTest.js +111 -0
  233. package/lib/test/Unit/Builders/AuthorizationBuilder/ValidationTest.js.map +1 -0
  234. package/lib/test/Unit/Builders/ReportBuilder/ValidationTest.d.ts +1 -0
  235. package/lib/test/Unit/Builders/ReportBuilder/ValidationTest.js +62 -0
  236. package/lib/test/Unit/Builders/ReportBuilder/ValidationTest.js.map +1 -0
  237. package/lib/test/Unit/Gateways/GpEcomConnector/CreditTest.d.ts +1 -0
  238. package/lib/test/Unit/Gateways/GpEcomConnector/CreditTest.js +34 -0
  239. package/lib/test/Unit/Gateways/GpEcomConnector/CreditTest.js.map +1 -0
  240. package/lib/test/Unit/Gateways/PorticoConnector/InputValidationTest.d.ts +1 -0
  241. package/lib/test/Unit/Gateways/PorticoConnector/InputValidationTest.js +125 -0
  242. package/lib/test/Unit/Gateways/PorticoConnector/InputValidationTest.js.map +1 -0
  243. package/package.json +1 -1
@@ -0,0 +1,425 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const src_1 = require("../../../../src");
4
+ const BaseGpApiTestConfig_1 = require("../../../Data/BaseGpApiTestConfig");
5
+ let paymentMethod;
6
+ let shippingAddress;
7
+ const currency = "USD";
8
+ const setup = () => {
9
+ src_1.ServicesContainer.configureService(BaseGpApiTestConfig_1.BaseGpApiTestConfig.gpApiSetupConfig(src_1.Channel.CardNotPresent));
10
+ paymentMethod = new src_1.AlternativePaymentMethod(src_1.AlternativePaymentType.Paypal);
11
+ paymentMethod.returnUrl =
12
+ "https://7b8e82a17ac00346e91e984f42a2a5fb.m.pipedream.net";
13
+ paymentMethod.statusUpdateUrl =
14
+ "https://7b8e82a17ac00346e91e984f42a2a5fb.m.pipedream.net";
15
+ paymentMethod.cancelUrl =
16
+ "https://7b8e82a17ac00346e91e984f42a2a5fb.m.pipedream.net";
17
+ paymentMethod.descriptor = "Test Transaction";
18
+ paymentMethod.country = "GB";
19
+ paymentMethod.accountHolderName = "James Mason";
20
+ shippingAddress = new src_1.Address();
21
+ shippingAddress.streetAddress1 = "Apartment 852";
22
+ shippingAddress.streetAddress2 = "Complex 741";
23
+ shippingAddress.streetAddress3 = "no";
24
+ shippingAddress.city = "Chicago";
25
+ shippingAddress.postalCode = "5001";
26
+ shippingAddress.state = "IL";
27
+ shippingAddress.country = "US";
28
+ const alipayConfig = BaseGpApiTestConfig_1.BaseGpApiTestConfig.gpApiSetupConfig(src_1.Channel.CardNotPresent);
29
+ alipayConfig.appId = "QzFNaCAVCSH4tELLYz5iReERAJ3mqHu7";
30
+ alipayConfig.appKey = "0QCyAwox3nRufZhX";
31
+ alipayConfig.accessTokenInfo = new src_1.AccessTokenInfo();
32
+ alipayConfig.accessTokenInfo.transactionProcessingAccountID =
33
+ "TRA_c7fdc03bc9354fd3b674dddb22583553";
34
+ src_1.ServicesContainer.configureService(alipayConfig, "alipayConfig");
35
+ };
36
+ beforeAll(() => {
37
+ setup();
38
+ });
39
+ const wait = (ms) => {
40
+ return new Promise((resolve) => setTimeout(resolve, ms));
41
+ };
42
+ // skipped due to human intervention - perform payment in the browser via logged url in the console
43
+ test.skip("paypal charge - full cycle", async () => {
44
+ const response = await paymentMethod
45
+ .charge(1.34)
46
+ .withCurrency(currency)
47
+ .withDescription("New APM")
48
+ .execute();
49
+ expect(response).toBeTruthy();
50
+ expect(response.responseCode).toBe("SUCCESS");
51
+ expect(response.responseMessage).toBe(src_1.TransactionStatus.INITIATED);
52
+ console.log(response.alternativePaymentResponse?.redirectUrl);
53
+ await wait(25000);
54
+ const startDate = new Date();
55
+ const report = await src_1.ReportingService.findTransactionsPaged(1, 1)
56
+ .withTransactionId(response.transactionId)
57
+ .where(src_1.SearchCriteria.StartDate, startDate)
58
+ .andWith(src_1.SearchCriteria.EndDate, startDate)
59
+ .execute();
60
+ expect(report).toBeTruthy();
61
+ expect(report.result.length > 0).toBe(true);
62
+ const transactionSummary = report.result.pop();
63
+ expect(transactionSummary.alternativePaymentResponse instanceof
64
+ src_1.AlternativePaymentResponse).toBe(true);
65
+ expect(transactionSummary.alternativePaymentResponse.providerName).toBe(src_1.AlternativePaymentType.Paypal);
66
+ expect(transactionSummary.transactionStatus).toBe(src_1.TransactionStatus.PENDING);
67
+ expect(transactionSummary.alternativePaymentResponse.providerReference).toBeTruthy();
68
+ const transaction = await src_1.Transaction.fromId(transactionSummary.transactionId, src_1.PaymentMethodType.APM);
69
+ transaction.alternativePaymentResponse =
70
+ transactionSummary.alternativePaymentResponse;
71
+ const confirmResponse = await transaction.confirm().execute();
72
+ expect(confirmResponse).toBeTruthy();
73
+ expect(confirmResponse.responseCode).toBe("SUCCESS");
74
+ expect(confirmResponse.responseMessage).toBe(src_1.TransactionStatus.CAPTURED);
75
+ });
76
+ // skipped due to human intervention - perform payment in the browser via logged url in the console
77
+ test.skip("paypal capture - full cycle", async () => {
78
+ const response = await paymentMethod
79
+ .authorize(1.34)
80
+ .withCurrency(currency)
81
+ .withDescription("New APM")
82
+ .execute();
83
+ expect(response).toBeTruthy();
84
+ expect(response.responseCode).toBe("SUCCESS");
85
+ expect(response.responseMessage).toBe(src_1.TransactionStatus.INITIATED);
86
+ console.log(response.alternativePaymentResponse?.redirectUrl);
87
+ await wait(25000);
88
+ const startDate = new Date();
89
+ const report = await src_1.ReportingService.findTransactionsPaged(1, 1)
90
+ .withTransactionId(response.transactionId)
91
+ .where(src_1.SearchCriteria.StartDate, startDate)
92
+ .andWith(src_1.SearchCriteria.EndDate, startDate)
93
+ .execute();
94
+ expect(report).toBeTruthy();
95
+ expect(report.result.length > 0).toBe(true);
96
+ const transactionSummary = report.result.pop();
97
+ expect(transactionSummary.transactionId).toBeTruthy();
98
+ expect(transactionSummary.alternativePaymentResponse instanceof
99
+ src_1.AlternativePaymentResponse).toBe(true);
100
+ expect(transactionSummary.alternativePaymentResponse.providerName).toBe(src_1.AlternativePaymentType.Paypal);
101
+ expect(transactionSummary.transactionStatus).toBe(src_1.TransactionStatus.PENDING);
102
+ expect(transactionSummary.alternativePaymentResponse.providerReference).toBeTruthy();
103
+ const transaction = await src_1.Transaction.fromId(transactionSummary.transactionId, src_1.PaymentMethodType.APM);
104
+ transaction.alternativePaymentResponse =
105
+ transactionSummary.alternativePaymentResponse;
106
+ const confirmResponse = await transaction.confirm().execute();
107
+ expect(confirmResponse).toBeTruthy();
108
+ expect(confirmResponse.responseCode).toBe("SUCCESS");
109
+ expect(confirmResponse.responseMessage).toBe(src_1.TransactionStatus.PREAUTHORIZED);
110
+ const capture = await transaction.capture().execute();
111
+ expect(capture).toBeTruthy();
112
+ expect(capture.responseCode).toBe("SUCCESS");
113
+ expect(capture.responseMessage).toBe(src_1.TransactionStatus.CAPTURED);
114
+ });
115
+ // skipped due to human intervention - perform payment in the browser via logged url in the console
116
+ test.skip("paypal refund - full cycle", async () => {
117
+ const response = await paymentMethod
118
+ .charge(1.22)
119
+ .withCurrency(currency)
120
+ .withDescription("New APM")
121
+ .execute();
122
+ expect(response).toBeTruthy();
123
+ expect(response.responseCode).toBe("SUCCESS");
124
+ expect(response.responseMessage).toBe(src_1.TransactionStatus.INITIATED);
125
+ console.log(response.alternativePaymentResponse?.redirectUrl);
126
+ await wait(25000);
127
+ const startDate = new Date();
128
+ const report = await src_1.ReportingService.findTransactionsPaged(1, 1)
129
+ .withTransactionId(response.transactionId)
130
+ .where(src_1.SearchCriteria.StartDate, startDate)
131
+ .andWith(src_1.SearchCriteria.EndDate, startDate)
132
+ .execute();
133
+ expect(report).toBeTruthy();
134
+ expect(report.result.length > 0).toBe(true);
135
+ const transactionSummary = report.result.pop();
136
+ expect(transactionSummary.transactionId).toBeTruthy();
137
+ expect(transactionSummary.alternativePaymentResponse instanceof
138
+ src_1.AlternativePaymentResponse).toBe(true);
139
+ expect(transactionSummary.alternativePaymentResponse.providerName).toBe(src_1.AlternativePaymentType.Paypal);
140
+ expect(transactionSummary.transactionStatus).toBe(src_1.TransactionStatus.PENDING);
141
+ expect(transactionSummary.alternativePaymentResponse.providerReference).toBeTruthy();
142
+ const transaction = await src_1.Transaction.fromId(transactionSummary.transactionId, src_1.PaymentMethodType.APM);
143
+ transaction.alternativePaymentResponse =
144
+ transactionSummary.alternativePaymentResponse;
145
+ const confirmResponse = await transaction.confirm().execute();
146
+ expect(confirmResponse).toBeTruthy();
147
+ expect(confirmResponse.responseCode).toBe("SUCCESS");
148
+ expect(confirmResponse.responseMessage).toBe(src_1.TransactionStatus.CAPTURED);
149
+ const refund = await transaction.refund().withCurrency(currency).execute();
150
+ expect(refund).toBeTruthy();
151
+ expect(refund.responseCode).toBe("SUCCESS");
152
+ expect(refund.responseMessage).toBe(src_1.TransactionStatus.CAPTURED);
153
+ });
154
+ // skipped due to human intervention - perform payment in the browser via logged url in the console
155
+ // problems with the API
156
+ test.skip("paypal reverse - full cycle", async () => {
157
+ const response = await paymentMethod
158
+ .charge(1.22)
159
+ .withCurrency(currency)
160
+ .withDescription("New APM")
161
+ .execute();
162
+ expect(response).toBeTruthy();
163
+ expect(response.responseCode).toBe("SUCCESS");
164
+ expect(response.responseMessage).toBe(src_1.TransactionStatus.INITIATED);
165
+ console.log(response.alternativePaymentResponse?.redirectUrl);
166
+ await wait(25000);
167
+ const startDate = new Date();
168
+ const report = await src_1.ReportingService.findTransactionsPaged(1, 1)
169
+ .withTransactionId(response.transactionId)
170
+ .where(src_1.SearchCriteria.StartDate, startDate)
171
+ .andWith(src_1.SearchCriteria.EndDate, startDate)
172
+ .execute();
173
+ expect(report).toBeTruthy();
174
+ expect(report.result.length > 0).toBe(true);
175
+ const transactionSummary = report.result.pop();
176
+ expect(transactionSummary.transactionId).toBeTruthy();
177
+ expect(transactionSummary.alternativePaymentResponse instanceof
178
+ src_1.AlternativePaymentResponse).toBe(true);
179
+ expect(transactionSummary.alternativePaymentResponse.providerName).toBe(src_1.AlternativePaymentType.Paypal);
180
+ expect(transactionSummary.transactionStatus).toBe(src_1.TransactionStatus.PENDING);
181
+ expect(transactionSummary.alternativePaymentResponse.providerReference).toBeTruthy();
182
+ const transaction = await src_1.Transaction.fromId(transactionSummary.transactionId, src_1.PaymentMethodType.APM);
183
+ transaction.alternativePaymentResponse =
184
+ transactionSummary.alternativePaymentResponse;
185
+ const confirmResponse = await transaction.confirm().execute();
186
+ expect(confirmResponse).toBeTruthy();
187
+ expect(confirmResponse.responseCode).toBe("SUCCESS");
188
+ expect(confirmResponse.responseMessage).toBe(src_1.TransactionStatus.CAPTURED);
189
+ const reverse = await transaction.reverse().withCurrency().execute();
190
+ expect(reverse).toBeTruthy();
191
+ expect(reverse.responseCode).toBe("SUCCESS");
192
+ expect(reverse.responseMessage).toBe(src_1.TransactionStatus.REVERSED);
193
+ });
194
+ // skipped due to human intervention - perform payment in the browser via logged url in the console
195
+ test.skip("paypal multicapture - full cycle", async () => {
196
+ const response = await paymentMethod
197
+ .authorize(3)
198
+ .withCurrency(currency)
199
+ .withMultiCapture(true)
200
+ .withDescription("New APM")
201
+ .execute();
202
+ expect(response).toBeTruthy();
203
+ expect(response.responseCode).toBe("SUCCESS");
204
+ expect(response.responseMessage).toBe(src_1.TransactionStatus.INITIATED);
205
+ console.log(response.alternativePaymentResponse?.redirectUrl);
206
+ await wait(25000);
207
+ const startDate = new Date();
208
+ const report = await src_1.ReportingService.findTransactionsPaged(1, 1)
209
+ .withTransactionId(response.transactionId)
210
+ .where(src_1.SearchCriteria.StartDate, startDate)
211
+ .andWith(src_1.SearchCriteria.EndDate, startDate)
212
+ .execute();
213
+ expect(report).toBeTruthy();
214
+ expect(report.result.length > 0).toBe(true);
215
+ const transactionSummary = report.result.pop();
216
+ expect(transactionSummary.transactionId).toBeTruthy();
217
+ expect(transactionSummary.alternativePaymentResponse instanceof
218
+ src_1.AlternativePaymentResponse).toBe(true);
219
+ expect(transactionSummary.alternativePaymentResponse.providerName).toBe(src_1.AlternativePaymentType.Paypal);
220
+ expect(transactionSummary.transactionStatus).toBe(src_1.TransactionStatus.PENDING);
221
+ expect(transactionSummary.alternativePaymentResponse.providerReference).toBeTruthy();
222
+ const transaction = await src_1.Transaction.fromId(transactionSummary.transactionId, src_1.PaymentMethodType.APM);
223
+ transaction.alternativePaymentResponse =
224
+ transactionSummary.alternativePaymentResponse;
225
+ const confirmResponse = await transaction.confirm().execute();
226
+ expect(confirmResponse).toBeTruthy();
227
+ expect(confirmResponse.responseCode).toBe("SUCCESS");
228
+ expect(confirmResponse.responseMessage).toBe(src_1.TransactionStatus.PREAUTHORIZED);
229
+ const capture1 = await transaction.capture(1).execute();
230
+ expect(capture1).toBeTruthy();
231
+ expect(capture1.responseCode).toBe("SUCCESS");
232
+ expect(capture1.responseMessage).toBe(src_1.TransactionStatus.CAPTURED);
233
+ const capture2 = await transaction.capture(2).execute();
234
+ expect(capture2).toBeTruthy();
235
+ expect(capture2.responseCode).toBe("SUCCESS");
236
+ expect(capture2.responseMessage).toBe(src_1.TransactionStatus.CAPTURED);
237
+ });
238
+ test("paypal charge without confirmation", async () => {
239
+ const products = [
240
+ {
241
+ reference: "SKU251584",
242
+ label: "Magazine Subscription",
243
+ description: "Product description 1",
244
+ quantity: "1",
245
+ unit_amount: "7",
246
+ unit_currency: currency,
247
+ tax_amount: "0.5",
248
+ },
249
+ {
250
+ reference: "SKU8884784",
251
+ label: "Charger",
252
+ description: "Product description 2",
253
+ quantity: "2",
254
+ unit_amount: "6",
255
+ unit_currency: currency,
256
+ tax_amount: "0.5",
257
+ },
258
+ ];
259
+ const order = new src_1.OrderDetails();
260
+ order.insuranceAmount = 10;
261
+ order.handlingAmount = 2;
262
+ order.hasInsurance = true;
263
+ order.description = "Order description";
264
+ const response = await paymentMethod
265
+ .charge(29)
266
+ .withCurrency(currency)
267
+ .withDescription("New Apm Uplift")
268
+ .withAddress(shippingAddress, src_1.AddressType.Shipping)
269
+ .withCustomerId("PYR_6278c861f6e34e1fb2949f272ced0aa9")
270
+ .withProductData(products)
271
+ .withPhoneNumber("44", "124 445 556", src_1.PhoneNumberType.WORK)
272
+ .withPhoneNumber("44", "124 444 333", src_1.PhoneNumberType.HOME)
273
+ .withPhoneNumber("1", "258 3697 133", src_1.PhoneNumberType.SHIPPING)
274
+ .withOrderId(src_1.GenerationUtils.generateOrderId())
275
+ .withShippingAmount(3)
276
+ .withOrderDetails(order)
277
+ .execute();
278
+ expect(response).toBeTruthy();
279
+ expect(response.responseCode).toBe("SUCCESS");
280
+ expect(response.responseMessage).toBe(src_1.TransactionStatus.INITIATED);
281
+ expect(response?.alternativePaymentResponse?.redirectUrl).toBeTruthy();
282
+ });
283
+ test("APM pending transaction", async () => {
284
+ const paymentMethod = new src_1.AlternativePaymentMethod(src_1.AlternativePaymentType.TestPay);
285
+ paymentMethod.returnUrl = "https://example.com/returnUrl";
286
+ paymentMethod.statusUpdateUrl = "https://example.com/statusUpdateUrl";
287
+ paymentMethod.cancelUrl = "https://example.com/cancelUrl";
288
+ paymentMethod.country = "GB";
289
+ paymentMethod.accountHolderName = "Jane Doe";
290
+ const response = await paymentMethod
291
+ .charge(19.99)
292
+ .withCurrency("EUR")
293
+ .withClientTransactionId("APM-20200417")
294
+ .execute();
295
+ expect(response).toBeTruthy();
296
+ expect(response.responseCode).toBe("SUCCESS");
297
+ expect(response.responseMessage).toBe(src_1.TransactionStatus.INITIATED);
298
+ expect(response.alternativePaymentResponse?.redirectUrl).toBeTruthy();
299
+ expect(response.alternativePaymentResponse?.providerName).toBe(src_1.AlternativePaymentType.TestPay);
300
+ });
301
+ test("ali pay", async () => {
302
+ const paymentMethod = new src_1.AlternativePaymentMethod(src_1.AlternativePaymentType.Alipay);
303
+ paymentMethod.returnUrl = "https://example.com/returnUrl";
304
+ paymentMethod.statusUpdateUrl = "https://example.com/statusUrl";
305
+ paymentMethod.country = "US";
306
+ paymentMethod.accountHolderName = "Jane Doe";
307
+ const response = await paymentMethod
308
+ .charge(19.99)
309
+ .withCurrency("HKD")
310
+ .withMerchantCategory(src_1.MerchantCategory.Other)
311
+ .execute("alipayConfig");
312
+ expect(response).toBeTruthy();
313
+ expect(response.responseCode).toBe("SUCCESS");
314
+ expect(response.responseMessage).toBe(src_1.TransactionStatus.INITIATED);
315
+ expect(response.alternativePaymentResponse?.redirectUrl).toBeTruthy();
316
+ expect(response.alternativePaymentResponse?.providerName.toLowerCase()).toBe(src_1.AlternativePaymentType.Alipay);
317
+ });
318
+ test("ali pay - missing return url", async () => {
319
+ const paymentMethod = new src_1.AlternativePaymentMethod(src_1.AlternativePaymentType.Alipay);
320
+ paymentMethod.statusUpdateUrl = "https://example.com/statusUpdateUrl";
321
+ paymentMethod.country = "US";
322
+ paymentMethod.accountHolderName = "Jane Doe";
323
+ try {
324
+ await paymentMethod
325
+ .charge(19.0)
326
+ .withCurrency("HKD")
327
+ .withMerchantCategory(src_1.MerchantCategory.Other)
328
+ .execute();
329
+ }
330
+ catch (e) {
331
+ expect(e instanceof src_1.BuilderError).toBe(true);
332
+ expect(e.message.includes("returnUrl cannot be null for this transaction type.")).toBe(true);
333
+ }
334
+ });
335
+ test("ali pay - missing status url", async () => {
336
+ const paymentMethod = new src_1.AlternativePaymentMethod(src_1.AlternativePaymentType.Alipay);
337
+ paymentMethod.returnUrl = "https://example.com/returnUrl";
338
+ paymentMethod.country = "US";
339
+ paymentMethod.accountHolderName = "Jane Doe";
340
+ try {
341
+ await paymentMethod
342
+ .charge(19.0)
343
+ .withCurrency("HKD")
344
+ .withMerchantCategory(src_1.MerchantCategory.Other)
345
+ .execute();
346
+ }
347
+ catch (e) {
348
+ expect(e instanceof src_1.BuilderError).toBe(true);
349
+ expect(e.message.includes("statusUpdateUrl cannot be null for this transaction type.")).toBe(true);
350
+ }
351
+ });
352
+ test("ali pay - missing country", async () => {
353
+ const paymentMethod = new src_1.AlternativePaymentMethod(src_1.AlternativePaymentType.Alipay);
354
+ paymentMethod.returnUrl = "https://example.com/returnUrl";
355
+ paymentMethod.statusUpdateUrl = "https://example.com/statusUpdateUrl";
356
+ paymentMethod.accountHolderName = "Jane Doe";
357
+ try {
358
+ await paymentMethod
359
+ .charge(19.0)
360
+ .withCurrency("HKD")
361
+ .withMerchantCategory(src_1.MerchantCategory.Other)
362
+ .execute();
363
+ }
364
+ catch (e) {
365
+ expect(e instanceof src_1.BuilderError).toBe(true);
366
+ expect(e.message.includes("country cannot be null for this transaction type.")).toBe(true);
367
+ }
368
+ });
369
+ test("ali pay - missing account holder name", async () => {
370
+ const paymentMethod = new src_1.AlternativePaymentMethod(src_1.AlternativePaymentType.Alipay);
371
+ paymentMethod.returnUrl = "https://example.com/returnUrl";
372
+ paymentMethod.statusUpdateUrl = "https://example.com/statusUpdateUrl";
373
+ paymentMethod.country = "US";
374
+ try {
375
+ await paymentMethod
376
+ .charge(19.0)
377
+ .withCurrency("HKD")
378
+ .withMerchantCategory(src_1.MerchantCategory.Other)
379
+ .execute();
380
+ }
381
+ catch (e) {
382
+ expect(e instanceof src_1.BuilderError).toBe(true);
383
+ expect(e.message.includes("accountHolderName cannot be null for this transaction type.")).toBe(true);
384
+ }
385
+ });
386
+ test("ali pay - missing currency", async () => {
387
+ const paymentMethod = new src_1.AlternativePaymentMethod(src_1.AlternativePaymentType.Alipay);
388
+ paymentMethod.returnUrl = "https://example.com/returnUrl";
389
+ paymentMethod.statusUpdateUrl = "https://example.com/statusUpdateUrl";
390
+ paymentMethod.country = "US";
391
+ paymentMethod.accountHolderName = "Jane Doe";
392
+ try {
393
+ await paymentMethod
394
+ .charge(19.0)
395
+ .withMerchantCategory(src_1.MerchantCategory.Other)
396
+ .execute();
397
+ }
398
+ catch (e) {
399
+ expect(e instanceof src_1.BuilderError).toBe(true);
400
+ expect(e.message.includes("currency cannot be null for this transaction type.")).toBe(true);
401
+ }
402
+ });
403
+ test("ali pay - missing merchant category", async () => {
404
+ const paymentMethod = new src_1.AlternativePaymentMethod(src_1.AlternativePaymentType.Alipay);
405
+ paymentMethod.returnUrl = "https://example.com/returnUrl";
406
+ paymentMethod.statusUpdateUrl = "https://example.com/statusUpdateUrl";
407
+ paymentMethod.country = "US";
408
+ paymentMethod.accountHolderName = "Jane Doe";
409
+ try {
410
+ await paymentMethod
411
+ .charge(19.0)
412
+ .withCurrency("HKD")
413
+ .execute("alipayConfig");
414
+ }
415
+ catch (e) {
416
+ expect(e instanceof src_1.GatewayError).toBe(true);
417
+ expect(e.message).toBe("Status Code: MANDATORY_DATA_MISSING - Request expects the following fields merchant_category");
418
+ expect(e.responseCode).toBe("40005");
419
+ }
420
+ });
421
+ afterAll(() => {
422
+ BaseGpApiTestConfig_1.BaseGpApiTestConfig.resetGpApiConfig();
423
+ src_1.ServicesContainer.removeConfiguration("alipayConfig");
424
+ });
425
+ //# sourceMappingURL=Apm.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Apm.test.js","sourceRoot":"","sources":["../../../../../test/Integration/Gateways/GpApiConnector/Apm.test.ts"],"names":[],"mappings":"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"}