@fat-zebra/sdk 1.4.14 → 1.5.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 (172) hide show
  1. package/.idea/fatzebra-js.iml +12 -0
  2. package/.idea/modules.xml +8 -0
  3. package/.idea/vcs.xml +6 -0
  4. package/CHANGELOG.md +13 -0
  5. package/README.dev.md +1 -14
  6. package/build-styles.js +12 -0
  7. package/dist/click_to_pay/index.d.ts +1 -1
  8. package/dist/click_to_pay/index.js +45 -1
  9. package/dist/fatzebra.css +91 -0
  10. package/dist/hpp/hpp.js +1 -3
  11. package/dist/local/fatzebra.js +18266 -0
  12. package/dist/local/fatzebra.js.map +1 -1
  13. package/dist/main.d.ts +2 -2
  14. package/dist/main.js +7 -21
  15. package/dist/react/VerifyCard.d.ts +2 -2
  16. package/dist/react/VerifyCard.js +4 -4
  17. package/dist/react/VerifyExistingCard.d.ts +10 -0
  18. package/dist/react/VerifyExistingCard.js +12 -0
  19. package/dist/react/index.d.ts +2 -1
  20. package/dist/react/index.js +2 -1
  21. package/dist/react/useFatZebra.d.ts +4 -2
  22. package/dist/react/useFatZebra.js +7 -7
  23. package/dist/react/verifyUrl.d.ts +8 -0
  24. package/dist/react/verifyUrl.js +22 -0
  25. package/dist/sca/cardinal.d.ts +11 -10
  26. package/dist/sca/cardinal.js +29 -8
  27. package/dist/sca/index.d.ts +3 -0
  28. package/dist/sca/index.js +53 -48
  29. package/dist/sca/types.d.ts +2 -2
  30. package/dist/shared/api-gateway-client.d.ts +4 -10
  31. package/dist/shared/api-gateway-client.js +12 -38
  32. package/dist/shared/env.d.ts +4 -0
  33. package/dist/shared/env.js +4 -0
  34. package/dist/shared/event-manager.d.ts +3 -1
  35. package/dist/shared/event-manager.js +7 -1
  36. package/dist/shared/post-message-client.d.ts +1 -0
  37. package/dist/shared/post-message-client.js +8 -13
  38. package/dist/shared/types.d.ts +8 -20
  39. package/dist/shared/types.js +4 -15
  40. package/dist/staging/fatzebra.css +91 -0
  41. package/dist/staging/fatzebra.js +18265 -0
  42. package/dist/staging/fatzebra.js.map +1 -0
  43. package/dist/staging/index.html +247 -0
  44. package/dist/validation/schemas/hpp-options.json +45 -93
  45. package/package.json +6 -7
  46. package/dist/production/fatzebra.js.LICENSE.txt +0 -1
  47. package/dist/src/applepay/applepay.js +0 -198
  48. package/dist/src/applepay/applepay.js.map +0 -1
  49. package/dist/src/applepay/clients/apple-pay-client.js +0 -66
  50. package/dist/src/applepay/clients/apple-pay-client.js.map +0 -1
  51. package/dist/src/applepay/clients/paynow-client.js +0 -96
  52. package/dist/src/applepay/clients/paynow-client.js.map +0 -1
  53. package/dist/src/applepay/index.js +0 -6
  54. package/dist/src/applepay/index.js.map +0 -1
  55. package/dist/src/click_to_pay/index.js +0 -88
  56. package/dist/src/click_to_pay/index.js.map +0 -1
  57. package/dist/src/click_to_pay/types.js +0 -3
  58. package/dist/src/click_to_pay/types.js.map +0 -1
  59. package/dist/src/hpp/hpp.js +0 -230
  60. package/dist/src/hpp/hpp.js.map +0 -1
  61. package/dist/src/hpp/hpp.test.js +0 -135
  62. package/dist/src/hpp/hpp.test.js.map +0 -1
  63. package/dist/src/hpp/index.js +0 -6
  64. package/dist/src/hpp/index.js.map +0 -1
  65. package/dist/src/index.js +0 -14
  66. package/dist/src/index.js.map +0 -1
  67. package/dist/src/main.js +0 -243
  68. package/dist/src/main.js.map +0 -1
  69. package/dist/src/main.test.js +0 -236
  70. package/dist/src/main.test.js.map +0 -1
  71. package/dist/src/paypal/paypal-button.js +0 -311
  72. package/dist/src/paypal/paypal-button.js.map +0 -1
  73. package/dist/src/paypal/paypal-button.test.js +0 -41
  74. package/dist/src/paypal/paypal-button.test.js.map +0 -1
  75. package/dist/src/paypal/paypal-checkout.js +0 -111
  76. package/dist/src/paypal/paypal-checkout.js.map +0 -1
  77. package/dist/src/paypal/paypal-checkout.test.js +0 -167
  78. package/dist/src/paypal/paypal-checkout.test.js.map +0 -1
  79. package/dist/src/paypal/types.js +0 -9
  80. package/dist/src/paypal/types.js.map +0 -1
  81. package/dist/src/paypal/validation.js +0 -73
  82. package/dist/src/paypal/validation.js.map +0 -1
  83. package/dist/src/react/VerifyCard.js +0 -29
  84. package/dist/src/react/VerifyCard.js.map +0 -1
  85. package/dist/src/react/index.js +0 -11
  86. package/dist/src/react/index.js.map +0 -1
  87. package/dist/src/react/submitForm.js +0 -13
  88. package/dist/src/react/submitForm.js.map +0 -1
  89. package/dist/src/react/url.js +0 -60
  90. package/dist/src/react/url.js.map +0 -1
  91. package/dist/src/react/url.test.js +0 -88
  92. package/dist/src/react/url.test.js.map +0 -1
  93. package/dist/src/react/useFatZebra.js +0 -119
  94. package/dist/src/react/useFatZebra.js.map +0 -1
  95. package/dist/src/sca/cardinal.js +0 -110
  96. package/dist/src/sca/cardinal.js.map +0 -1
  97. package/dist/src/sca/eci-mappings.js +0 -63
  98. package/dist/src/sca/eci-mappings.js.map +0 -1
  99. package/dist/src/sca/eci-mappings.test.js +0 -31
  100. package/dist/src/sca/eci-mappings.test.js.map +0 -1
  101. package/dist/src/sca/index.js +0 -363
  102. package/dist/src/sca/index.js.map +0 -1
  103. package/dist/src/sca/index.test.js +0 -620
  104. package/dist/src/sca/index.test.js.map +0 -1
  105. package/dist/src/sca/scenarios/enrollment.js +0 -161
  106. package/dist/src/sca/scenarios/enrollment.js.map +0 -1
  107. package/dist/src/sca/scenarios/index.js +0 -8
  108. package/dist/src/sca/scenarios/index.js.map +0 -1
  109. package/dist/src/sca/scenarios/validation.js +0 -139
  110. package/dist/src/sca/scenarios/validation.js.map +0 -1
  111. package/dist/src/sca/types.js +0 -57
  112. package/dist/src/sca/types.js.map +0 -1
  113. package/dist/src/shared/api-gateway-client.js +0 -184
  114. package/dist/src/shared/api-gateway-client.js.map +0 -1
  115. package/dist/src/shared/bridge-client.js +0 -24
  116. package/dist/src/shared/bridge-client.js.map +0 -1
  117. package/dist/src/shared/constants.js +0 -19
  118. package/dist/src/shared/constants.js.map +0 -1
  119. package/dist/src/shared/env.development.js +0 -12
  120. package/dist/src/shared/env.development.js.map +0 -1
  121. package/dist/src/shared/env.js +0 -46
  122. package/dist/src/shared/env.js.map +0 -1
  123. package/dist/src/shared/envs/local.js +0 -12
  124. package/dist/src/shared/envs/local.js.map +0 -1
  125. package/dist/src/shared/envs/production.js +0 -12
  126. package/dist/src/shared/envs/production.js.map +0 -1
  127. package/dist/src/shared/envs/sandbox.js +0 -12
  128. package/dist/src/shared/envs/sandbox.js.map +0 -1
  129. package/dist/src/shared/envs/staging.js +0 -12
  130. package/dist/src/shared/envs/staging.js.map +0 -1
  131. package/dist/src/shared/event-manager.js +0 -14
  132. package/dist/src/shared/event-manager.js.map +0 -1
  133. package/dist/src/shared/post-message-client.js +0 -107
  134. package/dist/src/shared/post-message-client.js.map +0 -1
  135. package/dist/src/shared/post-message-client.test.js +0 -58
  136. package/dist/src/shared/post-message-client.test.js.map +0 -1
  137. package/dist/src/shared/types.js +0 -47
  138. package/dist/src/shared/types.js.map +0 -1
  139. package/dist/src/shared/types.test.js +0 -55
  140. package/dist/src/shared/types.test.js.map +0 -1
  141. package/dist/src/shared/util.js +0 -96
  142. package/dist/src/shared/util.js.map +0 -1
  143. package/dist/src/shared/util.test.js +0 -148
  144. package/dist/src/shared/util.test.js.map +0 -1
  145. package/dist/src/validation/index.js +0 -12
  146. package/dist/src/validation/index.js.map +0 -1
  147. package/dist/src/validation/schemas/click-to-pay/load-params.json +0 -34
  148. package/dist/src/validation/schemas/click-to-pay/options.json +0 -23
  149. package/dist/src/validation/schemas/click-to-pay/payment-intent.json +0 -42
  150. package/dist/src/validation/schemas/customer.json +0 -38
  151. package/dist/src/validation/schemas/hpp-load-params.json +0 -40
  152. package/dist/src/validation/schemas/hpp-options.json +0 -48
  153. package/dist/src/validation/schemas/payment-intent.json +0 -48
  154. package/dist/src/validation/schemas/payment-method.json +0 -83
  155. package/dist/src/validation/schemas/verify-card-options.json +0 -15
  156. package/dist/src/validation/schemas/verify-card-params.json +0 -24
  157. package/dist/src/validation/validation-helper.js +0 -10
  158. package/dist/src/validation/validation-helper.js.map +0 -1
  159. package/dist/src/validation/validation-helper.test.js +0 -34
  160. package/dist/src/validation/validation-helper.test.js.map +0 -1
  161. package/dist/src/validation/validators/click-to-pay-load-params-validator.js +0 -19
  162. package/dist/src/validation/validators/click-to-pay-load-params-validator.js.map +0 -1
  163. package/dist/src/validation/validators/hpp-load-params-validator.js +0 -21
  164. package/dist/src/validation/validators/hpp-load-params-validator.js.map +0 -1
  165. package/dist/src/validation/validators/hpp-load-params-validator.test.js +0 -56
  166. package/dist/src/validation/validators/hpp-load-params-validator.test.js.map +0 -1
  167. package/dist/src/validation/validators/verify-card-params-validator.js +0 -23
  168. package/dist/src/validation/validators/verify-card-params-validator.js.map +0 -1
  169. package/dist/tests/helpers/api-gateway-mock.js +0 -37
  170. package/dist/tests/helpers/api-gateway-mock.js.map +0 -1
  171. /package/dist/react/{url.d.ts → paymentUrl.d.ts} +0 -0
  172. /package/dist/react/{url.js → paymentUrl.js} +0 -0
@@ -7,25 +7,20 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- import { NODE_ENV } from '../shared/types';
11
- import env from './env';
12
- const domain = process.env.PAYNOW_BASE_URL;
13
- // NODE_ENV is introduced to PostMessageClient purely for the purpose of bypassing security
14
- // check on the postMessage event between parent and child frames. Unforunately there is
15
- // no workaround to override event origin due to lack of support in existing test framework.
10
+ import env, { Environment } from "./env";
16
11
  class PostMessageClient {
17
12
  constructor(config) {
18
13
  this.channel = config.channel;
19
- this.fzEnv = process.env.NODE_ENV;
14
+ this.fzEnv = process.env.API_ENV;
15
+ this.domain = env[this.fzEnv].payNowUrl;
20
16
  this.target = config.target;
21
- this.domain = env[this.fzEnv];
22
17
  }
23
18
  // Handle event messages that conform to PostMessage format.
24
19
  setEventListeners(handlers) {
25
20
  window.addEventListener("message", (event) => __awaiter(this, void 0, void 0, function* () {
26
- const validationEnabled = ![NODE_ENV.TEST, NODE_ENV.LOCALDEV].includes(this.fzEnv);
21
+ const validationEnabled = ![Environment.test, Environment.local, Environment.development].includes(this.fzEnv);
27
22
  const isChannelValid = event.data.channel === this.channel;
28
- const isOriginValid = event.origin === domain;
23
+ const isOriginValid = event.origin === this.domain;
29
24
  if (validationEnabled && (!isOriginValid || !isChannelValid)) {
30
25
  console.log('[WARNING] unmatched event origin or incorrect message channel');
31
26
  return;
@@ -46,8 +41,8 @@ class PostMessageClient {
46
41
  // Handle event messages that do not conform to PostMessage format.
47
42
  setEventListenersLegacy(handlers) {
48
43
  window.addEventListener("message", (event) => {
49
- const validationEnabled = ![NODE_ENV.TEST, NODE_ENV.LOCALDEV].includes(this.fzEnv);
50
- const isOriginValid = event.origin === domain;
44
+ const validationEnabled = ![Environment.test, Environment.local, Environment.development].includes(this.fzEnv);
45
+ const isOriginValid = event.origin === this.domain;
51
46
  if (validationEnabled && !isOriginValid) {
52
47
  console.log('[WARNING] unmatched event origin or incorrect message channel');
53
48
  return;
@@ -65,7 +60,7 @@ class PostMessageClient {
65
60
  });
66
61
  }
67
62
  send(message) {
68
- this.target.contentWindow.postMessage(message, domain);
63
+ this.target.contentWindow.postMessage(message, this.domain);
69
64
  }
70
65
  }
71
66
  export { PostMessageClient, };
@@ -1,12 +1,4 @@
1
- import { PayPalPaymentMethod } from '../paypal/types';
2
1
  import { Environment } from './env';
3
- declare enum NODE_ENV {
4
- LOCALDEV = "localdev",
5
- PRODUCTION = "production",
6
- SANDBOX = "sandbox",
7
- STAGING = "staging",
8
- TEST = "test"
9
- }
10
2
  declare enum PublicEvent {
11
3
  FORM_VALIDATION_ERROR = "fz.form_validation.error",
12
4
  FORM_VALIDATION_SUCCESS = "fz.form_validation.success",
@@ -17,11 +9,9 @@ declare enum PublicEvent {
17
9
  TOKENIZATION_ERROR = "fz.tokenization.error",
18
10
  PAYMENT_SUCCESS = "fz.payment.success",
19
11
  PAYMENT_ERROR = "fz.payment.error",
20
- PAYPAL_CANCEL = "fz.paypal.cancel",
21
- PAYPAL_SUCCESS = "fz.paypal.success",
22
- PAYPAL_ERROR = "fz.paypal.error",
23
- PAYPAL_PROCESSESING = "fz.paypal.processing",
24
- BIN_LOOKUP = "fz.bin.lookup"
12
+ BIN_LOOKUP = "fz.bin.lookup",
13
+ CLICK_TO_PAY_TOKENIZATION_SUCCESS = "fz.click_to_pay.tokenization.success",
14
+ CLICK_TO_PAY_TOKENIZATION_ERROR = "fz.click_to_pay.tokenization.error"
25
15
  }
26
16
  declare enum BridgeEvent {
27
17
  TOKENIZE_CARD_REQUEST = "fzi.tc_req",
@@ -31,13 +21,12 @@ declare enum BridgeEvent {
31
21
  TRIGGER_PAYNOW_BUTTON = "fzi.pn_btn",
32
22
  FORM_VALIDATION_ERROR = "fzi.form_validation_error",
33
23
  FORM_VALIDATION_SUCCESS = "fzi.form_validation_success",
34
- BIN_LOOKUP = "fzi.bin_lookup"
24
+ BIN_LOOKUP = "fzi.bin_lookup",
25
+ CLICK_TO_PAY_TOKENIZATION = "fzi.c2p.tc_res"
35
26
  }
36
27
  declare enum PaymentMethodType {
37
28
  CARD = "card",
38
- CARD_ON_FILE = "card_on_file",
39
- PAYPAL_ORDER = "paypal_order",
40
- PAYPAL_BILLING = "paypal_billing"
29
+ CARD_ON_FILE = "card_on_file"
41
30
  }
42
31
  interface Card {
43
32
  number: string;
@@ -81,7 +70,7 @@ interface PaymentIntent {
81
70
  }
82
71
  interface PaymentMethod {
83
72
  type?: PaymentMethodType;
84
- data: Card | CardOnFile | PayPalPaymentMethod;
73
+ data: Card | CardOnFile;
85
74
  }
86
75
  interface ValidationResult {
87
76
  valid: boolean;
@@ -112,7 +101,6 @@ declare global {
112
101
  ApplePaySession: any;
113
102
  Cardinal: any;
114
103
  FatZebra: any;
115
- paypal: any;
116
104
  HPP: any;
117
105
  MerchantUsername: string;
118
106
  }
@@ -149,5 +137,5 @@ type TokenizeCardResponse = {
149
137
  token: string;
150
138
  errors?: Array<string>;
151
139
  };
152
- export { BridgeEvent, PublicEvent, NODE_ENV, PaymentMethodType, };
140
+ export { BridgeEvent, PublicEvent, PaymentMethodType, };
153
141
  export type { PaymentMethod, PaymentIntent, Payment, Card, CardOnFile, CustomerSnakeCase, Customer, Handlers, ValidationResult, TokenizeCardResponse, };
@@ -1,11 +1,3 @@
1
- var NODE_ENV;
2
- (function (NODE_ENV) {
3
- NODE_ENV["LOCALDEV"] = "localdev";
4
- NODE_ENV["PRODUCTION"] = "production";
5
- NODE_ENV["SANDBOX"] = "sandbox";
6
- NODE_ENV["STAGING"] = "staging";
7
- NODE_ENV["TEST"] = "test";
8
- })(NODE_ENV || (NODE_ENV = {}));
9
1
  var PublicEvent;
10
2
  (function (PublicEvent) {
11
3
  PublicEvent["FORM_VALIDATION_ERROR"] = "fz.form_validation.error";
@@ -17,11 +9,9 @@ var PublicEvent;
17
9
  PublicEvent["TOKENIZATION_ERROR"] = "fz.tokenization.error";
18
10
  PublicEvent["PAYMENT_SUCCESS"] = "fz.payment.success";
19
11
  PublicEvent["PAYMENT_ERROR"] = "fz.payment.error";
20
- PublicEvent["PAYPAL_CANCEL"] = "fz.paypal.cancel";
21
- PublicEvent["PAYPAL_SUCCESS"] = "fz.paypal.success";
22
- PublicEvent["PAYPAL_ERROR"] = "fz.paypal.error";
23
- PublicEvent["PAYPAL_PROCESSESING"] = "fz.paypal.processing";
24
12
  PublicEvent["BIN_LOOKUP"] = "fz.bin.lookup";
13
+ PublicEvent["CLICK_TO_PAY_TOKENIZATION_SUCCESS"] = "fz.click_to_pay.tokenization.success";
14
+ PublicEvent["CLICK_TO_PAY_TOKENIZATION_ERROR"] = "fz.click_to_pay.tokenization.error";
25
15
  })(PublicEvent || (PublicEvent = {}));
26
16
  var BridgeEvent;
27
17
  (function (BridgeEvent) {
@@ -33,12 +23,11 @@ var BridgeEvent;
33
23
  BridgeEvent["FORM_VALIDATION_ERROR"] = "fzi.form_validation_error";
34
24
  BridgeEvent["FORM_VALIDATION_SUCCESS"] = "fzi.form_validation_success";
35
25
  BridgeEvent["BIN_LOOKUP"] = "fzi.bin_lookup";
26
+ BridgeEvent["CLICK_TO_PAY_TOKENIZATION"] = "fzi.c2p.tc_res";
36
27
  })(BridgeEvent || (BridgeEvent = {}));
37
28
  var PaymentMethodType;
38
29
  (function (PaymentMethodType) {
39
30
  PaymentMethodType["CARD"] = "card";
40
31
  PaymentMethodType["CARD_ON_FILE"] = "card_on_file";
41
- PaymentMethodType["PAYPAL_ORDER"] = "paypal_order";
42
- PaymentMethodType["PAYPAL_BILLING"] = "paypal_billing";
43
32
  })(PaymentMethodType || (PaymentMethodType = {}));
44
- export { BridgeEvent, PublicEvent, NODE_ENV, PaymentMethodType, };
33
+ export { BridgeEvent, PublicEvent, PaymentMethodType, };
@@ -0,0 +1,91 @@
1
+ .checkout-button-wrapper {
2
+ display: flex;
3
+ justify-content: center;
4
+ align-items: center;
5
+ height: 200px;
6
+ }
7
+
8
+ .iframe-checkout {
9
+ flex: 1;
10
+ border: none;
11
+ width: 100%;
12
+ height: 100%;
13
+ min-height: 0;
14
+ overflow: auto;
15
+ -webkit-overflow-scrolling: touch;
16
+ }
17
+
18
+ .iframe-foreground,
19
+ .iframe-background {
20
+ top: 0;
21
+ left: 0;
22
+ right: 0;
23
+ bottom: 0;
24
+ flex-direction: column;
25
+ }
26
+
27
+ .iframe-foreground,
28
+ .iframe-background {
29
+ position: fixed;
30
+ }
31
+
32
+ .iframe-foreground {
33
+ z-index: -1;
34
+ }
35
+
36
+ .iframe-background {
37
+ background: rgba(0, 0, 0, 0.5);
38
+ }
39
+
40
+ .iframe-foreground {
41
+ flex-grow: 1;
42
+ top: auto;
43
+ width: 100%;
44
+ max-width: 480px;
45
+ height: 80vh;
46
+ background-color: #ffffff;
47
+ border-radius: 25px 25px 0 0;
48
+ }
49
+
50
+ .slide-in .iframe-foreground {
51
+ transform: translateY(100vh);
52
+ transition: transform 0.4s ease, z-index 0.3s ease 0.4s;
53
+ z-index: -1;
54
+ }
55
+
56
+ .slide-in .iframe-background {
57
+ opacity: 0;
58
+ z-index: -1;
59
+ transition: opacity 0.3s ease, z-index 0.3s ease 0.3s;
60
+ }
61
+
62
+ .slide-in.show .iframe-foreground {
63
+ transform: none;
64
+ transition: transform 0.4s ease;
65
+ z-index: 100;
66
+ }
67
+
68
+ .slide-in.show .iframe-background {
69
+ opacity: 1;
70
+ z-index: 0;
71
+ transition: opacity 0.3s ease;
72
+ }
73
+
74
+ @media only screen and (min-width: 480px) {
75
+ .iframe-foreground {
76
+ margin: 0 auto;
77
+ }
78
+ }
79
+
80
+ @media only screen and (min-width: 768px) {
81
+ .iframe-foreground {
82
+ margin: 0;
83
+ width: 400px;
84
+ height: 100vh;
85
+ left: 0;
86
+ }
87
+
88
+ .slide-in .iframe-foreground {
89
+ transform: translateX(-400px);
90
+ }
91
+ }