@fat-zebra/sdk 1.5.4 → 1.5.5
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.
- package/dist/local/fatzebra.js.map +1 -1
- package/dist/paypal/paypal-button.d.ts +31 -0
- package/dist/paypal/paypal-button.js +199 -0
- package/dist/paypal/paypal-checkout.d.ts +21 -0
- package/dist/paypal/paypal-checkout.js +100 -0
- package/dist/paypal/types.d.ts +188 -0
- package/dist/paypal/types.js +5 -0
- package/dist/paypal/validation.d.ts +4 -0
- package/dist/paypal/validation.js +65 -0
- package/dist/production/fatzebra.js.LICENSE.txt +1 -0
- package/dist/react/{applePayUrl.d.ts → url.d.ts} +2 -2
- package/dist/react/url.js +33 -0
- package/dist/scripts/release-package.js +324 -0
- package/dist/scripts/release-package.js.map +1 -0
- package/dist/src/applepay/applepay.js +198 -0
- package/dist/src/applepay/applepay.js.map +1 -0
- package/dist/src/applepay/clients/apple-pay-client.js +66 -0
- package/dist/src/applepay/clients/apple-pay-client.js.map +1 -0
- package/dist/src/applepay/clients/paynow-client.js +96 -0
- package/dist/src/applepay/clients/paynow-client.js.map +1 -0
- package/dist/src/applepay/index.js +6 -0
- package/dist/src/applepay/index.js.map +1 -0
- package/dist/src/click_to_pay/clicktopay.test.js +131 -0
- package/dist/src/click_to_pay/clicktopay.test.js.map +1 -0
- package/dist/src/click_to_pay/index.js +135 -0
- package/dist/src/click_to_pay/index.js.map +1 -0
- package/dist/src/click_to_pay/types.js +3 -0
- package/dist/src/click_to_pay/types.js.map +1 -0
- package/dist/src/hpp/hpp.js +230 -0
- package/dist/src/hpp/hpp.js.map +1 -0
- package/dist/src/hpp/hpp.test.js +137 -0
- package/dist/src/hpp/hpp.test.js.map +1 -0
- package/dist/src/hpp/index.js +6 -0
- package/dist/src/hpp/index.js.map +1 -0
- package/dist/src/index.js +15 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/main.js +229 -0
- package/dist/src/main.js.map +1 -0
- package/dist/src/main.test.js +236 -0
- package/dist/src/main.test.js.map +1 -0
- package/dist/src/paypal/paypal-button.js +311 -0
- package/dist/src/paypal/paypal-button.js.map +1 -0
- package/dist/src/paypal/paypal-button.test.js +41 -0
- package/dist/src/paypal/paypal-button.test.js.map +1 -0
- package/dist/src/paypal/paypal-checkout.js +111 -0
- package/dist/src/paypal/paypal-checkout.js.map +1 -0
- package/dist/src/paypal/paypal-checkout.test.js +167 -0
- package/dist/src/paypal/paypal-checkout.test.js.map +1 -0
- package/dist/src/paypal/types.js +9 -0
- package/dist/src/paypal/types.js.map +1 -0
- package/dist/src/paypal/validation.js +73 -0
- package/dist/src/paypal/validation.js.map +1 -0
- package/dist/src/react/VerifyCard.js +29 -0
- package/dist/src/react/VerifyCard.js.map +1 -0
- package/dist/src/react/VerifyExistingCard.js +30 -0
- package/dist/src/react/VerifyExistingCard.js.map +1 -0
- package/dist/src/react/index.js +13 -0
- package/dist/src/react/index.js.map +1 -0
- package/dist/src/react/paymentUrl.js +60 -0
- package/dist/src/react/paymentUrl.js.map +1 -0
- package/dist/src/react/paymentUrl.test.js +88 -0
- package/dist/src/react/paymentUrl.test.js.map +1 -0
- package/dist/src/react/submitForm.js +13 -0
- package/dist/src/react/submitForm.js.map +1 -0
- package/dist/src/react/url.js +60 -0
- package/dist/src/react/url.js.map +1 -0
- package/dist/src/react/url.test.js +88 -0
- package/dist/src/react/url.test.js.map +1 -0
- package/dist/src/react/useFatZebra.js +119 -0
- package/dist/src/react/useFatZebra.js.map +1 -0
- package/dist/src/react/verifyUrl.js +49 -0
- package/dist/src/react/verifyUrl.js.map +1 -0
- package/dist/src/sca/cardinal.js +145 -0
- package/dist/src/sca/cardinal.js.map +1 -0
- package/dist/src/sca/cardinal.test.js +77 -0
- package/dist/src/sca/cardinal.test.js.map +1 -0
- package/dist/src/sca/eci-mappings.js +63 -0
- package/dist/src/sca/eci-mappings.js.map +1 -0
- package/dist/src/sca/eci-mappings.test.js +31 -0
- package/dist/src/sca/eci-mappings.test.js.map +1 -0
- package/dist/src/sca/index.js +382 -0
- package/dist/src/sca/index.js.map +1 -0
- package/dist/src/sca/index.test.js +624 -0
- package/dist/src/sca/index.test.js.map +1 -0
- package/dist/src/sca/scenarios/enrollment.js +161 -0
- package/dist/src/sca/scenarios/enrollment.js.map +1 -0
- package/dist/src/sca/scenarios/index.js +8 -0
- package/dist/src/sca/scenarios/index.js.map +1 -0
- package/dist/src/sca/scenarios/validation.js +139 -0
- package/dist/src/sca/scenarios/validation.js.map +1 -0
- package/dist/src/sca/types.js +57 -0
- package/dist/src/sca/types.js.map +1 -0
- package/dist/src/shared/api-gateway-client.js +148 -0
- package/dist/src/shared/api-gateway-client.js.map +1 -0
- package/dist/src/shared/bridge-client.js +24 -0
- package/dist/src/shared/bridge-client.js.map +1 -0
- package/dist/src/shared/constants.js +19 -0
- package/dist/src/shared/constants.js.map +1 -0
- package/dist/src/shared/env.development.js +12 -0
- package/dist/src/shared/env.development.js.map +1 -0
- package/dist/src/shared/env.js +50 -0
- package/dist/src/shared/env.js.map +1 -0
- package/dist/src/shared/envs/local.js +12 -0
- package/dist/src/shared/envs/local.js.map +1 -0
- package/dist/src/shared/envs/production.js +12 -0
- package/dist/src/shared/envs/production.js.map +1 -0
- package/dist/src/shared/envs/sandbox.js +12 -0
- package/dist/src/shared/envs/sandbox.js.map +1 -0
- package/dist/src/shared/envs/staging.js +12 -0
- package/dist/src/shared/envs/staging.js.map +1 -0
- package/dist/src/shared/event-manager.js +24 -0
- package/dist/src/shared/event-manager.js.map +1 -0
- package/dist/src/shared/post-message-client.js +127 -0
- package/dist/src/shared/post-message-client.js.map +1 -0
- package/dist/src/shared/post-message-client.test.js +58 -0
- package/dist/src/shared/post-message-client.test.js.map +1 -0
- package/dist/src/shared/types.js +36 -0
- package/dist/src/shared/types.js.map +1 -0
- package/dist/src/shared/types.test.js +55 -0
- package/dist/src/shared/types.test.js.map +1 -0
- package/dist/src/shared/util.js +96 -0
- package/dist/src/shared/util.js.map +1 -0
- package/dist/src/shared/util.test.js +148 -0
- package/dist/src/shared/util.test.js.map +1 -0
- package/dist/src/validation/index.js +12 -0
- package/dist/src/validation/index.js.map +1 -0
- package/dist/src/validation/schemas/click-to-pay/load-params.json +34 -0
- package/dist/src/validation/schemas/click-to-pay/options.json +23 -0
- package/dist/src/validation/schemas/click-to-pay/payment-intent.json +42 -0
- package/dist/src/validation/schemas/customer.json +38 -0
- package/dist/src/validation/schemas/hpp-load-params.json +40 -0
- package/dist/src/validation/schemas/hpp-options.json +48 -0
- package/dist/src/validation/schemas/payment-intent.json +48 -0
- package/dist/src/validation/schemas/payment-method.json +83 -0
- package/dist/src/validation/schemas/verify-card-options.json +15 -0
- package/dist/src/validation/schemas/verify-card-params.json +24 -0
- package/dist/src/validation/validation-helper.js +10 -0
- package/dist/src/validation/validation-helper.js.map +1 -0
- package/dist/src/validation/validation-helper.test.js +34 -0
- package/dist/src/validation/validation-helper.test.js.map +1 -0
- package/dist/src/validation/validators/click-to-pay-load-params-validator.js +19 -0
- package/dist/src/validation/validators/click-to-pay-load-params-validator.js.map +1 -0
- package/dist/src/validation/validators/hpp-load-params-validator.js +21 -0
- package/dist/src/validation/validators/hpp-load-params-validator.js.map +1 -0
- package/dist/src/validation/validators/hpp-load-params-validator.test.js +56 -0
- package/dist/src/validation/validators/hpp-load-params-validator.test.js.map +1 -0
- package/dist/src/validation/validators/verify-card-params-validator.js +23 -0
- package/dist/src/validation/validators/verify-card-params-validator.js.map +1 -0
- package/dist/src/version.js +5 -0
- package/dist/src/version.js.map +1 -0
- package/dist/tests/helpers/api-gateway-mock.js +37 -0
- package/dist/tests/helpers/api-gateway-mock.js.map +1 -0
- package/package.json +11 -5
- package/tsconfig.json +1 -0
- package/.idea/fatzebra-js.iml +0 -12
- package/.idea/modules.xml +0 -8
- package/.idea/vcs.xml +0 -6
- package/dist/applepay/applepaymanager.d.ts +0 -28
- package/dist/applepay/applepaymanager.js +0 -115
- package/dist/fatzebra.css +0 -91
- package/dist/local/fatzebra.js +0 -18991
- package/dist/react/ApplePay.d.ts +0 -9
- package/dist/react/ApplePay.js +0 -11
- package/dist/react/ApplePayButton.d.ts +0 -10
- package/dist/react/ApplePayButton.js +0 -33
- package/dist/react/applePayUrl.js +0 -19
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.validateHppLoadParams = void 0;
|
|
7
|
+
var ajv_1 = __importDefault(require("ajv"));
|
|
8
|
+
var customer_json_1 = __importDefault(require("../schemas/customer.json"));
|
|
9
|
+
var payment_intent_json_1 = __importDefault(require("../schemas/payment-intent.json"));
|
|
10
|
+
var hpp_options_json_1 = __importDefault(require("../schemas/hpp-options.json"));
|
|
11
|
+
var hpp_load_params_json_1 = __importDefault(require("../schemas/hpp-load-params.json"));
|
|
12
|
+
var validator = new ajv_1.default({
|
|
13
|
+
allErrors: true,
|
|
14
|
+
jsonPointers: true,
|
|
15
|
+
})
|
|
16
|
+
.addSchema(customer_json_1.default)
|
|
17
|
+
.addSchema(payment_intent_json_1.default)
|
|
18
|
+
.addSchema(hpp_options_json_1.default)
|
|
19
|
+
.compile(hpp_load_params_json_1.default);
|
|
20
|
+
exports.validateHppLoadParams = validator;
|
|
21
|
+
//# sourceMappingURL=hpp-load-params-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hpp-load-params-validator.js","sourceRoot":"","sources":["../../../../src/validation/validators/hpp-load-params-validator.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAqB;AACrB,2EAAqD;AACrD,uFAAgE;AAChE,iFAA0D;AAC1D,yFAAiE;AAEjE,IAAM,SAAS,GAAG,IAAI,aAAG,CAAC;IACxB,SAAS,EAAE,IAAI;IACf,YAAY,EAAE,IAAI;CACnB,CAAC;KACC,SAAS,CAAC,uBAAc,CAAC;KACzB,SAAS,CAAC,6BAAmB,CAAC;KAC9B,SAAS,CAAC,0BAAgB,CAAC;KAC3B,OAAO,CAAC,8BAAmB,CAAC,CAAA;AAGhB,0CAAqB"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var hpp_load_params_validator_1 = require("./hpp-load-params-validator");
|
|
4
|
+
var customer = {
|
|
5
|
+
firstName: 'John',
|
|
6
|
+
lastName: 'Doe',
|
|
7
|
+
email: 'john.doe@gmail.com',
|
|
8
|
+
address: '123 Sesame St.',
|
|
9
|
+
city: 'Sin City',
|
|
10
|
+
postcode: '2000',
|
|
11
|
+
state: 'NSW',
|
|
12
|
+
country: 'Australia'
|
|
13
|
+
};
|
|
14
|
+
var paymentIntent = {
|
|
15
|
+
payment: {
|
|
16
|
+
amount: 100,
|
|
17
|
+
currency: 'AUD',
|
|
18
|
+
reference: 'ref123',
|
|
19
|
+
hide_card_holder: false,
|
|
20
|
+
},
|
|
21
|
+
verification: 'ver123'
|
|
22
|
+
};
|
|
23
|
+
var input;
|
|
24
|
+
beforeEach(function () {
|
|
25
|
+
input = {
|
|
26
|
+
containerId: 'fz-iframe',
|
|
27
|
+
customer: customer,
|
|
28
|
+
paymentIntent: paymentIntent,
|
|
29
|
+
options: {
|
|
30
|
+
tokenizeOnly: false
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
});
|
|
34
|
+
describe('hppLoadParamsValidator', function () {
|
|
35
|
+
describe('hppOptions: tokenizeOnly', function () {
|
|
36
|
+
it('does not require customer object when true', function () {
|
|
37
|
+
delete input.customer;
|
|
38
|
+
input.options.tokenizeOnly = true;
|
|
39
|
+
var valid = (0, hpp_load_params_validator_1.validateHppLoadParams)(input);
|
|
40
|
+
expect(valid).toEqual(true);
|
|
41
|
+
});
|
|
42
|
+
it('require customer object when false', function () {
|
|
43
|
+
input.customer = customer;
|
|
44
|
+
input.options.tokenizeOnly = false;
|
|
45
|
+
var valid = (0, hpp_load_params_validator_1.validateHppLoadParams)(input);
|
|
46
|
+
expect(valid).toEqual(true);
|
|
47
|
+
});
|
|
48
|
+
it('require customer object when not set', function () {
|
|
49
|
+
input.customer = customer;
|
|
50
|
+
delete input.options.tokenizeOnly;
|
|
51
|
+
var valid = (0, hpp_load_params_validator_1.validateHppLoadParams)(input);
|
|
52
|
+
expect(valid).toEqual(true);
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
//# sourceMappingURL=hpp-load-params-validator.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hpp-load-params-validator.test.js","sourceRoot":"","sources":["../../../../src/validation/validators/hpp-load-params-validator.test.ts"],"names":[],"mappings":";;AAAA,yEAAmE;AAGnE,IAAM,QAAQ,GAAG;IACf,SAAS,EAAE,MAAM;IACjB,QAAQ,EAAE,KAAK;IACf,KAAK,EAAE,oBAAoB;IAC3B,OAAO,EAAE,gBAAgB;IACzB,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE,MAAM;IAChB,KAAK,EAAE,KAAK;IACZ,OAAO,EAAE,WAAW;CACrB,CAAA;AAED,IAAM,aAAa,GAAG;IACpB,OAAO,EAAE;QACP,MAAM,EAAE,GAAG;QACX,QAAQ,EAAE,KAAK;QACf,SAAS,EAAE,QAAQ;QACnB,gBAAgB,EAAE,KAAK;KACxB;IACD,YAAY,EAAE,QAAQ;CACvB,CAAA;AAED,IAAI,KAAoB,CAAA;AAExB,UAAU,CAAC;IACT,KAAK,GAAG;QACN,WAAW,EAAE,WAAW;QACxB,QAAQ,UAAA;QACR,aAAa,eAAA;QACb,OAAO,EAAE;YACP,YAAY,EAAE,KAAK;SACpB;KACF,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,wBAAwB,EAAE;IACjC,QAAQ,CAAC,0BAA0B,EAAE;QACnC,EAAE,CAAC,4CAA4C,EAAE;YAC/C,OAAO,KAAK,CAAC,QAAQ,CAAA;YACrB,KAAK,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAA;YAEjC,IAAM,KAAK,GAAG,IAAA,iDAAqB,EAAC,KAAK,CAAC,CAAA;YAC1C,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAC7B,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,oCAAoC,EAAE;YACvC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAA;YACzB,KAAK,CAAC,OAAO,CAAC,YAAY,GAAG,KAAK,CAAA;YAElC,IAAM,KAAK,GAAG,IAAA,iDAAqB,EAAC,KAAK,CAAC,CAAA;YAC1C,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAC7B,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,sCAAsC,EAAE;YACzC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAA;YACzB,OAAO,KAAK,CAAC,OAAO,CAAC,YAAY,CAAA;YAEjC,IAAM,KAAK,GAAG,IAAA,iDAAqB,EAAC,KAAK,CAAC,CAAA;YAC1C,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAC7B,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.validateVerifyCardParams = void 0;
|
|
7
|
+
var ajv_1 = __importDefault(require("ajv"));
|
|
8
|
+
var customer_json_1 = __importDefault(require("../schemas/customer.json"));
|
|
9
|
+
var payment_intent_json_1 = __importDefault(require("../schemas/payment-intent.json"));
|
|
10
|
+
var payment_method_json_1 = __importDefault(require("../schemas/payment-method.json"));
|
|
11
|
+
var verify_card_options_json_1 = __importDefault(require("../schemas/verify-card-options.json"));
|
|
12
|
+
var verify_card_params_json_1 = __importDefault(require("../schemas/verify-card-params.json"));
|
|
13
|
+
var validator = new ajv_1.default({
|
|
14
|
+
allErrors: true,
|
|
15
|
+
jsonPointers: true,
|
|
16
|
+
})
|
|
17
|
+
.addSchema(customer_json_1.default)
|
|
18
|
+
.addSchema(payment_intent_json_1.default)
|
|
19
|
+
.addSchema(payment_method_json_1.default)
|
|
20
|
+
.addSchema(verify_card_options_json_1.default)
|
|
21
|
+
.compile(verify_card_params_json_1.default);
|
|
22
|
+
exports.validateVerifyCardParams = validator;
|
|
23
|
+
//# sourceMappingURL=verify-card-params-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify-card-params-validator.js","sourceRoot":"","sources":["../../../../src/validation/validators/verify-card-params-validator.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAqB;AAErB,2EAAqD;AACrD,uFAAgE;AAChE,uFAAgE;AAChE,iGAAyE;AACzE,+FAAuE;AAEvE,IAAM,SAAS,GAAG,IAAI,aAAG,CAAC;IACxB,SAAS,EAAE,IAAI;IACf,YAAY,EAAE,IAAI;CACnB,CAAC;KACD,SAAS,CAAC,uBAAc,CAAC;KACzB,SAAS,CAAC,6BAAmB,CAAC;KAC9B,SAAS,CAAC,6BAAmB,CAAC;KAC9B,SAAS,CAAC,kCAAuB,CAAC;KAClC,OAAO,CAAC,iCAAsB,CAAC,CAAA;AAGlB,6CAAwB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AAAa,QAAA,OAAO,GAAG,OAAO,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.mockCustomRequest = exports.mockRequest = void 0;
|
|
7
|
+
var nock_1 = __importDefault(require("nock"));
|
|
8
|
+
var env_1 = __importDefault(require("../../src/shared/env"));
|
|
9
|
+
var apiGatewayUrl = env_1.default.sandbox.apiUrl;
|
|
10
|
+
var mockRequest = function (config) {
|
|
11
|
+
(0, nock_1.default)(apiGatewayUrl)
|
|
12
|
+
.defaultReplyHeaders({
|
|
13
|
+
'Access-Control-Allow-Origin': '*',
|
|
14
|
+
'Access-Control-Allow-Headers': 'Authorization, FZ-SDK-Version, fz-merchant-username',
|
|
15
|
+
"Content-Type": "application:json"
|
|
16
|
+
})
|
|
17
|
+
.options(config.request.path)
|
|
18
|
+
.reply(200, null)
|
|
19
|
+
.post(config.request.path, config.request.body)
|
|
20
|
+
.reply(config.response.status, config.response.body);
|
|
21
|
+
};
|
|
22
|
+
exports.mockRequest = mockRequest;
|
|
23
|
+
var mockCustomRequest = function (config) {
|
|
24
|
+
(0, nock_1.default)(apiGatewayUrl)
|
|
25
|
+
.log(console.log)
|
|
26
|
+
.defaultReplyHeaders({
|
|
27
|
+
'Access-Control-Allow-Origin': '*',
|
|
28
|
+
'Access-Control-Allow-Headers': 'Authorization',
|
|
29
|
+
"Content-Type": "application:json"
|
|
30
|
+
})
|
|
31
|
+
.options(config.request.path)
|
|
32
|
+
.reply(200, null)
|
|
33
|
+
.intercept(config.request.path, config.request.action, config.request.body)
|
|
34
|
+
.reply(config.response.status, config.response.body);
|
|
35
|
+
};
|
|
36
|
+
exports.mockCustomRequest = mockCustomRequest;
|
|
37
|
+
//# sourceMappingURL=api-gateway-mock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-gateway-mock.js","sourceRoot":"","sources":["../../../tests/helpers/api-gateway-mock.ts"],"names":[],"mappings":";;;;;;AAAA,8CAAuB;AACvB,6DAAsC;AAEtC,IAAM,aAAa,GAAG,aAAG,CAAC,OAAO,CAAC,MAAM,CAAA;AAcxC,IAAM,WAAW,GAAG,UAAC,MAAyB;IAC5C,IAAA,cAAI,EAAC,aAAa,CAAC;SAClB,mBAAmB,CAAC;QACnB,6BAA6B,EAAE,GAAG;QAClC,8BAA8B,EAAE,qDAAqD;QACrF,cAAc,EAAE,kBAAkB;KACnC,CAAC;SACD,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;SAC5B,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC;SAChB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;SAC9C,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;AACtD,CAAC,CAAA;AAiBC,kCAAW;AAfb,IAAM,iBAAiB,GAAG,UAAC,MAAyB;IAClD,IAAA,cAAI,EAAC,aAAa,CAAC;SAClB,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;SAChB,mBAAmB,CAAC;QACnB,6BAA6B,EAAE,GAAG;QAClC,8BAA8B,EAAE,eAAe;QAC/C,cAAc,EAAE,kBAAkB;KACnC,CAAC;SACD,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;SAC5B,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC;SAChB,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;SAC1E,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;AACtD,CAAC,CAAA;AAIC,8CAAiB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fat-zebra/sdk",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.5",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -23,6 +23,10 @@
|
|
|
23
23
|
"author": "",
|
|
24
24
|
"license": "ISC",
|
|
25
25
|
"devDependencies": {
|
|
26
|
+
"@testing-library/dom": "^10.4.0",
|
|
27
|
+
"@testing-library/react": "^16.0.0",
|
|
28
|
+
"@testing-library/react-hooks": "^8.0.1",
|
|
29
|
+
"@testing-library/user-event": "^14.5.2",
|
|
26
30
|
"@types/ajv": "^1.0.0",
|
|
27
31
|
"@types/axios": "^0.14.0",
|
|
28
32
|
"@types/dotenv": "^8.2.0",
|
|
@@ -36,16 +40,21 @@
|
|
|
36
40
|
"dotenv-webpack": "^8.0.0",
|
|
37
41
|
"ejs": "^3.0.1",
|
|
38
42
|
"html-webpack-plugin": "^5.3.1",
|
|
43
|
+
"inquirer": "^10.0.1",
|
|
39
44
|
"jest": "^29.6.1",
|
|
40
45
|
"jest-environment-jsdom": "^29.6.1",
|
|
41
46
|
"jest-localstorage-mock": "^2.4.22",
|
|
42
47
|
"jsdom": "^16.2.1",
|
|
43
48
|
"jsonwebtoken": "^9.0.0",
|
|
44
49
|
"nock": "^12.0.1",
|
|
50
|
+
"react": "^18.3.1",
|
|
51
|
+
"react-dom": "^18.3.1",
|
|
52
|
+
"simple-git": "^3.25.0",
|
|
45
53
|
"source-map-loader": "^0.2.4",
|
|
46
54
|
"terser-webpack-plugin": "^4.1.0",
|
|
47
55
|
"ts-jest": "^29.1.1",
|
|
48
56
|
"ts-loader": "^9.4.4",
|
|
57
|
+
"ts-node": "^10.9.2",
|
|
49
58
|
"typescript": "^5.1.6",
|
|
50
59
|
"webpack": "^5.76.0",
|
|
51
60
|
"webpack-cli": "^4.10.0",
|
|
@@ -55,9 +64,6 @@
|
|
|
55
64
|
"ajv": "^6.12.3",
|
|
56
65
|
"axios": "^1.6.4",
|
|
57
66
|
"custom-event-polyfill": "^1.0.7",
|
|
58
|
-
"inquirer": "^10.0.1",
|
|
59
|
-
"simple-git": "^3.25.0",
|
|
60
|
-
"ts-node": "^10.9.2",
|
|
61
67
|
"ts-polyfill": "^3.8.2",
|
|
62
68
|
"url-template": "^3.1.0"
|
|
63
69
|
},
|
|
@@ -65,4 +71,4 @@
|
|
|
65
71
|
"react": ">= 16",
|
|
66
72
|
"react-dom": ">= 16"
|
|
67
73
|
}
|
|
68
|
-
}
|
|
74
|
+
}
|
package/tsconfig.json
CHANGED
package/.idea/fatzebra-js.iml
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<module type="WEB_MODULE" version="4">
|
|
3
|
-
<component name="NewModuleRootManager">
|
|
4
|
-
<content url="file://$MODULE_DIR$">
|
|
5
|
-
<excludeFolder url="file://$MODULE_DIR$/temp" />
|
|
6
|
-
<excludeFolder url="file://$MODULE_DIR$/.tmp" />
|
|
7
|
-
<excludeFolder url="file://$MODULE_DIR$/tmp" />
|
|
8
|
-
</content>
|
|
9
|
-
<orderEntry type="inheritedJdk" />
|
|
10
|
-
<orderEntry type="sourceFolder" forTests="false" />
|
|
11
|
-
</component>
|
|
12
|
-
</module>
|
package/.idea/modules.xml
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<project version="4">
|
|
3
|
-
<component name="ProjectModuleManager">
|
|
4
|
-
<modules>
|
|
5
|
-
<module fileurl="file://$PROJECT_DIR$/.idea/fatzebra-js.iml" filepath="$PROJECT_DIR$/.idea/fatzebra-js.iml" />
|
|
6
|
-
</modules>
|
|
7
|
-
</component>
|
|
8
|
-
</project>
|
package/.idea/vcs.xml
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { PaymentRequest } from './clients/apple-pay-client';
|
|
2
|
-
import * as payNow from './clients/paynow-client';
|
|
3
|
-
import { PostMessage } from '../shared/post-message-client';
|
|
4
|
-
declare class ApplePayManager {
|
|
5
|
-
private merchantId;
|
|
6
|
-
private canMakePayments;
|
|
7
|
-
private iframe;
|
|
8
|
-
private applePaySession;
|
|
9
|
-
private postMessageClient;
|
|
10
|
-
private fzPayNowDomain;
|
|
11
|
-
private username?;
|
|
12
|
-
private token?;
|
|
13
|
-
constructor(config: {
|
|
14
|
-
iframe: HTMLIFrameElement;
|
|
15
|
-
fzPayNowDomain: string;
|
|
16
|
-
username?: string;
|
|
17
|
-
token?: string;
|
|
18
|
-
});
|
|
19
|
-
initialize(): Promise<void>;
|
|
20
|
-
checkApplePayEligibility(): void;
|
|
21
|
-
notifyApplePayEligibility(): void;
|
|
22
|
-
registerEventListener(): Promise<void>;
|
|
23
|
-
purchase(request: PaymentRequest): Promise<void>;
|
|
24
|
-
extractApplePaymentRequestParams(payload: any): PaymentRequest;
|
|
25
|
-
extractPayNowPaymentAttributes(payload: any): payNow.PaymentAttributes;
|
|
26
|
-
sendMessage(payload: PostMessage): void;
|
|
27
|
-
}
|
|
28
|
-
export default ApplePayManager;
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
import { createSession, getEligibilty, } from './clients/apple-pay-client';
|
|
11
|
-
import * as payNow from './clients/paynow-client';
|
|
12
|
-
import { PostMessageClient } from '../shared/post-message-client';
|
|
13
|
-
// import * as process from "process";
|
|
14
|
-
const channel = 'applepay';
|
|
15
|
-
// const fzPayNowDomain = process.env.PAYNOW_BASE_URL
|
|
16
|
-
// do the domain handling stuff better
|
|
17
|
-
const paynowDomain = 'https://paynow.test';
|
|
18
|
-
const merchantSessionPath = '/v2/apple_pay/payment_session';
|
|
19
|
-
const purchaseTokenPath = '/v2/apple_pay/token';
|
|
20
|
-
class ApplePayManager {
|
|
21
|
-
constructor(config) {
|
|
22
|
-
// if (!config.fzPayNowDomain) {
|
|
23
|
-
// console.log('hitting i here')
|
|
24
|
-
// this.fzPayNowDomain = process?.env?.PAYNOW_BASE_URL;
|
|
25
|
-
// } else {
|
|
26
|
-
this.fzPayNowDomain = config.fzPayNowDomain;
|
|
27
|
-
this.username = config.username;
|
|
28
|
-
this.token = config.token;
|
|
29
|
-
// }
|
|
30
|
-
this.iframe = config.iframe;
|
|
31
|
-
this.postMessageClient = new PostMessageClient({
|
|
32
|
-
channel: 'applepay',
|
|
33
|
-
target: this.iframe
|
|
34
|
-
});
|
|
35
|
-
this.initialize();
|
|
36
|
-
}
|
|
37
|
-
initialize() {
|
|
38
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
39
|
-
yield this.registerEventListener();
|
|
40
|
-
this.checkApplePayEligibility();
|
|
41
|
-
this.notifyApplePayEligibility();
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
checkApplePayEligibility() {
|
|
45
|
-
if (getEligibilty()) {
|
|
46
|
-
this.canMakePayments = true;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
notifyApplePayEligibility() {
|
|
50
|
-
const message = {
|
|
51
|
-
channel,
|
|
52
|
-
subject: 'eligibility',
|
|
53
|
-
data: {
|
|
54
|
-
canMakePayments: this.canMakePayments
|
|
55
|
-
}
|
|
56
|
-
};
|
|
57
|
-
this.postMessageClient.send(message);
|
|
58
|
-
}
|
|
59
|
-
registerEventListener() {
|
|
60
|
-
return new Promise((resolve, reject) => {
|
|
61
|
-
this.postMessageClient.setEventListeners({
|
|
62
|
-
'paymentrequest': (data) => __awaiter(this, void 0, void 0, function* () {
|
|
63
|
-
yield this.purchase(data);
|
|
64
|
-
})
|
|
65
|
-
});
|
|
66
|
-
resolve();
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
purchase(request) {
|
|
70
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
71
|
-
const applePayPaymentRequest = this.extractApplePaymentRequestParams(request);
|
|
72
|
-
const payNowPaymentAttributes = this.extractPayNowPaymentAttributes(request);
|
|
73
|
-
this.applePaySession = yield createSession(applePayPaymentRequest);
|
|
74
|
-
this.applePaySession.onvalidatemerchant = (event) => __awaiter(this, void 0, void 0, function* () {
|
|
75
|
-
let merchantSession;
|
|
76
|
-
try {
|
|
77
|
-
merchantSession = yield payNow.getMerchantSession(event.validationURL, Object.assign(Object.assign({}, payNowPaymentAttributes), { merchant: this.username, domain_name: window.location.hostname, display_name: this.username }), `${paynowDomain}${merchantSessionPath}`, this.username, this.token);
|
|
78
|
-
}
|
|
79
|
-
catch (e) {
|
|
80
|
-
console.log('Unable to establish new merchant session');
|
|
81
|
-
return;
|
|
82
|
-
}
|
|
83
|
-
this.applePaySession.completeMerchantValidation(merchantSession);
|
|
84
|
-
});
|
|
85
|
-
this.applePaySession.onpaymentauthorized = (event) => __awaiter(this, void 0, void 0, function* () {
|
|
86
|
-
try {
|
|
87
|
-
yield payNow.authorizePayment(Object.assign(Object.assign({}, payNowPaymentAttributes), { merchant: this.username, token: event.payment.token }), `${paynowDomain}${purchaseTokenPath}`);
|
|
88
|
-
this.applePaySession.completePayment(window.ApplePaySession.STATUS_SUCCESS);
|
|
89
|
-
}
|
|
90
|
-
catch (e) {
|
|
91
|
-
this.applePaySession.completePayment(window.ApplePaySession.STATUS_FAILURE);
|
|
92
|
-
}
|
|
93
|
-
});
|
|
94
|
-
this.applePaySession.begin();
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
extractApplePaymentRequestParams(payload) {
|
|
98
|
-
const { countryCode, currencyCode, merchantCapabilities, supportedNetworks, total, } = payload;
|
|
99
|
-
return {
|
|
100
|
-
countryCode,
|
|
101
|
-
currencyCode,
|
|
102
|
-
merchantCapabilities,
|
|
103
|
-
supportedNetworks,
|
|
104
|
-
total,
|
|
105
|
-
};
|
|
106
|
-
}
|
|
107
|
-
extractPayNowPaymentAttributes(payload) {
|
|
108
|
-
const { paymentAttributes } = payload;
|
|
109
|
-
return paymentAttributes;
|
|
110
|
-
}
|
|
111
|
-
sendMessage(payload) {
|
|
112
|
-
this.iframe.contentWindow.postMessage(payload, this.fzPayNowDomain);
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
export default ApplePayManager;
|
package/dist/fatzebra.css
DELETED
|
@@ -1,91 +0,0 @@
|
|
|
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
|
-
}
|