@fat-zebra/sdk 1.4.12 → 1.4.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/.jest/setup-env-vars.js +0 -1
  2. package/dist/click_to_pay/index.d.ts +28 -0
  3. package/dist/click_to_pay/index.js +50 -0
  4. package/dist/click_to_pay/types.d.ts +13 -0
  5. package/dist/local/fatzebra.js.map +1 -1
  6. package/dist/main.d.ts +2 -0
  7. package/dist/main.js +18 -1
  8. package/dist/react/url.js +0 -3
  9. package/dist/sca/index.d.ts +1 -1
  10. package/dist/sca/index.js +26 -10
  11. package/dist/sca/scenarios/enrollment.d.ts +2 -1
  12. package/dist/sca/scenarios/enrollment.js +11 -1
  13. package/dist/sca/scenarios/validation.d.ts +2 -1
  14. package/dist/sca/scenarios/validation.js +11 -1
  15. package/dist/sca/types.d.ts +2 -2
  16. package/dist/shared/api-gateway-client.js +6 -1
  17. package/dist/shared/post-message-client.js +2 -0
  18. package/dist/shared/types.d.ts +1 -1
  19. package/dist/src/applepay/applepay.js +198 -0
  20. package/dist/src/applepay/applepay.js.map +1 -0
  21. package/dist/src/applepay/clients/apple-pay-client.js +66 -0
  22. package/dist/src/applepay/clients/apple-pay-client.js.map +1 -0
  23. package/dist/src/applepay/clients/paynow-client.js +96 -0
  24. package/dist/src/applepay/clients/paynow-client.js.map +1 -0
  25. package/dist/src/applepay/index.js +6 -0
  26. package/dist/src/applepay/index.js.map +1 -0
  27. package/dist/src/click_to_pay/index.js +88 -0
  28. package/dist/src/click_to_pay/index.js.map +1 -0
  29. package/dist/src/click_to_pay/types.js +3 -0
  30. package/dist/src/click_to_pay/types.js.map +1 -0
  31. package/dist/src/hpp/hpp.js +230 -0
  32. package/dist/src/hpp/hpp.js.map +1 -0
  33. package/dist/src/hpp/hpp.test.js +135 -0
  34. package/dist/src/hpp/hpp.test.js.map +1 -0
  35. package/dist/src/hpp/index.js +6 -0
  36. package/dist/src/hpp/index.js.map +1 -0
  37. package/dist/src/index.js +14 -0
  38. package/dist/src/index.js.map +1 -0
  39. package/dist/src/main.js +243 -0
  40. package/dist/src/main.js.map +1 -0
  41. package/dist/src/main.test.js +236 -0
  42. package/dist/src/main.test.js.map +1 -0
  43. package/dist/src/paypal/paypal-button.js +311 -0
  44. package/dist/src/paypal/paypal-button.js.map +1 -0
  45. package/dist/src/paypal/paypal-button.test.js +41 -0
  46. package/dist/src/paypal/paypal-button.test.js.map +1 -0
  47. package/dist/src/paypal/paypal-checkout.js +111 -0
  48. package/dist/src/paypal/paypal-checkout.js.map +1 -0
  49. package/dist/src/paypal/paypal-checkout.test.js +167 -0
  50. package/dist/src/paypal/paypal-checkout.test.js.map +1 -0
  51. package/dist/src/paypal/types.js +9 -0
  52. package/dist/src/paypal/types.js.map +1 -0
  53. package/dist/src/paypal/validation.js +73 -0
  54. package/dist/src/paypal/validation.js.map +1 -0
  55. package/dist/src/react/VerifyCard.js +29 -0
  56. package/dist/src/react/VerifyCard.js.map +1 -0
  57. package/dist/src/react/index.js +11 -0
  58. package/dist/src/react/index.js.map +1 -0
  59. package/dist/src/react/submitForm.js +13 -0
  60. package/dist/src/react/submitForm.js.map +1 -0
  61. package/dist/src/react/url.js +60 -0
  62. package/dist/src/react/url.js.map +1 -0
  63. package/dist/src/react/url.test.js +88 -0
  64. package/dist/src/react/url.test.js.map +1 -0
  65. package/dist/src/react/useFatZebra.js +119 -0
  66. package/dist/src/react/useFatZebra.js.map +1 -0
  67. package/dist/src/sca/cardinal.js +110 -0
  68. package/dist/src/sca/cardinal.js.map +1 -0
  69. package/dist/src/sca/eci-mappings.js +63 -0
  70. package/dist/src/sca/eci-mappings.js.map +1 -0
  71. package/dist/src/sca/eci-mappings.test.js +31 -0
  72. package/dist/src/sca/eci-mappings.test.js.map +1 -0
  73. package/dist/src/sca/index.js +363 -0
  74. package/dist/src/sca/index.js.map +1 -0
  75. package/dist/src/sca/index.test.js +620 -0
  76. package/dist/src/sca/index.test.js.map +1 -0
  77. package/dist/src/sca/scenarios/enrollment.js +161 -0
  78. package/dist/src/sca/scenarios/enrollment.js.map +1 -0
  79. package/dist/src/sca/scenarios/index.js +8 -0
  80. package/dist/src/sca/scenarios/index.js.map +1 -0
  81. package/dist/src/sca/scenarios/validation.js +139 -0
  82. package/dist/src/sca/scenarios/validation.js.map +1 -0
  83. package/dist/src/sca/types.js +57 -0
  84. package/dist/src/sca/types.js.map +1 -0
  85. package/dist/src/shared/api-gateway-client.js +184 -0
  86. package/dist/src/shared/api-gateway-client.js.map +1 -0
  87. package/dist/src/shared/bridge-client.js +24 -0
  88. package/dist/src/shared/bridge-client.js.map +1 -0
  89. package/dist/src/shared/constants.js +19 -0
  90. package/dist/src/shared/constants.js.map +1 -0
  91. package/dist/src/shared/env.development.js +12 -0
  92. package/dist/src/shared/env.development.js.map +1 -0
  93. package/dist/src/shared/env.js +46 -0
  94. package/dist/src/shared/env.js.map +1 -0
  95. package/dist/src/shared/envs/local.js +12 -0
  96. package/dist/src/shared/envs/local.js.map +1 -0
  97. package/dist/src/shared/envs/production.js +12 -0
  98. package/dist/src/shared/envs/production.js.map +1 -0
  99. package/dist/src/shared/envs/sandbox.js +12 -0
  100. package/dist/src/shared/envs/sandbox.js.map +1 -0
  101. package/dist/src/shared/envs/staging.js +12 -0
  102. package/dist/src/shared/envs/staging.js.map +1 -0
  103. package/dist/src/shared/event-manager.js +14 -0
  104. package/dist/src/shared/event-manager.js.map +1 -0
  105. package/dist/src/shared/post-message-client.js +107 -0
  106. package/dist/src/shared/post-message-client.js.map +1 -0
  107. package/dist/src/shared/post-message-client.test.js +58 -0
  108. package/dist/src/shared/post-message-client.test.js.map +1 -0
  109. package/dist/src/shared/types.js +47 -0
  110. package/dist/src/shared/types.js.map +1 -0
  111. package/dist/src/shared/types.test.js +55 -0
  112. package/dist/src/shared/types.test.js.map +1 -0
  113. package/dist/src/shared/util.js +96 -0
  114. package/dist/src/shared/util.js.map +1 -0
  115. package/dist/src/shared/util.test.js +148 -0
  116. package/dist/src/shared/util.test.js.map +1 -0
  117. package/dist/src/validation/index.js +12 -0
  118. package/dist/src/validation/index.js.map +1 -0
  119. package/dist/src/validation/schemas/click-to-pay/load-params.json +34 -0
  120. package/dist/src/validation/schemas/click-to-pay/options.json +23 -0
  121. package/dist/src/validation/schemas/click-to-pay/payment-intent.json +42 -0
  122. package/dist/src/validation/schemas/customer.json +38 -0
  123. package/dist/src/validation/schemas/hpp-load-params.json +40 -0
  124. package/dist/src/validation/schemas/hpp-options.json +48 -0
  125. package/dist/src/validation/schemas/payment-intent.json +48 -0
  126. package/dist/src/validation/schemas/payment-method.json +83 -0
  127. package/dist/src/validation/schemas/verify-card-options.json +15 -0
  128. package/dist/src/validation/schemas/verify-card-params.json +24 -0
  129. package/dist/src/validation/validation-helper.js +10 -0
  130. package/dist/src/validation/validation-helper.js.map +1 -0
  131. package/dist/src/validation/validation-helper.test.js +34 -0
  132. package/dist/src/validation/validation-helper.test.js.map +1 -0
  133. package/dist/src/validation/validators/click-to-pay-load-params-validator.js +19 -0
  134. package/dist/src/validation/validators/click-to-pay-load-params-validator.js.map +1 -0
  135. package/dist/src/validation/validators/hpp-load-params-validator.js +21 -0
  136. package/dist/src/validation/validators/hpp-load-params-validator.js.map +1 -0
  137. package/dist/src/validation/validators/hpp-load-params-validator.test.js +56 -0
  138. package/dist/src/validation/validators/hpp-load-params-validator.test.js.map +1 -0
  139. package/dist/src/validation/validators/verify-card-params-validator.js +23 -0
  140. package/dist/src/validation/validators/verify-card-params-validator.js.map +1 -0
  141. package/dist/tests/helpers/api-gateway-mock.js +37 -0
  142. package/dist/tests/helpers/api-gateway-mock.js.map +1 -0
  143. package/dist/validation/index.d.ts +1 -0
  144. package/dist/validation/index.js +1 -0
  145. package/dist/validation/schemas/click-to-pay/load-params.json +34 -0
  146. package/dist/validation/schemas/click-to-pay/options.json +23 -0
  147. package/dist/validation/schemas/click-to-pay/payment-intent.json +42 -0
  148. package/dist/validation/schemas/hpp-options.json +93 -45
  149. package/dist/validation/validators/click-to-pay-load-params-validator.d.ts +3 -0
  150. package/dist/validation/validators/click-to-pay-load-params-validator.js +12 -0
  151. package/package.json +1 -1
  152. package/dist/clicktopay/index.js +0 -50
  153. package/dist/sandbox/fatzebra.js.LICENSE.txt +0 -1
  154. /package/dist/{clicktopay/index.d.ts → click_to_pay/types.js} +0 -0
@@ -0,0 +1,311 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ var __generator = (this && this.__generator) || function (thisArg, body) {
35
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
36
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
37
+ function verb(n) { return function (v) { return step([n, v]); }; }
38
+ function step(op) {
39
+ if (f) throw new TypeError("Generator is already executing.");
40
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
41
+ 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;
42
+ if (y = 0, t) op = [op[0] & 2, t.value];
43
+ switch (op[0]) {
44
+ case 0: case 1: t = op; break;
45
+ case 4: _.label++; return { value: op[1], done: false };
46
+ case 5: _.label++; y = op[1]; op = [0]; continue;
47
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
48
+ default:
49
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
50
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
51
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
52
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
53
+ if (t[2]) _.ops.pop();
54
+ _.trys.pop(); continue;
55
+ }
56
+ op = body.call(thisArg, _);
57
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
58
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
59
+ }
60
+ };
61
+ var __importDefault = (this && this.__importDefault) || function (mod) {
62
+ return (mod && mod.__esModule) ? mod : { "default": mod };
63
+ };
64
+ Object.defineProperty(exports, "__esModule", { value: true });
65
+ exports.PayPalButton = void 0;
66
+ var event_manager_1 = require("../shared/event-manager");
67
+ var types_1 = require("./types");
68
+ var api_gateway_client_1 = __importDefault(require("../shared/api-gateway-client"));
69
+ var types_2 = require("../shared/types");
70
+ var util = __importStar(require("../shared/util"));
71
+ var constants_1 = require("../shared/constants");
72
+ var defaultStyle = {
73
+ layout: 'horizontal',
74
+ color: 'gold',
75
+ shape: 'pill',
76
+ label: 'paypal',
77
+ };
78
+ var PayPalButton = /** @class */ (function () {
79
+ function PayPalButton(paymentMethod, paymentIntent, billingAgreement, buttonStyle) {
80
+ this.paymentMethod = paymentMethod;
81
+ this.paymentIntent = paymentIntent;
82
+ this.billingAgreement = billingAgreement;
83
+ this.buttonStyle = buttonStyle;
84
+ this.client = new api_gateway_client_1.default({ accessToken: window.localStorage.getItem(constants_1.LocalStorageAccessTokenKey),
85
+ username: window.MerchantUsername,
86
+ });
87
+ this.createButton();
88
+ }
89
+ Object.defineProperty(PayPalButton.prototype, "paypalButtons", {
90
+ get: function () {
91
+ return this._paypalButtons;
92
+ },
93
+ enumerable: false,
94
+ configurable: true
95
+ });
96
+ Object.defineProperty(PayPalButton.prototype, "paypalActions", {
97
+ get: function () {
98
+ return this.actions;
99
+ },
100
+ enumerable: false,
101
+ configurable: true
102
+ });
103
+ PayPalButton.prototype.render = function (containerId) {
104
+ var container = this.getContainer(containerId);
105
+ if (typeof (container) != 'undefined' && container != null) {
106
+ this._paypalButtons.render('#' + container.id);
107
+ }
108
+ else {
109
+ (0, event_manager_1.emit)(types_2.PublicEvent.PAYPAL_ERROR, {
110
+ errors: ["Container with id #".concat(containerId, " does not exist.")],
111
+ data: null
112
+ });
113
+ }
114
+ };
115
+ PayPalButton.prototype.getContainer = function (containerId) {
116
+ return document.getElementById(containerId);
117
+ };
118
+ PayPalButton.prototype.createButton = function () {
119
+ var _this = this;
120
+ var button = ({});
121
+ button.style = (this.buttonStyle ? this.buttonStyle : defaultStyle);
122
+ if (this.billingAgreement === true) {
123
+ button.createBillingAgreement = function () { return __awaiter(_this, void 0, void 0, function () {
124
+ return __generator(this, function (_a) {
125
+ return [2 /*return*/, this.createBillingAgreement()];
126
+ });
127
+ }); };
128
+ button.onApprove = function (data, actions) { return __awaiter(_this, void 0, void 0, function () {
129
+ return __generator(this, function (_a) {
130
+ (0, event_manager_1.emit)(types_2.PublicEvent.PAYPAL_PROCESSESING, { data: {}, message: 'The request is being processed.' });
131
+ return [2 /*return*/, this.approveBillingAgreement(data)];
132
+ });
133
+ }); };
134
+ button.onCancel = function (data, actions) {
135
+ (0, event_manager_1.emit)(types_2.PublicEvent.PAYPAL_CANCEL, { data: { id: data.orderID }, message: 'PayPal Billing Agreement cancelled.' });
136
+ };
137
+ }
138
+ else {
139
+ button.createOrder = function () { return __awaiter(_this, void 0, void 0, function () {
140
+ return __generator(this, function (_a) {
141
+ return [2 /*return*/, this.createOrder()];
142
+ });
143
+ }); };
144
+ button.onApprove = function (data, actions) { return __awaiter(_this, void 0, void 0, function () {
145
+ return __generator(this, function (_a) {
146
+ (0, event_manager_1.emit)(types_2.PublicEvent.PAYPAL_PROCESSESING, { data: {}, message: 'The request is being processed.' });
147
+ return [2 /*return*/, this.approveOrder(data)];
148
+ });
149
+ }); };
150
+ button.onCancel = function (data, actions) {
151
+ (0, event_manager_1.emit)(types_2.PublicEvent.PAYPAL_CANCEL, { data: { id: data.orderID }, message: 'PayPal Order cancelled.' });
152
+ };
153
+ }
154
+ button.onError = function (error) {
155
+ // This flag is used to prevent emitting general error from PayPal
156
+ // if an error has already been raised and emitted.
157
+ if (_this.validationErrorRaised === false) {
158
+ (0, event_manager_1.emit)(types_2.PublicEvent.PAYPAL_ERROR, {
159
+ errors: ['PayPal Checkout failed.'],
160
+ data: null
161
+ });
162
+ }
163
+ };
164
+ this._paypalButtons = window.paypal.Buttons(button);
165
+ };
166
+ PayPalButton.prototype.createOrder = function () {
167
+ return __awaiter(this, void 0, void 0, function () {
168
+ var payload, response, error_1;
169
+ return __generator(this, function (_a) {
170
+ switch (_a.label) {
171
+ case 0:
172
+ _a.trys.push([0, 2, , 3]);
173
+ this.validationErrorRaised = false;
174
+ payload = util.toObjectWithSnakeCaseKeys(this.paymentMethod);
175
+ payload.payment_intent = this.paymentIntent;
176
+ return [4 /*yield*/, this.client.createPayPalOrder({
177
+ order: payload
178
+ })];
179
+ case 1:
180
+ response = (_a.sent()).data;
181
+ return [2 /*return*/, response.id];
182
+ case 2:
183
+ error_1 = _a.sent();
184
+ this.validationErrorRaised = true;
185
+ (0, event_manager_1.emit)(types_2.PublicEvent.PAYPAL_ERROR, {
186
+ errors: this.formatError(error_1),
187
+ data: null
188
+ });
189
+ return [2 /*return*/, null];
190
+ case 3: return [2 /*return*/];
191
+ }
192
+ });
193
+ });
194
+ };
195
+ PayPalButton.prototype.approveOrder = function (data) {
196
+ return __awaiter(this, void 0, void 0, function () {
197
+ var response, error_2;
198
+ return __generator(this, function (_a) {
199
+ switch (_a.label) {
200
+ case 0:
201
+ _a.trys.push([0, 5, , 6]);
202
+ this.validationErrorRaised = false;
203
+ response = undefined;
204
+ if (!(this.paymentMethod.intent.toUpperCase() === types_1.PayPalIntent.CAPTURE)) return [3 /*break*/, 2];
205
+ return [4 /*yield*/, this.client.capturePayPalOrder({
206
+ id: data.orderID
207
+ })];
208
+ case 1:
209
+ response = (_a.sent()).data;
210
+ return [3 /*break*/, 4];
211
+ case 2:
212
+ if (!(this.paymentMethod.intent.toUpperCase() === types_1.PayPalIntent.AUTHORIZE)) return [3 /*break*/, 4];
213
+ return [4 /*yield*/, this.client.authorizePayPalOrder({
214
+ id: data.orderID
215
+ })];
216
+ case 3:
217
+ response = (_a.sent()).data;
218
+ _a.label = 4;
219
+ case 4:
220
+ (0, event_manager_1.emit)(types_2.PublicEvent.PAYPAL_SUCCESS, {
221
+ data: util.toObjectWithCamelCaseKeys(response),
222
+ message: 'PayPal order approved.'
223
+ });
224
+ return [2 /*return*/];
225
+ case 5:
226
+ error_2 = _a.sent();
227
+ this.validationErrorRaised = true;
228
+ (0, event_manager_1.emit)(types_2.PublicEvent.PAYPAL_ERROR, {
229
+ errors: this.formatError(error_2),
230
+ data: null
231
+ });
232
+ return [2 /*return*/];
233
+ case 6: return [2 /*return*/];
234
+ }
235
+ });
236
+ });
237
+ };
238
+ PayPalButton.prototype.createBillingAgreement = function () {
239
+ return __awaiter(this, void 0, void 0, function () {
240
+ var payload, response, error_3;
241
+ return __generator(this, function (_a) {
242
+ switch (_a.label) {
243
+ case 0:
244
+ _a.trys.push([0, 2, , 3]);
245
+ this.validationErrorRaised = false;
246
+ payload = util.toObjectWithSnakeCaseKeys(this.paymentMethod);
247
+ delete payload.billing_agreement;
248
+ return [4 /*yield*/, this.client.createPayPalBillingAgreement({
249
+ billing: payload
250
+ })];
251
+ case 1:
252
+ response = (_a.sent()).data;
253
+ return [2 /*return*/, response.token_id];
254
+ case 2:
255
+ error_3 = _a.sent();
256
+ this.validationErrorRaised = true;
257
+ (0, event_manager_1.emit)(types_2.PublicEvent.PAYPAL_ERROR, {
258
+ errors: this.formatError(error_3),
259
+ data: null
260
+ });
261
+ return [2 /*return*/];
262
+ case 3: return [2 /*return*/];
263
+ }
264
+ });
265
+ });
266
+ };
267
+ PayPalButton.prototype.approveBillingAgreement = function (data) {
268
+ return __awaiter(this, void 0, void 0, function () {
269
+ var response, error_4;
270
+ return __generator(this, function (_a) {
271
+ switch (_a.label) {
272
+ case 0:
273
+ _a.trys.push([0, 2, , 3]);
274
+ this.validationErrorRaised = false;
275
+ return [4 /*yield*/, this.client.approvePayPalBillingAgreement({
276
+ id: data.billingToken
277
+ })];
278
+ case 1:
279
+ response = (_a.sent()).data;
280
+ (0, event_manager_1.emit)(types_2.PublicEvent.PAYPAL_SUCCESS, {
281
+ data: util.toObjectWithCamelCaseKeys(response),
282
+ message: 'PayPal Billing Agreement created.'
283
+ });
284
+ return [2 /*return*/];
285
+ case 2:
286
+ error_4 = _a.sent();
287
+ this.validationErrorRaised = true;
288
+ (0, event_manager_1.emit)(types_2.PublicEvent.PAYPAL_ERROR, {
289
+ errors: this.formatError(error_4),
290
+ data: null
291
+ });
292
+ return [2 /*return*/];
293
+ case 3: return [2 /*return*/];
294
+ }
295
+ });
296
+ });
297
+ };
298
+ PayPalButton.prototype.formatError = function (error) {
299
+ var _a, _b;
300
+ var message = [(_b = (_a = error === null || error === void 0 ? void 0 : error.request) === null || _a === void 0 ? void 0 : _a.response) === null || _b === void 0 ? void 0 : _b.errors].flat();
301
+ if (typeof message[0] === 'undefined')
302
+ message = [error === null || error === void 0 ? void 0 : error.message].flat();
303
+ if (typeof message[0] === 'undefined')
304
+ message = ['Unknown error'];
305
+ return message;
306
+ };
307
+ return PayPalButton;
308
+ }());
309
+ exports.PayPalButton = PayPalButton;
310
+ exports.default = PayPalButton;
311
+ //# sourceMappingURL=paypal-button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paypal-button.js","sourceRoot":"","sources":["../../../src/paypal/paypal-button.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ /**
3
+ * @jest-environment jsdom
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var types_1 = require("../shared/types");
7
+ var paypal_button_1 = require("./paypal-button");
8
+ var eventManager = require('../../src/shared/event-manager');
9
+ eventManager.emit = jest.fn();
10
+ describe('PayPalButton', function () {
11
+ var instance;
12
+ beforeEach(function () {
13
+ jest.clearAllMocks();
14
+ window.paypal = jest.fn();
15
+ window.paypal.Buttons = jest.fn().mockImplementation(function () {
16
+ return {
17
+ render: function () { return true; }
18
+ };
19
+ });
20
+ instance = new paypal_button_1.PayPalButton();
21
+ localStorage.setItem('x-fz-token', 'TOKEN');
22
+ });
23
+ describe('render()', function () {
24
+ it('should emit fz.paypal.error if container does not exist', function () {
25
+ instance.render('invalid-container-id');
26
+ var eventDetail = {
27
+ errors: ["Container with id #invalid-container-id does not exist."]
28
+ };
29
+ expect(eventManager.emit).toHaveBeenCalledTimes(1);
30
+ expect(eventManager.emit.mock.calls[0][0]).toBe(types_1.PublicEvent.PAYPAL_ERROR);
31
+ expect(eventManager.emit.mock.calls[0][1]).toMatchObject(eventDetail);
32
+ });
33
+ it('calls paypal.render()', function () {
34
+ instance.getContainer = jest.fn().mockReturnValue(Object);
35
+ var spy = jest.spyOn(instance.paypalButtons, 'render');
36
+ instance.render('containerID');
37
+ expect(spy).toHaveBeenCalled();
38
+ });
39
+ });
40
+ });
41
+ //# sourceMappingURL=paypal-button.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paypal-button.test.js","sourceRoot":"","sources":["../../../src/paypal/paypal-button.test.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAEH,yCAA6C;AAC7C,iDAA8C;AAC9C,IAAM,YAAY,GAAG,OAAO,CAAC,gCAAgC,CAAC,CAAA;AAC9D,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,CAAA;AAE7B,QAAQ,CAAC,cAAc,EAAE;IACvB,IAAI,QAAsB,CAAA;IAE1B,UAAU,CAAC;QACT,IAAI,CAAC,aAAa,EAAE,CAAA;QAEpB,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,EAAE,CAAA;QACzB,MAAM,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC;YACnD,OAAO;gBACL,MAAM,EAAE,cAAM,OAAA,IAAI,EAAJ,CAAI;aACnB,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,QAAQ,GAAG,IAAI,4BAAY,EAAE,CAAA;QAC7B,YAAY,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;IAC7C,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,UAAU,EAAE;QACnB,EAAE,CAAC,yDAAyD,EAAE;YAC5D,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAA;YAEvC,IAAM,WAAW,GAAG;gBAClB,MAAM,EAAE,CAAC,yDAAyD,CAAC;aACpE,CAAA;YAED,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAA;YAClD,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAW,CAAC,YAAY,CAAC,CAAA;YACzE,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,CAAA;QACvE,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,uBAAuB,EAAE;YAC1B,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;YACzD,IAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAA;YACxD,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;YAE9B,MAAM,CAAC,GAAG,CAAC,CAAC,gBAAgB,EAAE,CAAA;QAChC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ // This is the implementation of PayPal Checkout
3
+ //
4
+ // https://developer.paypal.com/docs/checkout/
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.PayPalCheckout = void 0;
7
+ var event_manager_1 = require("../shared/event-manager");
8
+ var types_1 = require("../shared/types");
9
+ var paypal_button_1 = require("./paypal-button");
10
+ var validation_1 = require("./validation");
11
+ var PayPalCheckout = /** @class */ (function () {
12
+ function PayPalCheckout(config) {
13
+ var _a, _b, _c, _d, _e;
14
+ if (!this.validatePayPalSetup(config)) {
15
+ (0, event_manager_1.emit)(types_1.PublicEvent.PAYPAL_ERROR, {
16
+ errors: this.errors(),
17
+ data: null
18
+ });
19
+ return;
20
+ }
21
+ this.billingAgreement = (((_b = (_a = config === null || config === void 0 ? void 0 : config.payment) === null || _a === void 0 ? void 0 : _a.paymentMethod) === null || _b === void 0 ? void 0 : _b.type) === types_1.PaymentMethodType.PAYPAL_BILLING);
22
+ this.payment = config === null || config === void 0 ? void 0 : config.payment;
23
+ this.intent = (_e = (_d = (_c = config === null || config === void 0 ? void 0 : config.payment) === null || _c === void 0 ? void 0 : _c.paymentMethod) === null || _d === void 0 ? void 0 : _d.data) === null || _e === void 0 ? void 0 : _e.intent;
24
+ this.currency = config === null || config === void 0 ? void 0 : config.currency;
25
+ this.containerId = config === null || config === void 0 ? void 0 : config.containerId;
26
+ this.buttonStyle = config === null || config === void 0 ? void 0 : config.style;
27
+ if (!this.validatePayPalRequest()) {
28
+ (0, event_manager_1.emit)(types_1.PublicEvent.PAYPAL_ERROR, {
29
+ errors: this.errors(),
30
+ data: null
31
+ });
32
+ return;
33
+ }
34
+ }
35
+ Object.defineProperty(PayPalCheckout.prototype, "paypal", {
36
+ get: function () {
37
+ return this.paypalButton;
38
+ },
39
+ set: function (paypal) {
40
+ this.paypalButton = paypal;
41
+ },
42
+ enumerable: false,
43
+ configurable: true
44
+ });
45
+ PayPalCheckout.prototype.load = function () {
46
+ var _this = this;
47
+ if (this.errors()) {
48
+ return;
49
+ }
50
+ if (this.intent && !this.billingAgreement) {
51
+ var data = this.payment.paymentMethod.data;
52
+ data.intent = this.intent.toUpperCase();
53
+ }
54
+ var self = this;
55
+ return new Promise(function (resolve, reject) {
56
+ var script = document.createElement('script');
57
+ script.type = 'text/javascript';
58
+ var source = process.env.PAYPAL_SDK_URL + '&client-id=' + process.env.PAYPAL_CLIENT_ID + '&debug=' + process.env.PAYPAL_DEBUG;
59
+ if (_this.currency)
60
+ source += '&currency=' + _this.currency;
61
+ if (_this.intent && !_this.billingAgreement)
62
+ source += '&intent=' + _this.intent;
63
+ if (_this.billingAgreement === true)
64
+ source += '&vault=true';
65
+ script.setAttribute('data-partner-attribution-id', process.env.PAYPAL_PARTNER_ID);
66
+ script.src = source;
67
+ script.async = true;
68
+ document.body.appendChild(script);
69
+ script.onload = function () {
70
+ self.paypalButton = new paypal_button_1.PayPalButton(self.payment.paymentMethod.data, self.payment.paymentIntent, self.billingAgreement, self.buttonStyle);
71
+ resolve(null);
72
+ };
73
+ script.onerror = function () {
74
+ reject(['Loading PayPal failed']);
75
+ };
76
+ });
77
+ };
78
+ PayPalCheckout.prototype.render = function () {
79
+ if (this.errors()) {
80
+ return;
81
+ }
82
+ this.paypalButton.render(this.containerId);
83
+ };
84
+ PayPalCheckout.prototype.validatePayPalSetup = function (config) {
85
+ var validations = (0, validation_1.validatePayPalSetup)(config);
86
+ this.validationErrors = null;
87
+ if (!validations.valid) {
88
+ this.validationErrors = validations.errors;
89
+ return false;
90
+ }
91
+ return true;
92
+ };
93
+ PayPalCheckout.prototype.validatePayPalRequest = function () {
94
+ var validations = (0, validation_1.validatePayPalRequest)(this.payment, this.billingAgreement);
95
+ this.validationErrors = null;
96
+ if (!validations.valid) {
97
+ this.validationErrors = validations.errors;
98
+ return false;
99
+ }
100
+ return true;
101
+ };
102
+ PayPalCheckout.prototype.errors = function () {
103
+ if (this.validationErrors !== null)
104
+ return this.validationErrors;
105
+ return null;
106
+ };
107
+ return PayPalCheckout;
108
+ }());
109
+ exports.PayPalCheckout = PayPalCheckout;
110
+ exports.default = PayPalCheckout;
111
+ //# sourceMappingURL=paypal-checkout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paypal-checkout.js","sourceRoot":"","sources":["../../../src/paypal/paypal-checkout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,167 @@
1
+ "use strict";
2
+ /**
3
+ * @jest-environment jsdom
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var types_1 = require("../shared/types");
7
+ var paypal_checkout_1 = require("./paypal-checkout");
8
+ var paypal_button_1 = require("./paypal-button");
9
+ var validation_1 = require("./validation");
10
+ jest.mock('../../src/paypal/paypal-button');
11
+ var eventManager = require('../../src/shared/event-manager');
12
+ eventManager.emit = jest.fn();
13
+ var paymentIntent = {
14
+ payment: {
15
+ amount: 1000,
16
+ currency: 'AUD',
17
+ reference: 'ref_12345',
18
+ hide_card_holder: false,
19
+ },
20
+ verification: 'ver_12345'
21
+ };
22
+ var payPalPaymentMethod = {
23
+ intent: "capture",
24
+ purchases: [
25
+ {
26
+ amount: {
27
+ itemTotal: 9000,
28
+ shipping: 2000,
29
+ taxTotal: 1000
30
+ },
31
+ items: [
32
+ {
33
+ name: 'T-Shirt',
34
+ unitAmount: 9000,
35
+ tax: 1000,
36
+ qty: 1
37
+ }
38
+ ]
39
+ }
40
+ ]
41
+ };
42
+ describe('validatePayPalSetup()', function () {
43
+ it('returns error when params are missing', function () {
44
+ var props = {};
45
+ var result = (0, validation_1.validatePayPalSetup)(props);
46
+ expect(result.valid).toEqual(false);
47
+ expect(result.errors).toEqual([
48
+ 'currency is missing.',
49
+ 'containerId is missing.',
50
+ 'payment is missing.'
51
+ ]);
52
+ });
53
+ });
54
+ describe('validatePayPalRequest()', function () {
55
+ var paymentMethod;
56
+ beforeEach(function () {
57
+ paymentMethod = {
58
+ type: types_1.PaymentMethodType.PAYPAL_ORDER,
59
+ data: payPalPaymentMethod
60
+ };
61
+ });
62
+ it('returns when order params are missing', function () {
63
+ var _paymentMethod = paymentMethod.data;
64
+ delete _paymentMethod['purchases'];
65
+ var props = {
66
+ paymentIntent: paymentIntent,
67
+ paymentMethod: {
68
+ type: types_1.PaymentMethodType.PAYPAL_ORDER,
69
+ data: _paymentMethod
70
+ }
71
+ };
72
+ var result = (0, validation_1.validatePayPalRequest)(props);
73
+ expect(result.valid).toEqual(false);
74
+ expect(result.errors).toEqual([
75
+ 'purchases is missing.',
76
+ ]);
77
+ });
78
+ it('returns when paymentMethod.type is missing', function () {
79
+ var _paymentMethod = paymentMethod;
80
+ delete _paymentMethod['type'];
81
+ var props = {
82
+ paymentIntent: paymentIntent,
83
+ paymentMethod: _paymentMethod
84
+ };
85
+ var result = (0, validation_1.validatePayPalRequest)(props);
86
+ expect(result.valid).toEqual(false);
87
+ expect(result.errors).toEqual([
88
+ 'paymentMethod.type is missing.',
89
+ ]);
90
+ });
91
+ it('returns when paymentIntent/paymentMethod are missing', function () {
92
+ var props = {};
93
+ var result = (0, validation_1.validatePayPalRequest)(props);
94
+ expect(result.valid).toEqual(false);
95
+ expect(result.errors).toEqual([
96
+ 'paymentMethod is missing.', 'paymentIntent is missing.'
97
+ ]);
98
+ });
99
+ it('returns when intent in invalid', function () {
100
+ var _paymentMethod = paymentMethod.data;
101
+ //@ts-ignore
102
+ _paymentMethod['intent'] = 'INVALID';
103
+ var props = {
104
+ paymentIntent: paymentIntent,
105
+ paymentMethod: {
106
+ type: types_1.PaymentMethodType.PAYPAL_ORDER,
107
+ data: _paymentMethod
108
+ }
109
+ };
110
+ var result = (0, validation_1.validatePayPalRequest)(props);
111
+ expect(result.valid).toEqual(false);
112
+ expect(result.errors).toEqual(['intent is invalid, must be one of [capture, authorize].']);
113
+ });
114
+ });
115
+ describe('PayPalCheckout', function () {
116
+ var instance;
117
+ beforeEach(function () {
118
+ jest.clearAllMocks();
119
+ // @ts-ignore
120
+ paypal_button_1.PayPalButton.mockImplementation(function () {
121
+ return {
122
+ render: function () { return true; }
123
+ };
124
+ });
125
+ var payPalPaymentMethod = {
126
+ intent: 'capture',
127
+ purchases: [
128
+ {
129
+ amount: {
130
+ itemTotal: 9000,
131
+ shipping: 2000,
132
+ taxTotal: 1000
133
+ },
134
+ items: [
135
+ {
136
+ name: 'T-Shirt',
137
+ unitAmount: 9000,
138
+ tax: 1000,
139
+ qty: 1
140
+ }
141
+ ]
142
+ }
143
+ ]
144
+ };
145
+ var paymentMethod = {
146
+ type: types_1.PaymentMethodType.PAYPAL_ORDER,
147
+ data: payPalPaymentMethod
148
+ };
149
+ instance = new paypal_checkout_1.PayPalCheckout({
150
+ currency: 'AUD',
151
+ payment: {
152
+ paymentIntent: paymentIntent,
153
+ paymentMethod: paymentMethod
154
+ },
155
+ containerId: 'containerId',
156
+ });
157
+ });
158
+ describe('render()', function () {
159
+ it('calls paypal.render()', function () {
160
+ instance.paypal = new paypal_button_1.PayPalButton();
161
+ var spy = jest.spyOn(instance.paypal, 'render');
162
+ instance.render();
163
+ expect(spy).toHaveBeenCalledTimes(1);
164
+ });
165
+ });
166
+ });
167
+ //# sourceMappingURL=paypal-checkout.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paypal-checkout.test.js","sourceRoot":"","sources":["../../../src/paypal/paypal-checkout.test.ts"],"names":[],"mappings":"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"}