@fat-zebra/sdk 1.0.5 → 1.2.1
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/CHANGELOG.md +13 -0
- package/README.md +162 -0
- package/dist/applepay/applepay.d.ts +20 -0
- package/dist/applepay/applepay.js +93 -0
- package/dist/applepay/clients/apple-pay-client.d.ts +24 -0
- package/dist/applepay/clients/apple-pay-client.js +29 -0
- package/dist/applepay/clients/paynow-client.d.ts +17 -0
- package/dist/applepay/clients/paynow-client.js +55 -0
- package/dist/applepay/index.d.ts +1 -0
- package/dist/applepay/index.js +1 -0
- package/dist/env.d.ts +5 -0
- package/dist/env.development.d.ts +5 -0
- package/dist/env.development.js +5 -0
- package/dist/env.js +5 -0
- package/dist/hpp/hpp.d.ts +61 -0
- package/dist/hpp/hpp.js +186 -0
- package/dist/hpp/index.d.ts +2 -0
- package/dist/hpp/index.js +1 -0
- package/dist/index.d.ts +5 -2
- package/dist/index.js +6 -2
- package/dist/local/fatzebra.js +17728 -0
- package/dist/local/fatzebra.js.map +1 -0
- package/dist/local/index.html +247 -0
- package/dist/main.d.ts +38 -0
- package/dist/main.js +148 -0
- 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/react/VerifyCard.d.ts +2 -4
- package/dist/react/VerifyCard.js +3 -3
- package/dist/react/url.d.ts +3 -18
- package/dist/react/url.js +3 -29
- package/dist/react/useFatZebra.d.ts +2 -3
- package/dist/react/useFatZebra.js +7 -7
- package/dist/sca/cardinal.d.ts +1 -1
- package/dist/sca/cardinal.js +1 -1
- package/dist/sca/index.d.ts +8 -5
- package/dist/sca/index.js +26 -85
- package/dist/sca/sca.d.ts +42 -0
- package/dist/sca/sca.js +273 -0
- package/dist/sca/scenarios/index.d.ts +3 -2
- package/dist/sca/types.d.ts +1 -1
- package/dist/sca/types.js +1 -1
- package/dist/shared/api-gateway-client.d.ts +7 -0
- package/dist/shared/api-gateway-client.js +35 -1
- package/dist/shared/env.d.ts +5 -0
- package/dist/shared/env.development.d.ts +5 -0
- package/dist/shared/env.development.js +5 -0
- package/dist/shared/env.js +5 -0
- package/dist/shared/event-manager.d.ts +1 -1
- package/dist/shared/event-manager.js +0 -1
- package/dist/shared/post-message-client.d.ts +1 -1
- package/dist/shared/post-message-client.js +1 -1
- package/dist/shared/types.d.ts +40 -33
- package/dist/shared/types.js +7 -1
- 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/hpp/hpp.js +230 -0
- package/dist/src/hpp/hpp.js.map +1 -0
- package/dist/src/hpp/hpp.test.js +135 -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 +7 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/main.js +225 -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/sca/__tests__/eci-mappings.test.js +31 -0
- package/dist/src/sca/__tests__/eci-mappings.test.js.map +1 -0
- package/dist/src/sca/__tests__/index.test.js +558 -0
- package/dist/src/sca/__tests__/index.test.js.map +1 -0
- package/dist/src/sca/cardinal.js +110 -0
- package/dist/src/sca/cardinal.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 +388 -0
- package/dist/src/sca/index.js.map +1 -0
- package/dist/src/sca/index.test.js +558 -0
- package/dist/src/sca/index.test.js.map +1 -0
- package/dist/src/sca/scenarios/enrollment.js +150 -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 +128 -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 +150 -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/event-manager.js +15 -0
- package/dist/src/shared/event-manager.js.map +1 -0
- package/dist/src/shared/post-message-client.js +107 -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 +47 -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 +10 -0
- package/dist/src/validation/index.js.map +1 -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/hpp-load-params-validator.js +17 -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 +18 -0
- package/dist/src/validation/validators/verify-card-params-validator.js.map +1 -0
- package/dist/tests/helpers/api-gateway-mock.js +36 -0
- package/dist/tests/helpers/api-gateway-mock.js.map +1 -0
- package/dist/validation/index.d.ts +3 -0
- package/dist/validation/index.js +3 -0
- package/dist/validation/schemas/customer.json +38 -0
- package/dist/validation/schemas/hpp-load-params.json +40 -0
- package/dist/validation/schemas/hpp-options.json +48 -0
- package/dist/validation/schemas/payment-intent.json +48 -0
- package/dist/validation/schemas/payment-method.json +83 -0
- package/dist/validation/schemas/verify-card-options.json +15 -0
- package/dist/validation/schemas/verify-card-params.json +24 -0
- package/dist/validation/validation-helper.d.ts +3 -0
- package/dist/validation/validation-helper.js +6 -0
- package/dist/validation/validators/hpp-load-params-validator.d.ts +3 -0
- package/dist/validation/validators/hpp-load-params-validator.js +14 -0
- package/dist/validation/validators/verify-card-params-validator.d.ts +3 -0
- package/dist/validation/validators/verify-card-params-validator.js +16 -0
- package/docker-compose.yml +16 -0
- package/package.json +44 -13
- package/tsconfig.json +8 -18
- package/tsconfig.package.json +25 -0
- package/fat-zebra-sdk-1.0.2.tgz +0 -0
- package/fatzebra-sdk-1.0.0.tgz +0 -0
- package/index.js +0 -0
- package/jest.config.js +0 -16
- package/yarn-error.log +0 -2374
|
@@ -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;AAErB,IAAM,SAAS,GAAG,IAAI,aAAG,CAAC;IACxB,SAAS,EAAE,IAAI;IACf,YAAY,EAAE,IAAI;CACnB,CAAC;KACC,SAAS,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;KAC9C,SAAS,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;KACpD,SAAS,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;KACjD,OAAO,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC,CAAA;AAGvC,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,18 @@
|
|
|
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 validator = new ajv_1.default({
|
|
9
|
+
allErrors: true,
|
|
10
|
+
jsonPointers: true,
|
|
11
|
+
})
|
|
12
|
+
.addSchema(require('../schemas/customer.json'))
|
|
13
|
+
.addSchema(require('../schemas/payment-intent.json'))
|
|
14
|
+
.addSchema(require('../schemas/payment-method.json'))
|
|
15
|
+
.addSchema(require('../schemas/verify-card-options.json'))
|
|
16
|
+
.compile(require('../schemas/verify-card-params.json'));
|
|
17
|
+
exports.validateVerifyCardParams = validator;
|
|
18
|
+
//# 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,IAAM,SAAS,GAAG,IAAI,aAAG,CAAC;IACxB,SAAS,EAAE,IAAI;IACf,YAAY,EAAE,IAAI;CACnB,CAAC;KACD,SAAS,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;KAC9C,SAAS,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;KACpD,SAAS,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;KACpD,SAAS,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC;KACzD,OAAO,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC,CAAA;AAGzC,6CAAwB"}
|
|
@@ -0,0 +1,36 @@
|
|
|
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 apiGatewayUrl = process.env.API_GATEWAY_URL;
|
|
9
|
+
var mockRequest = function (config) {
|
|
10
|
+
(0, nock_1.default)(apiGatewayUrl)
|
|
11
|
+
.defaultReplyHeaders({
|
|
12
|
+
'Access-Control-Allow-Origin': '*',
|
|
13
|
+
'Access-Control-Allow-Headers': 'Authorization, FZ-SDK-Version, fz-merchant-username',
|
|
14
|
+
"Content-Type": "application:json"
|
|
15
|
+
})
|
|
16
|
+
.options(config.request.path)
|
|
17
|
+
.reply(200, null)
|
|
18
|
+
.post(config.request.path, config.request.body)
|
|
19
|
+
.reply(config.response.status, config.response.body);
|
|
20
|
+
};
|
|
21
|
+
exports.mockRequest = mockRequest;
|
|
22
|
+
var mockCustomRequest = function (config) {
|
|
23
|
+
(0, nock_1.default)(apiGatewayUrl)
|
|
24
|
+
.log(console.log)
|
|
25
|
+
.defaultReplyHeaders({
|
|
26
|
+
'Access-Control-Allow-Origin': '*',
|
|
27
|
+
'Access-Control-Allow-Headers': 'Authorization',
|
|
28
|
+
"Content-Type": "application:json"
|
|
29
|
+
})
|
|
30
|
+
.options(config.request.path)
|
|
31
|
+
.reply(200, null)
|
|
32
|
+
.intercept(config.request.path, config.request.action, config.request.body)
|
|
33
|
+
.reply(config.response.status, config.response.body);
|
|
34
|
+
};
|
|
35
|
+
exports.mockCustomRequest = mockCustomRequest;
|
|
36
|
+
//# 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;AAEvB,IAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAA;AAcjD,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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$id": "https://www.fatzebra.com/schemas/customer.json",
|
|
3
|
+
"type": "object",
|
|
4
|
+
"definitions": {
|
|
5
|
+
"Customer": {
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"properties": {
|
|
9
|
+
"firstName": {
|
|
10
|
+
"type": "string"
|
|
11
|
+
},
|
|
12
|
+
"lastName": {
|
|
13
|
+
"type": "string"
|
|
14
|
+
},
|
|
15
|
+
"email": {
|
|
16
|
+
"type": "string",
|
|
17
|
+
"format": "email"
|
|
18
|
+
},
|
|
19
|
+
"address": {
|
|
20
|
+
"type": "string"
|
|
21
|
+
},
|
|
22
|
+
"city": {
|
|
23
|
+
"type": "string"
|
|
24
|
+
},
|
|
25
|
+
"postcode": {
|
|
26
|
+
"type": "string"
|
|
27
|
+
},
|
|
28
|
+
"state": {
|
|
29
|
+
"type": "string"
|
|
30
|
+
},
|
|
31
|
+
"country": {
|
|
32
|
+
"type": "string"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"required": []
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$id": "https://www.fatzebra.com/schemas/hpp-load-params.json",
|
|
3
|
+
"type": "object",
|
|
4
|
+
"additionalProperties": false,
|
|
5
|
+
"required": [
|
|
6
|
+
"containerId",
|
|
7
|
+
"paymentIntent"
|
|
8
|
+
],
|
|
9
|
+
"properties": {
|
|
10
|
+
"version": {
|
|
11
|
+
"type": "number"
|
|
12
|
+
},
|
|
13
|
+
"containerId": {
|
|
14
|
+
"type": "string"
|
|
15
|
+
},
|
|
16
|
+
"customer": {
|
|
17
|
+
"$ref": "customer.json#/definitions/Customer"
|
|
18
|
+
},
|
|
19
|
+
"paymentIntent": {
|
|
20
|
+
"$ref": "payment-intent.json#/definitions/PaymentIntent"
|
|
21
|
+
},
|
|
22
|
+
"options": {
|
|
23
|
+
"$ref": "hpp-options.json#/definitions/HppOptions"
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"if": {
|
|
27
|
+
"properties": {
|
|
28
|
+
"options": {
|
|
29
|
+
"propertes": {
|
|
30
|
+
"tokenizeOnly": {
|
|
31
|
+
"boolean": true
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"else": {
|
|
38
|
+
"required": []
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$id": "https://www.fatzebra.com/schemas/hpp-options.json",
|
|
3
|
+
"type": "object",
|
|
4
|
+
"definitions": {
|
|
5
|
+
"HppOptions": {
|
|
6
|
+
"type": "object",
|
|
7
|
+
"properties": {
|
|
8
|
+
"buttonText": {
|
|
9
|
+
"type": "string"
|
|
10
|
+
},
|
|
11
|
+
"cards": {
|
|
12
|
+
"type": "string"
|
|
13
|
+
},
|
|
14
|
+
"challengeWindowSize": {
|
|
15
|
+
"type": "string",
|
|
16
|
+
"enum": ["01", "02", "03", "04", "05"]
|
|
17
|
+
},
|
|
18
|
+
"css": {
|
|
19
|
+
"type": "string"
|
|
20
|
+
},
|
|
21
|
+
"cssSignature": {
|
|
22
|
+
"type": "string"
|
|
23
|
+
},
|
|
24
|
+
"enableSca": {
|
|
25
|
+
"type": "boolean"
|
|
26
|
+
},
|
|
27
|
+
"hideButton": {
|
|
28
|
+
"type": "boolean"
|
|
29
|
+
},
|
|
30
|
+
"hideLogos": {
|
|
31
|
+
"type": "boolean"
|
|
32
|
+
},
|
|
33
|
+
"logoUrl": {
|
|
34
|
+
"type": "string"
|
|
35
|
+
},
|
|
36
|
+
"showEmail": {
|
|
37
|
+
"type": "boolean"
|
|
38
|
+
},
|
|
39
|
+
"showExtras": {
|
|
40
|
+
"type": "boolean"
|
|
41
|
+
},
|
|
42
|
+
"tokenizeOnly": {
|
|
43
|
+
"type": "boolean"
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$id": "https://www.fatzebra.com/schemas/payment-intent.json",
|
|
3
|
+
"type": "object",
|
|
4
|
+
"additionalProperties": false,
|
|
5
|
+
"definitions": {
|
|
6
|
+
"PaymentIntent": {
|
|
7
|
+
"type": "object",
|
|
8
|
+
"additionalProperties": false,
|
|
9
|
+
"properties": {
|
|
10
|
+
"payment": {
|
|
11
|
+
"type": "object",
|
|
12
|
+
"additionalProperties": false,
|
|
13
|
+
"required": [
|
|
14
|
+
"amount",
|
|
15
|
+
"currency",
|
|
16
|
+
"reference"
|
|
17
|
+
],
|
|
18
|
+
"optional": [
|
|
19
|
+
"hide_card_holder"
|
|
20
|
+
],
|
|
21
|
+
"properties": {
|
|
22
|
+
"amount": {
|
|
23
|
+
"type": "integer",
|
|
24
|
+
"minimum": 1
|
|
25
|
+
},
|
|
26
|
+
"currency": {
|
|
27
|
+
"type": "string"
|
|
28
|
+
},
|
|
29
|
+
"reference": {
|
|
30
|
+
"type": "string"
|
|
31
|
+
},
|
|
32
|
+
"hide_card_holder": {
|
|
33
|
+
"type": "boolean"
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"verification": {
|
|
38
|
+
"type": "string",
|
|
39
|
+
"minLength": 5
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
"required": [
|
|
43
|
+
"payment",
|
|
44
|
+
"verification"
|
|
45
|
+
]
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$id": "https://www.fatzebra.com/schemas/payment-method.json",
|
|
3
|
+
"type": "object",
|
|
4
|
+
"definitions": {
|
|
5
|
+
"PaymentMethod": {
|
|
6
|
+
"type": "object",
|
|
7
|
+
"oneOff": [{
|
|
8
|
+
"properties": {
|
|
9
|
+
"type:": {
|
|
10
|
+
"const": "card"
|
|
11
|
+
},
|
|
12
|
+
"data": {
|
|
13
|
+
"type": "object",
|
|
14
|
+
"properties": {
|
|
15
|
+
"number": {
|
|
16
|
+
"type": "string"
|
|
17
|
+
},
|
|
18
|
+
"holder": {
|
|
19
|
+
"type": "string"
|
|
20
|
+
},
|
|
21
|
+
"expiryMonth": {
|
|
22
|
+
"type": "string",
|
|
23
|
+
"enum": [
|
|
24
|
+
"01",
|
|
25
|
+
"02",
|
|
26
|
+
"03",
|
|
27
|
+
"04",
|
|
28
|
+
"05",
|
|
29
|
+
"06",
|
|
30
|
+
"07",
|
|
31
|
+
"08",
|
|
32
|
+
"09",
|
|
33
|
+
"10",
|
|
34
|
+
"11",
|
|
35
|
+
"12"
|
|
36
|
+
]
|
|
37
|
+
},
|
|
38
|
+
"expiryYear": {
|
|
39
|
+
"type": "string",
|
|
40
|
+
"maxLength": 4
|
|
41
|
+
},
|
|
42
|
+
"cvv": {
|
|
43
|
+
"type": "string"
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
"required": [
|
|
47
|
+
"number",
|
|
48
|
+
"holder",
|
|
49
|
+
"expiryMonth",
|
|
50
|
+
"expiryYear",
|
|
51
|
+
"cvv"
|
|
52
|
+
]
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
"required": [
|
|
56
|
+
"type",
|
|
57
|
+
"data"
|
|
58
|
+
]
|
|
59
|
+
}, {
|
|
60
|
+
"properties": {
|
|
61
|
+
"type:": {
|
|
62
|
+
"const": "card_on_file"
|
|
63
|
+
},
|
|
64
|
+
"data": {
|
|
65
|
+
"type": "object",
|
|
66
|
+
"properties": {
|
|
67
|
+
"token": {
|
|
68
|
+
"type": "string"
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
"required": [
|
|
72
|
+
"token"
|
|
73
|
+
]
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
"required": [
|
|
77
|
+
"type",
|
|
78
|
+
"data"
|
|
79
|
+
]
|
|
80
|
+
}]
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$id": "https://www.fatzebra.com/schemas/verify-card-options.json",
|
|
3
|
+
"type": "object",
|
|
4
|
+
"definitions": {
|
|
5
|
+
"VerifyCardOptions": {
|
|
6
|
+
"type": "object",
|
|
7
|
+
"properties": {
|
|
8
|
+
"challengeWindowSize": {
|
|
9
|
+
"type": "string",
|
|
10
|
+
"enum": ["01", "02", "03", "04", "05"]
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$id": "https://www.fatzebra.com/schemas/hpp-load-params.json",
|
|
3
|
+
"type": "object",
|
|
4
|
+
"additionalProperties": false,
|
|
5
|
+
"required": [
|
|
6
|
+
"customer",
|
|
7
|
+
"paymentIntent",
|
|
8
|
+
"paymentMethod"
|
|
9
|
+
],
|
|
10
|
+
"properties": {
|
|
11
|
+
"customer": {
|
|
12
|
+
"$ref": "customer.json#/definitions/Customer"
|
|
13
|
+
},
|
|
14
|
+
"paymentIntent": {
|
|
15
|
+
"$ref": "payment-intent.json#/definitions/PaymentIntent"
|
|
16
|
+
},
|
|
17
|
+
"paymentMethod": {
|
|
18
|
+
"$ref": "payment-method.json#/definitions/PaymentMethod"
|
|
19
|
+
},
|
|
20
|
+
"options": {
|
|
21
|
+
"$ref": "verify-card-options.json#/definitions/VerifyCardOptions"
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import Ajv from 'ajv';
|
|
2
|
+
import customerSchema from '../schemas/customer.json';
|
|
3
|
+
import paymentIntentSchema from '../schemas/payment-intent.json';
|
|
4
|
+
import hppOptionsSchema from '../schemas/hpp-options.json';
|
|
5
|
+
import hppLoadParamsSchema from '../schemas/hpp-load-params.json';
|
|
6
|
+
const validator = new Ajv({
|
|
7
|
+
allErrors: true,
|
|
8
|
+
jsonPointers: true,
|
|
9
|
+
})
|
|
10
|
+
.addSchema(customerSchema)
|
|
11
|
+
.addSchema(paymentIntentSchema)
|
|
12
|
+
.addSchema(hppOptionsSchema)
|
|
13
|
+
.compile(hppLoadParamsSchema);
|
|
14
|
+
export { validator as validateHppLoadParams };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import Ajv from 'ajv';
|
|
2
|
+
import customerSchema from '../schemas/customer.json';
|
|
3
|
+
import paymentIntentSchema from '../schemas/payment-intent.json';
|
|
4
|
+
import paymentMethodSchema from "../schemas/payment-method.json";
|
|
5
|
+
import verifyCardOptionsSchema from "../schemas/verify-card-options.json";
|
|
6
|
+
import verifyCardParamsSchema from "../schemas/verify-card-params.json";
|
|
7
|
+
const validator = new Ajv({
|
|
8
|
+
allErrors: true,
|
|
9
|
+
jsonPointers: true,
|
|
10
|
+
})
|
|
11
|
+
.addSchema(customerSchema)
|
|
12
|
+
.addSchema(paymentIntentSchema)
|
|
13
|
+
.addSchema(paymentMethodSchema)
|
|
14
|
+
.addSchema(verifyCardOptionsSchema)
|
|
15
|
+
.compile(verifyCardParamsSchema);
|
|
16
|
+
export { validator as validateVerifyCardParams };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# docker-compose.yaml
|
|
2
|
+
version: "3"
|
|
3
|
+
services:
|
|
4
|
+
merchant:
|
|
5
|
+
image: webpack
|
|
6
|
+
build:
|
|
7
|
+
context: .
|
|
8
|
+
ports:
|
|
9
|
+
- 8080:8080
|
|
10
|
+
- 3000:3000
|
|
11
|
+
volumes:
|
|
12
|
+
- .:/bindmount:rw
|
|
13
|
+
# The volume is effectively hiding node_modules from the host and must be in this order
|
|
14
|
+
- node_modules:/src/node_modules
|
|
15
|
+
volumes:
|
|
16
|
+
node_modules:
|
package/package.json
CHANGED
|
@@ -1,33 +1,64 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fat-zebra/sdk",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.1",
|
|
4
4
|
"description": "",
|
|
5
|
-
"main": "
|
|
6
|
-
"types": "dist/index.d.ts",
|
|
7
|
-
"private": false,
|
|
8
|
-
|
|
5
|
+
"main": "index.js",
|
|
9
6
|
"scripts": {
|
|
10
|
-
"test": "jest --clearCache && jest --passWithNoTests --verbose"
|
|
7
|
+
"test": "jest --clearCache && jest --passWithNoTests --verbose",
|
|
8
|
+
"build:local": "cp .env.local .env && export ENVIRONMENT=local && npx webpack --config webpack.config.dev.js",
|
|
9
|
+
"build:staging": "cp .env.staging .env && export ENVIRONMENT=staging && npx webpack --config webpack.config.dev.js",
|
|
10
|
+
"build:sandbox": "cp .env.sandbox .env && export ENVIRONMENT=sandbox && npx webpack --config webpack.config.prod.js",
|
|
11
|
+
"build:production": "cp .env.production .env && export ENVIRONMENT=production && npx webpack --config webpack.config.prod.js",
|
|
12
|
+
"start:local:api": "export MERCHANT_MODE=api && npm run build:local --watch && webpack serve --config webpack.config.dev.js --open 'Google Chrome'",
|
|
13
|
+
"start:local:hpp": "export MERCHANT_MODE=hpp && npm run build:local --watch && webpack serve --config webpack.config.dev.js --open 'Google Chrome'",
|
|
14
|
+
"start:local:paypal": "export MERCHANT_MODE=paypal && npm run build:local --watch && webpack serve --config webpack.config.dev.js --open 'Firefox'",
|
|
15
|
+
"start:staging:api": "export MERCHANT_MODE=api && npm run build:staging --watch && webpack serve --config webpack.config.dev.js --open 'Google Chrome'",
|
|
16
|
+
"start:staging:hpp": "export MERCHANT_MODE=hpp && npm run build:staging --watch && webpack serve --config webpack.config.dev.js --open 'Google Chrome'",
|
|
17
|
+
"start:staging:es5": "export MERCHANT_MODE=es5 && npm run build:staging --watch && webpack serve --config webpack.config.dev.js --open 'Google Chrome'",
|
|
18
|
+
"start:docker": "npm run build:dev --watch && webpack serve --config webpack.config.dev.js --host 0.0.0.0",
|
|
19
|
+
"generate:jwt": "node scripts/generate-access-token.js"
|
|
11
20
|
},
|
|
21
|
+
"keywords": [],
|
|
12
22
|
"author": "",
|
|
13
23
|
"license": "ISC",
|
|
14
24
|
"devDependencies": {
|
|
15
|
-
"@types/
|
|
25
|
+
"@types/ajv": "^1.0.0",
|
|
26
|
+
"@types/axios": "^0.14.0",
|
|
27
|
+
"@types/dotenv": "^8.2.0",
|
|
28
|
+
"@types/jest": "^24.0.23",
|
|
29
|
+
"@types/jsdom": "^21.1.1",
|
|
30
|
+
"@types/nock": "^11.1.0",
|
|
16
31
|
"@types/react": "^18.2.15",
|
|
17
32
|
"@types/react-dom": "^18.2.7",
|
|
33
|
+
"audit-ci": "^3.0.0",
|
|
34
|
+
"dotenv": "^16.0.1",
|
|
35
|
+
"dotenv-webpack": "^8.0.0",
|
|
36
|
+
"ejs": "^3.0.1",
|
|
37
|
+
"html-webpack-plugin": "^5.3.1",
|
|
18
38
|
"jest": "^29.6.1",
|
|
19
39
|
"jest-environment-jsdom": "^29.6.1",
|
|
20
|
-
"jest-localstorage-mock": "^2.4.
|
|
21
|
-
"
|
|
40
|
+
"jest-localstorage-mock": "^2.4.22",
|
|
41
|
+
"jsdom": "^16.2.1",
|
|
42
|
+
"jsonwebtoken": "^9.0.0",
|
|
43
|
+
"nock": "^12.0.1",
|
|
44
|
+
"source-map-loader": "^0.2.4",
|
|
45
|
+
"terser-webpack-plugin": "^4.1.0",
|
|
22
46
|
"ts-jest": "^29.1.1",
|
|
23
|
-
"
|
|
47
|
+
"ts-loader": "^9.4.4",
|
|
48
|
+
"typescript": "^5.1.6",
|
|
49
|
+
"webpack": "^5.76.0",
|
|
50
|
+
"webpack-cli": "^4.10.0",
|
|
51
|
+
"webpack-dev-server": "^4.7.4"
|
|
24
52
|
},
|
|
25
53
|
"dependencies": {
|
|
26
|
-
"
|
|
54
|
+
"ajv": "^6.12.3",
|
|
55
|
+
"axios": "^0.21.1",
|
|
56
|
+
"custom-event-polyfill": "^1.0.7",
|
|
57
|
+
"ts-polyfill": "^3.8.2",
|
|
27
58
|
"url-template": "^3.1.0"
|
|
28
59
|
},
|
|
29
60
|
"peerDependencies": {
|
|
30
|
-
"react": "
|
|
31
|
-
"react-dom": "
|
|
61
|
+
"react": ">= 16",
|
|
62
|
+
"react-dom": ">= 16"
|
|
32
63
|
}
|
|
33
64
|
}
|
package/tsconfig.json
CHANGED
|
@@ -1,24 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"compilerOptions": {
|
|
3
|
-
"declaration": true,
|
|
4
3
|
"outDir": "./dist/",
|
|
5
|
-
"
|
|
6
|
-
"esModuleInterop": true,
|
|
7
|
-
"sourceMap": false,
|
|
4
|
+
"sourceMap": true,
|
|
8
5
|
"noImplicitAny": true,
|
|
9
|
-
"module": "
|
|
10
|
-
"
|
|
11
|
-
"
|
|
6
|
+
"module": "commonjs",
|
|
7
|
+
"esModuleInterop": true,
|
|
8
|
+
"resolveJsonModule": true,
|
|
9
|
+
"target": "es5",
|
|
12
10
|
"lib": [
|
|
13
|
-
"
|
|
14
|
-
]
|
|
15
|
-
|
|
16
|
-
},
|
|
17
|
-
"include": [
|
|
18
|
-
"./src/**/*"
|
|
19
|
-
],
|
|
20
|
-
"exclude": [
|
|
21
|
-
"node_modules",
|
|
22
|
-
"**/*.test.ts"
|
|
23
|
-
]
|
|
11
|
+
"es2019"
|
|
12
|
+
]
|
|
13
|
+
}
|
|
24
14
|
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"declaration": true,
|
|
4
|
+
"outDir": "./dist/",
|
|
5
|
+
"jsx": "react",
|
|
6
|
+
"esModuleInterop": true,
|
|
7
|
+
"sourceMap": false,
|
|
8
|
+
"noImplicitAny": true,
|
|
9
|
+
"module": "esnext",
|
|
10
|
+
"moduleResolution": "node",
|
|
11
|
+
"resolveJsonModule": true,
|
|
12
|
+
"target": "es6",
|
|
13
|
+
"lib": [
|
|
14
|
+
"esnext",
|
|
15
|
+
],
|
|
16
|
+
"isolatedModules": true,
|
|
17
|
+
},
|
|
18
|
+
"include": [
|
|
19
|
+
"./src/**/*"
|
|
20
|
+
],
|
|
21
|
+
"exclude": [
|
|
22
|
+
"node_modules",
|
|
23
|
+
"**/*.test.ts"
|
|
24
|
+
]
|
|
25
|
+
}
|