@fat-zebra/sdk 1.3.3-staging → 1.4.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 (132) hide show
  1. package/dist/react/VerifyCard.js +3 -2
  2. package/dist/react/url.d.ts +2 -1
  3. package/dist/react/url.js +4 -3
  4. package/dist/react/useFatZebra.js +1 -1
  5. package/dist/sca/index.d.ts +4 -1
  6. package/dist/sca/index.js +4 -3
  7. package/dist/shared/api-gateway-client.d.ts +4 -1
  8. package/dist/shared/api-gateway-client.js +4 -3
  9. package/dist/shared/env.d.ts +17 -5
  10. package/dist/shared/env.js +18 -5
  11. package/dist/shared/envs/local.d.ts +5 -0
  12. package/dist/shared/envs/local.js +5 -0
  13. package/dist/shared/envs/production.d.ts +5 -0
  14. package/dist/shared/envs/production.js +5 -0
  15. package/dist/shared/envs/sandbox.d.ts +5 -0
  16. package/dist/shared/envs/sandbox.js +5 -0
  17. package/dist/shared/envs/staging.d.ts +5 -0
  18. package/dist/shared/envs/staging.js +5 -0
  19. package/dist/shared/types.d.ts +2 -0
  20. package/dist/src/applepay/applepay.js +198 -0
  21. package/dist/src/applepay/applepay.js.map +1 -0
  22. package/dist/src/applepay/clients/apple-pay-client.js +66 -0
  23. package/dist/src/applepay/clients/apple-pay-client.js.map +1 -0
  24. package/dist/src/applepay/clients/paynow-client.js +96 -0
  25. package/dist/src/applepay/clients/paynow-client.js.map +1 -0
  26. package/dist/src/applepay/index.js +6 -0
  27. package/dist/src/applepay/index.js.map +1 -0
  28. package/dist/src/hpp/hpp.js +230 -0
  29. package/dist/src/hpp/hpp.js.map +1 -0
  30. package/dist/src/hpp/hpp.test.js +135 -0
  31. package/dist/src/hpp/hpp.test.js.map +1 -0
  32. package/dist/src/hpp/index.js +6 -0
  33. package/dist/src/hpp/index.js.map +1 -0
  34. package/dist/src/index.js +12 -0
  35. package/dist/src/index.js.map +1 -0
  36. package/dist/src/main.js +225 -0
  37. package/dist/src/main.js.map +1 -0
  38. package/dist/src/main.test.js +236 -0
  39. package/dist/src/main.test.js.map +1 -0
  40. package/dist/src/paypal/paypal-button.js +311 -0
  41. package/dist/src/paypal/paypal-button.js.map +1 -0
  42. package/dist/src/paypal/paypal-button.test.js +41 -0
  43. package/dist/src/paypal/paypal-button.test.js.map +1 -0
  44. package/dist/src/paypal/paypal-checkout.js +111 -0
  45. package/dist/src/paypal/paypal-checkout.js.map +1 -0
  46. package/dist/src/paypal/paypal-checkout.test.js +167 -0
  47. package/dist/src/paypal/paypal-checkout.test.js.map +1 -0
  48. package/dist/src/paypal/types.js +9 -0
  49. package/dist/src/paypal/types.js.map +1 -0
  50. package/dist/src/paypal/validation.js +73 -0
  51. package/dist/src/paypal/validation.js.map +1 -0
  52. package/dist/src/react/VerifyCard.js +45 -0
  53. package/dist/src/react/VerifyCard.js.map +1 -0
  54. package/dist/src/react/index.js +9 -0
  55. package/dist/src/react/index.js.map +1 -0
  56. package/dist/src/react/url.js +60 -0
  57. package/dist/src/react/url.js.map +1 -0
  58. package/dist/src/react/useFatZebra.js +150 -0
  59. package/dist/src/react/useFatZebra.js.map +1 -0
  60. package/dist/src/sca/cardinal.js +110 -0
  61. package/dist/src/sca/cardinal.js.map +1 -0
  62. package/dist/src/sca/eci-mappings.js +63 -0
  63. package/dist/src/sca/eci-mappings.js.map +1 -0
  64. package/dist/src/sca/eci-mappings.test.js +31 -0
  65. package/dist/src/sca/eci-mappings.test.js.map +1 -0
  66. package/dist/src/sca/index.js +348 -0
  67. package/dist/src/sca/index.js.map +1 -0
  68. package/dist/src/sca/index.test.js +550 -0
  69. package/dist/src/sca/index.test.js.map +1 -0
  70. package/dist/src/sca/scenarios/enrollment.js +150 -0
  71. package/dist/src/sca/scenarios/enrollment.js.map +1 -0
  72. package/dist/src/sca/scenarios/index.js +8 -0
  73. package/dist/src/sca/scenarios/index.js.map +1 -0
  74. package/dist/src/sca/scenarios/validation.js +128 -0
  75. package/dist/src/sca/scenarios/validation.js.map +1 -0
  76. package/dist/src/sca/types.js +57 -0
  77. package/dist/src/sca/types.js.map +1 -0
  78. package/dist/src/shared/api-gateway-client.js +174 -0
  79. package/dist/src/shared/api-gateway-client.js.map +1 -0
  80. package/dist/src/shared/bridge-client.js +24 -0
  81. package/dist/src/shared/bridge-client.js.map +1 -0
  82. package/dist/src/shared/constants.js +19 -0
  83. package/dist/src/shared/constants.js.map +1 -0
  84. package/dist/src/shared/env.development.js +12 -0
  85. package/dist/src/shared/env.development.js.map +1 -0
  86. package/dist/src/shared/env.js +46 -0
  87. package/dist/src/shared/env.js.map +1 -0
  88. package/dist/src/shared/envs/local.js +12 -0
  89. package/dist/src/shared/envs/local.js.map +1 -0
  90. package/dist/src/shared/envs/production.js +12 -0
  91. package/dist/src/shared/envs/production.js.map +1 -0
  92. package/dist/src/shared/envs/sandbox.js +12 -0
  93. package/dist/src/shared/envs/sandbox.js.map +1 -0
  94. package/dist/src/shared/envs/staging.js +12 -0
  95. package/dist/src/shared/envs/staging.js.map +1 -0
  96. package/dist/src/shared/event-manager.js +14 -0
  97. package/dist/src/shared/event-manager.js.map +1 -0
  98. package/dist/src/shared/post-message-client.js +107 -0
  99. package/dist/src/shared/post-message-client.js.map +1 -0
  100. package/dist/src/shared/post-message-client.test.js +58 -0
  101. package/dist/src/shared/post-message-client.test.js.map +1 -0
  102. package/dist/src/shared/types.js +47 -0
  103. package/dist/src/shared/types.js.map +1 -0
  104. package/dist/src/shared/types.test.js +55 -0
  105. package/dist/src/shared/types.test.js.map +1 -0
  106. package/dist/src/shared/util.js +96 -0
  107. package/dist/src/shared/util.js.map +1 -0
  108. package/dist/src/shared/util.test.js +148 -0
  109. package/dist/src/shared/util.test.js.map +1 -0
  110. package/dist/src/validation/index.js +10 -0
  111. package/dist/src/validation/index.js.map +1 -0
  112. package/dist/src/validation/schemas/customer.json +38 -0
  113. package/dist/src/validation/schemas/hpp-load-params.json +40 -0
  114. package/dist/src/validation/schemas/hpp-options.json +48 -0
  115. package/dist/src/validation/schemas/payment-intent.json +48 -0
  116. package/dist/src/validation/schemas/payment-method.json +83 -0
  117. package/dist/src/validation/schemas/verify-card-options.json +15 -0
  118. package/dist/src/validation/schemas/verify-card-params.json +24 -0
  119. package/dist/src/validation/validation-helper.js +10 -0
  120. package/dist/src/validation/validation-helper.js.map +1 -0
  121. package/dist/src/validation/validation-helper.test.js +34 -0
  122. package/dist/src/validation/validation-helper.test.js.map +1 -0
  123. package/dist/src/validation/validators/hpp-load-params-validator.js +21 -0
  124. package/dist/src/validation/validators/hpp-load-params-validator.js.map +1 -0
  125. package/dist/src/validation/validators/hpp-load-params-validator.test.js +56 -0
  126. package/dist/src/validation/validators/hpp-load-params-validator.test.js.map +1 -0
  127. package/dist/src/validation/validators/verify-card-params-validator.js +23 -0
  128. package/dist/src/validation/validators/verify-card-params-validator.js.map +1 -0
  129. package/dist/tests/helpers/api-gateway-mock.js +37 -0
  130. package/dist/tests/helpers/api-gateway-mock.js.map +1 -0
  131. package/package.json +2 -3
  132. package/tsconfig.json +1 -0
@@ -1,14 +1,15 @@
1
1
  import React from "react";
2
2
  import useFatZebra from "./useFatZebra";
3
- import * as env from "../shared/env";
3
+ import env, { Environment } from "../shared/env";
4
4
  const Frame = ({ handlers, config }) => {
5
5
  const bridgeRef = React.useRef(null);
6
6
  const { url } = useFatZebra({
7
7
  config,
8
8
  handlers: handlers,
9
9
  });
10
+ const environmentConfig = env[config.environment || Environment.production];
10
11
  return (React.createElement("div", null,
11
12
  React.createElement("iframe", { src: url, width: "100%", height: "700px", title: "verification-form" }),
12
- React.createElement("iframe", { title: "bridge-form", src: env.bridgeUrl, width: "100%", height: "700px", ref: bridgeRef })));
13
+ React.createElement("iframe", { title: "bridge-form", src: environmentConfig.bridgeUrl, width: "100%", height: "700px", ref: bridgeRef })));
13
14
  };
14
15
  export default Frame;
@@ -1,3 +1,4 @@
1
+ import { Environment } from "../shared/env";
1
2
  import { OptionalUrlValues } from '../shared/types';
2
3
  type RequiredURLValues = {
3
4
  merchant: string;
@@ -7,5 +8,5 @@ type RequiredURLValues = {
7
8
  currency: string;
8
9
  };
9
10
  type UrlValues = RequiredURLValues & OptionalUrlValues;
10
- declare const generatePaymentURL: (values: UrlValues) => string;
11
+ declare const generatePaymentURL: (values: UrlValues, environment?: Environment) => string;
11
12
  export { generatePaymentURL };
package/dist/react/url.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { parseTemplate } from 'url-template';
2
- import * as env from "../shared/env";
3
- const generatePaymentURL = (values) => {
2
+ import env, { Environment } from "../shared/env";
3
+ const generatePaymentURL = (values, environment) => {
4
4
  const queryParts = [
5
5
  "tokenize_only",
6
6
  "css",
@@ -13,7 +13,8 @@ const generatePaymentURL = (values) => {
13
13
  "surcharge_enabled",
14
14
  "sca_enabled",
15
15
  ];
16
- const urlTemplate = parseTemplate(`${env.payNowUrl}/sdk/v3/{merchant}/{reference}/{currency}/{amount}/{verification}{?${queryParts.join(",")}}`);
16
+ const environmentConfig = env[environment || Environment.production];
17
+ const urlTemplate = parseTemplate(`${environmentConfig.payNowUrl}/sdk/v3/{merchant}/{reference}/{currency}/{amount}/{verification}{?${queryParts.join(",")}}`);
17
18
  const url = urlTemplate.expand({
18
19
  merchant: values.merchant,
19
20
  reference: values.reference,
@@ -103,7 +103,7 @@ const useFatZebra = ({ config, handlers }) => {
103
103
  };
104
104
  }, []);
105
105
  const payment = paymentIntent.payment;
106
- const url = generatePaymentURL(Object.assign({ merchant: username, reference: payment.reference, amount: payment.amount, currency: payment.currency, hash: paymentIntent.verification }, options));
106
+ const url = generatePaymentURL(Object.assign({ merchant: username, reference: payment.reference, amount: payment.amount, currency: payment.currency, hash: paymentIntent.verification }, options), config.environment);
107
107
  return { url };
108
108
  };
109
109
  export default useFatZebra;
@@ -2,6 +2,7 @@ import * as t from './types';
2
2
  import { Callback, Customer, CustomerSnakeCase, PaymentIntent } from '../shared/types';
3
3
  import { CardinalManager } from './cardinal';
4
4
  import GatewayClient from '../shared/api-gateway-client';
5
+ import { Environment } from "../shared/env";
5
6
  export interface ScaRunProps {
6
7
  cardToken: string;
7
8
  customer?: Customer;
@@ -13,6 +14,7 @@ export interface ScaConfig {
13
14
  gatewayClient: GatewayClient;
14
15
  successCallback?: Callback | null;
15
16
  failureCallback?: Callback | null;
17
+ environment?: Environment;
16
18
  }
17
19
  declare class Sca {
18
20
  private _cardinal;
@@ -26,7 +28,8 @@ declare class Sca {
26
28
  private gatewayClient;
27
29
  private successCallback;
28
30
  private failureCallback;
29
- constructor({ gatewayClient, successCallback, failureCallback }: ScaConfig);
31
+ private environmentConfig;
32
+ constructor({ gatewayClient, successCallback, failureCallback, environment }: ScaConfig);
30
33
  loadScript(): void;
31
34
  get cardinal(): CardinalManager;
32
35
  set cardinal(cardinal: CardinalManager);
package/dist/sca/index.js CHANGED
@@ -13,19 +13,20 @@ import { PublicEvent, } from '../shared/types';
13
13
  import { CardinalManager, } from './cardinal';
14
14
  import { emit, } from '../shared/event-manager';
15
15
  import { toFzSli } from './eci-mappings';
16
- import * as env from "../shared/env";
16
+ import env, { Environment } from "../shared/env";
17
17
  class Sca {
18
- constructor({ gatewayClient, successCallback, failureCallback }) {
18
+ constructor({ gatewayClient, successCallback, failureCallback, environment }) {
19
19
  this.gatewayClient = gatewayClient;
20
20
  this.successCallback = successCallback;
21
21
  this.failureCallback = failureCallback;
22
+ this.environmentConfig = env[environment || Environment.production];
22
23
  }
23
24
  loadScript() {
24
25
  if (!document.getElementById("songbird-script")) {
25
26
  const script = document.createElement('script');
26
27
  script.type = 'text/javascript';
27
28
  script.id = "songbird-script";
28
- script.src = env.songbirdUrl;
29
+ script.src = this.environmentConfig.songbirdUrl;
29
30
  script.async = true;
30
31
  script.onload = () => {
31
32
  this._cardinal = new CardinalManager();
@@ -1,13 +1,16 @@
1
1
  import { AxiosResponse, AxiosInstance } from "axios";
2
+ import { Environment } from "../shared/env";
2
3
  import * as sca from "../sca/types";
3
4
  import * as paypal from "../paypal/types";
4
5
  export type GatewayClientProps = {
5
6
  accessToken: string;
6
7
  username: string;
8
+ environment?: Environment;
7
9
  };
8
10
  declare class GatewayClient {
9
11
  client: AxiosInstance | null;
10
- constructor({ accessToken, username }: GatewayClientProps);
12
+ environment?: Environment;
13
+ constructor({ accessToken, username, environment }: GatewayClientProps);
11
14
  /**************** SCA/3DS2 /****************/
12
15
  createSCASession(data: sca.CreateSCASessionRequest): Promise<AxiosResponse>;
13
16
  decodeSCASession(data: sca.DecodeSCASessionRequest): Promise<AxiosResponse>;
@@ -10,15 +10,16 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  import { RequestHeaderSdkVersion, RequestHeaderMerchantUsername, RequestTimeout, LongRequestTimeout, } from "./constants";
11
11
  import axios from "axios";
12
12
  import { getSdkVersionNumber } from "./util";
13
- import * as env from "../shared/env";
13
+ import env, { Environment } from "../shared/env";
14
14
  class GatewayClient {
15
- constructor({ accessToken, username }) {
15
+ constructor({ accessToken, username, environment }) {
16
+ this.environment = environment || Environment.production;
16
17
  const headers = {};
17
18
  headers["Authorization"] = `Bearer ${accessToken}`;
18
19
  headers[RequestHeaderSdkVersion] = getSdkVersionNumber();
19
20
  headers[RequestHeaderMerchantUsername] = username;
20
21
  this.client = axios.create({
21
- baseURL: env.apiUrl,
22
+ baseURL: env[this.environment].apiUrl,
22
23
  timeout: RequestTimeout,
23
24
  headers,
24
25
  responseType: "json",
@@ -1,5 +1,17 @@
1
- declare const bridgeUrl = "https://paynow.pmnts-staging.io/sdk/bridge";
2
- declare const apiUrl = "https://gateway.pmnts-staging.io/sdk";
3
- declare const payNowUrl = "https://paynow.pmnts-staging.io";
4
- declare const songbirdUrl = "https://songbirdstag.cardinalcommerce.com/edge/v1/songbird.js";
5
- export { bridgeUrl, apiUrl, payNowUrl, songbirdUrl };
1
+ import * as local from "./envs/local";
2
+ import * as staging from "./envs/staging";
3
+ import * as sandbox from "./envs/sandbox";
4
+ import * as production from "./envs/production";
5
+ export declare enum Environment {
6
+ local = "local",
7
+ staging = "staging",
8
+ sandbox = "sandbox",
9
+ production = "production"
10
+ }
11
+ declare const env: {
12
+ local: typeof local;
13
+ staging: typeof staging;
14
+ sandbox: typeof sandbox;
15
+ production: typeof production;
16
+ };
17
+ export default env;
@@ -1,5 +1,18 @@
1
- const bridgeUrl = "https://paynow.pmnts-staging.io/sdk/bridge";
2
- const apiUrl = "https://gateway.pmnts-staging.io/sdk";
3
- const payNowUrl = "https://paynow.pmnts-staging.io";
4
- const songbirdUrl = "https://songbirdstag.cardinalcommerce.com/edge/v1/songbird.js";
5
- export { bridgeUrl, apiUrl, payNowUrl, songbirdUrl };
1
+ import * as local from "./envs/local";
2
+ import * as staging from "./envs/staging";
3
+ import * as sandbox from "./envs/sandbox";
4
+ import * as production from "./envs/production";
5
+ export var Environment;
6
+ (function (Environment) {
7
+ Environment["local"] = "local";
8
+ Environment["staging"] = "staging";
9
+ Environment["sandbox"] = "sandbox";
10
+ Environment["production"] = "production";
11
+ })(Environment || (Environment = {}));
12
+ const env = {
13
+ [Environment.local]: local,
14
+ [Environment.staging]: staging,
15
+ [Environment.sandbox]: sandbox,
16
+ [Environment.production]: production,
17
+ };
18
+ export default env;
@@ -0,0 +1,5 @@
1
+ declare const bridgeUrl = "http://paynow.test";
2
+ declare const apiUrl = "http://api.test:3002/sdk";
3
+ declare const payNowUrl = "http://paynow.test:3004";
4
+ declare const songbirdUrl = "https://songbirdstag.cardinalcommerce.com/edge/v1/songbird.js";
5
+ export { bridgeUrl, apiUrl, payNowUrl, songbirdUrl };
@@ -0,0 +1,5 @@
1
+ const bridgeUrl = "http://paynow.test";
2
+ const apiUrl = "http://api.test:3002/sdk";
3
+ const payNowUrl = "http://paynow.test:3004";
4
+ const songbirdUrl = "https://songbirdstag.cardinalcommerce.com/edge/v1/songbird.js";
5
+ export { bridgeUrl, apiUrl, payNowUrl, songbirdUrl };
@@ -0,0 +1,5 @@
1
+ declare const bridgeUrl = "https://paynow.pmnts.io/sdk/bridge";
2
+ declare const apiUrl = "https://gateway.pmnts.io/sdk";
3
+ declare const payNowUrl = "https://paynow.pmnts.io";
4
+ declare const songbirdUrl = "https://songbird.cardinalcommerce.com/edge/v1/songbird.js";
5
+ export { bridgeUrl, apiUrl, payNowUrl, songbirdUrl };
@@ -0,0 +1,5 @@
1
+ const bridgeUrl = "https://paynow.pmnts.io/sdk/bridge";
2
+ const apiUrl = "https://gateway.pmnts.io/sdk";
3
+ const payNowUrl = "https://paynow.pmnts.io";
4
+ const songbirdUrl = "https://songbird.cardinalcommerce.com/edge/v1/songbird.js";
5
+ export { bridgeUrl, apiUrl, payNowUrl, songbirdUrl };
@@ -0,0 +1,5 @@
1
+ declare const bridgeUrl = "https://paynow.pmnts-sandbox.io/sdk/bridge";
2
+ declare const apiUrl = "https://gateway.pmnts-sandbox.io/sdk";
3
+ declare const payNowUrl = "https://paynow.pmnts-sandbox.io";
4
+ declare const songbirdUrl = "https://songbirdstag.cardinalcommerce.com/edge/v1/songbird.js";
5
+ export { bridgeUrl, apiUrl, payNowUrl, songbirdUrl };
@@ -0,0 +1,5 @@
1
+ const bridgeUrl = "https://paynow.pmnts-sandbox.io/sdk/bridge";
2
+ const apiUrl = "https://gateway.pmnts-sandbox.io/sdk";
3
+ const payNowUrl = "https://paynow.pmnts-sandbox.io";
4
+ const songbirdUrl = "https://songbirdstag.cardinalcommerce.com/edge/v1/songbird.js";
5
+ export { bridgeUrl, apiUrl, payNowUrl, songbirdUrl };
@@ -0,0 +1,5 @@
1
+ declare const bridgeUrl = "https://paynow.pmnts-staging.io/sdk/bridge";
2
+ declare const apiUrl = "https://gateway.pmnts-staging.io/sdk";
3
+ declare const payNowUrl = "https://paynow.pmnts-staging.io";
4
+ declare const songbirdUrl = "https://songbirdstag.cardinalcommerce.com/edge/v1/songbird.js";
5
+ export { bridgeUrl, apiUrl, payNowUrl, songbirdUrl };
@@ -0,0 +1,5 @@
1
+ const bridgeUrl = "https://paynow.pmnts-staging.io/sdk/bridge";
2
+ const apiUrl = "https://gateway.pmnts-staging.io/sdk";
3
+ const payNowUrl = "https://paynow.pmnts-staging.io";
4
+ const songbirdUrl = "https://songbirdstag.cardinalcommerce.com/edge/v1/songbird.js";
5
+ export { bridgeUrl, apiUrl, payNowUrl, songbirdUrl };
@@ -1,4 +1,5 @@
1
1
  import { PayPalPaymentMethod } from '../paypal/types';
2
+ import { Environment } from './env';
2
3
  declare enum NODE_ENV {
3
4
  LOCALDEV = "localdev",
4
5
  PRODUCTION = "production",
@@ -91,6 +92,7 @@ type Handlers = Partial<Record<PublicEvent, Callback | null>>;
91
92
  export type PaymentConfig = {
92
93
  username: string;
93
94
  accessToken: string;
95
+ environment: Environment;
94
96
  paymentIntent: PaymentIntent;
95
97
  options: OptionalUrlValues;
96
98
  };
@@ -0,0 +1,198 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || function (mod) {
30
+ if (mod && mod.__esModule) return mod;
31
+ var result = {};
32
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
33
+ __setModuleDefault(result, mod);
34
+ return result;
35
+ };
36
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
37
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
38
+ return new (P || (P = Promise))(function (resolve, reject) {
39
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
40
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
41
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
42
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
43
+ });
44
+ };
45
+ var __generator = (this && this.__generator) || function (thisArg, body) {
46
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
47
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
48
+ function verb(n) { return function (v) { return step([n, v]); }; }
49
+ function step(op) {
50
+ if (f) throw new TypeError("Generator is already executing.");
51
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
52
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
53
+ if (y = 0, t) op = [op[0] & 2, t.value];
54
+ switch (op[0]) {
55
+ case 0: case 1: t = op; break;
56
+ case 4: _.label++; return { value: op[1], done: false };
57
+ case 5: _.label++; y = op[1]; op = [0]; continue;
58
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
59
+ default:
60
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
61
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
62
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
63
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
64
+ if (t[2]) _.ops.pop();
65
+ _.trys.pop(); continue;
66
+ }
67
+ op = body.call(thisArg, _);
68
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
69
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
70
+ }
71
+ };
72
+ Object.defineProperty(exports, "__esModule", { value: true });
73
+ exports.ApplePay = void 0;
74
+ var apple_pay_client_1 = require("./clients/apple-pay-client");
75
+ var payNow = __importStar(require("./clients/paynow-client"));
76
+ var post_message_client_1 = require("../shared/post-message-client");
77
+ var channel = 'applepay';
78
+ var fzPayNowDomain = process.env.PAYNOW_BASE_URL;
79
+ var ApplePay = /** @class */ (function () {
80
+ function ApplePay(config) {
81
+ this.iframe = config.iframe;
82
+ this.postMessageClient = new post_message_client_1.PostMessageClient({
83
+ channel: 'applepay',
84
+ target: this.iframe
85
+ });
86
+ this.registerEventListener();
87
+ this.checkApplePayEligibilty();
88
+ this.notifyApplePayEligibiity();
89
+ }
90
+ ApplePay.prototype.checkApplePayEligibilty = function () {
91
+ if ((0, apple_pay_client_1.getEligibilty)()) {
92
+ this.canMakePayments = true;
93
+ }
94
+ };
95
+ ApplePay.prototype.notifyApplePayEligibiity = function () {
96
+ var message = {
97
+ channel: channel,
98
+ subject: 'eligibility',
99
+ data: {
100
+ canMakePayments: this.canMakePayments
101
+ }
102
+ };
103
+ this.postMessageClient.send(message);
104
+ };
105
+ ApplePay.prototype.registerEventListener = function () {
106
+ var _this = this;
107
+ this.postMessageClient.setEventListeners({
108
+ 'paymentrequest': function (data) { return __awaiter(_this, void 0, void 0, function () {
109
+ return __generator(this, function (_a) {
110
+ switch (_a.label) {
111
+ case 0: return [4 /*yield*/, this.purchase(data)];
112
+ case 1:
113
+ _a.sent();
114
+ return [2 /*return*/];
115
+ }
116
+ });
117
+ }); }
118
+ });
119
+ };
120
+ ApplePay.prototype.purchase = function (request) {
121
+ return __awaiter(this, void 0, void 0, function () {
122
+ var applePayPaymentRequest, payNowPaymentAttributes, _a;
123
+ var _this = this;
124
+ return __generator(this, function (_b) {
125
+ switch (_b.label) {
126
+ case 0:
127
+ applePayPaymentRequest = this.extractApplePaymentRequestParams(request);
128
+ payNowPaymentAttributes = this.extractPayNowPaymentAttributes(request);
129
+ _a = this;
130
+ return [4 /*yield*/, (0, apple_pay_client_1.createSession)(applePayPaymentRequest)];
131
+ case 1:
132
+ _a.applePaySession = _b.sent();
133
+ this.applePaySession.onvalidatemerchant = function (event) { return __awaiter(_this, void 0, void 0, function () {
134
+ var merchantSession, e_1;
135
+ return __generator(this, function (_a) {
136
+ switch (_a.label) {
137
+ case 0:
138
+ _a.trys.push([0, 2, , 3]);
139
+ return [4 /*yield*/, payNow.getMerchantSession(event.validationURL, payNowPaymentAttributes)];
140
+ case 1:
141
+ merchantSession = _a.sent();
142
+ return [3 /*break*/, 3];
143
+ case 2:
144
+ e_1 = _a.sent();
145
+ console.log('Unable to establish new merchant session');
146
+ return [2 /*return*/];
147
+ case 3:
148
+ this.applePaySession.completeMerchantValidation(merchantSession);
149
+ return [2 /*return*/];
150
+ }
151
+ });
152
+ }); };
153
+ this.applePaySession.onpaymentauthorized = function (event) { return __awaiter(_this, void 0, void 0, function () {
154
+ var e_2;
155
+ return __generator(this, function (_a) {
156
+ switch (_a.label) {
157
+ case 0:
158
+ _a.trys.push([0, 2, , 3]);
159
+ return [4 /*yield*/, payNow.authorizePayment(__assign(__assign({}, payNowPaymentAttributes), event.payment.token))];
160
+ case 1:
161
+ _a.sent();
162
+ this.applePaySession.completePayment(window.ApplePaySession.STATUS_SUCCESS);
163
+ return [3 /*break*/, 3];
164
+ case 2:
165
+ e_2 = _a.sent();
166
+ this.applePaySession.completePayment(window.ApplePaySession.STATUS_FAILURE);
167
+ return [3 /*break*/, 3];
168
+ case 3: return [2 /*return*/];
169
+ }
170
+ });
171
+ }); };
172
+ this.applePaySession.begin();
173
+ return [2 /*return*/];
174
+ }
175
+ });
176
+ });
177
+ };
178
+ ApplePay.prototype.extractApplePaymentRequestParams = function (payload) {
179
+ var countryCode = payload.countryCode, currencyCode = payload.currencyCode, merchantCapabilities = payload.merchantCapabilities, supportedNetworks = payload.supportedNetworks, total = payload.total;
180
+ return {
181
+ countryCode: countryCode,
182
+ currencyCode: currencyCode,
183
+ merchantCapabilities: merchantCapabilities,
184
+ supportedNetworks: supportedNetworks,
185
+ total: total,
186
+ };
187
+ };
188
+ ApplePay.prototype.extractPayNowPaymentAttributes = function (payload) {
189
+ var paymentAttributes = payload.paymentAttributes;
190
+ return paymentAttributes;
191
+ };
192
+ ApplePay.prototype.sendMessage = function (payload) {
193
+ this.iframe.contentWindow.postMessage(payload, fzPayNowDomain);
194
+ };
195
+ return ApplePay;
196
+ }());
197
+ exports.ApplePay = ApplePay;
198
+ //# sourceMappingURL=applepay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applepay.js","sourceRoot":"","sources":["../../../src/applepay/applepay.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.SupportedNetwork = exports.MerchantCapability = exports.getEligibilty = exports.createSession = void 0;
40
+ var SupportedNetwork;
41
+ (function (SupportedNetwork) {
42
+ SupportedNetwork["Amex"] = "amex";
43
+ SupportedNetwork["Visa"] = "visa";
44
+ SupportedNetwork["MasterCard"] = "masterCard";
45
+ })(SupportedNetwork || (exports.SupportedNetwork = SupportedNetwork = {}));
46
+ var MerchantCapability;
47
+ (function (MerchantCapability) {
48
+ MerchantCapability["Supports3DS"] = "supports3DS";
49
+ MerchantCapability["SupportsCredit"] = "supportsCredit";
50
+ MerchantCapability["SupportsDebit"] = "supportsDebit";
51
+ MerchantCapability["SupportsEMV"] = "supportsEMV";
52
+ })(MerchantCapability || (exports.MerchantCapability = MerchantCapability = {}));
53
+ var getEligibilty = function () {
54
+ return window.ApplePaySession && window.ApplePaySession.canMakePayments();
55
+ };
56
+ exports.getEligibilty = getEligibilty;
57
+ var createSession = function (payload) { return __awaiter(void 0, void 0, void 0, function () {
58
+ return __generator(this, function (_a) {
59
+ switch (_a.label) {
60
+ case 0: return [4 /*yield*/, new window.ApplePaySession(2, payload)];
61
+ case 1: return [2 /*return*/, _a.sent()];
62
+ }
63
+ });
64
+ }); };
65
+ exports.createSession = createSession;
66
+ //# sourceMappingURL=apple-pay-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apple-pay-client.js","sourceRoot":"","sources":["../../../../src/applepay/clients/apple-pay-client.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAK,gBAIJ;AAJD,WAAK,gBAAgB;IACnB,iCAAa,CAAA;IACb,iCAAa,CAAA;IACb,6CAAyB,CAAA;AAC3B,CAAC,EAJI,gBAAgB,gCAAhB,gBAAgB,QAIpB;AAED,IAAK,kBAKJ;AALD,WAAK,kBAAkB;IACrB,iDAA2B,CAAA;IAC3B,uDAAiC,CAAA;IACjC,qDAA+B,CAAA;IAC/B,iDAA2B,CAAA;AAC7B,CAAC,EALI,kBAAkB,kCAAlB,kBAAkB,QAKtB;AAaD,IAAM,aAAa,GAAG;IACpB,OAAO,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,eAAe,CAAC,eAAe,EAAE,CAAA;AAC3E,CAAC,CAAA;AASC,sCAAa;AAPf,IAAM,aAAa,GAAG,UAAO,OAAuB;;;oBAC3C,qBAAM,IAAI,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,OAAO,CAAC,EAAA;oBAAnD,sBAAO,SAA4C,EAAA;;;KACpD,CAAA;AAGC,sCAAa"}