@fat-zebra/sdk 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jest/setup-env-vars.js +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/react/VerifyCard.d.ts +10 -0
- package/dist/react/VerifyCard.js +22 -0
- package/dist/react/VerifyCard.js.map +1 -0
- package/dist/react/index.d.ts +2 -0
- package/dist/react/index.js +9 -0
- package/dist/react/index.js.map +1 -0
- package/dist/react/url.d.ts +26 -0
- package/dist/react/url.js +63 -0
- package/dist/react/url.js.map +1 -0
- package/dist/react/useFatZebra.d.ts +12 -0
- package/dist/react/useFatZebra.js +148 -0
- package/dist/react/useFatZebra.js.map +1 -0
- package/dist/sca/cardinal.d.ts +28 -0
- package/dist/sca/cardinal.js +110 -0
- package/dist/sca/cardinal.js.map +1 -0
- package/dist/sca/eci-mappings.d.ts +6 -0
- package/dist/sca/eci-mappings.js +63 -0
- package/dist/sca/eci-mappings.js.map +1 -0
- package/dist/sca/index.d.ts +38 -0
- package/dist/sca/index.js +395 -0
- package/dist/sca/index.js.map +1 -0
- package/dist/sca/scenarios/enrollment.d.ts +15 -0
- package/dist/sca/scenarios/enrollment.js +150 -0
- package/dist/sca/scenarios/enrollment.js.map +1 -0
- package/dist/sca/scenarios/index.d.ts +2 -0
- package/dist/sca/scenarios/index.js +8 -0
- package/dist/sca/scenarios/index.js.map +1 -0
- package/dist/sca/scenarios/validation.d.ts +15 -0
- package/dist/sca/scenarios/validation.js +128 -0
- package/dist/sca/scenarios/validation.js.map +1 -0
- package/dist/sca/types.d.ts +158 -0
- package/dist/sca/types.js +57 -0
- package/dist/sca/types.js.map +1 -0
- package/dist/shared/api-gateway-client.d.ts +17 -0
- package/dist/shared/api-gateway-client.js +106 -0
- package/dist/shared/api-gateway-client.js.map +1 -0
- package/dist/shared/bridge-client.d.ts +2 -0
- package/dist/shared/bridge-client.js +24 -0
- package/dist/shared/bridge-client.js.map +1 -0
- package/dist/shared/constants.d.ts +6 -0
- package/dist/shared/constants.js +19 -0
- package/dist/shared/constants.js.map +1 -0
- package/dist/shared/event-manager.d.ts +28 -0
- package/dist/shared/event-manager.js +15 -0
- package/dist/shared/event-manager.js.map +1 -0
- package/dist/shared/post-message-client.d.ts +47 -0
- package/dist/shared/post-message-client.js +107 -0
- package/dist/shared/post-message-client.js.map +1 -0
- package/dist/shared/types.d.ts +142 -0
- package/dist/shared/types.js +41 -0
- package/dist/shared/types.js.map +1 -0
- package/dist/shared/util.d.ts +6 -0
- package/dist/shared/util.js +96 -0
- package/dist/shared/util.js.map +1 -0
- package/fatzebra-sdk-1.0.0.tgz +0 -0
- package/index.js +0 -0
- package/jest.config.js +16 -0
- package/package.json +33 -0
- package/src/index.ts +9 -0
- package/src/react/VerifyCard.tsx +36 -0
- package/src/react/index.ts +3 -0
- package/src/react/url.ts +97 -0
- package/src/react/useFatZebra.ts +154 -0
- package/src/sca/__tests__/eci-mappings.test.ts +35 -0
- package/src/sca/__tests__/index.test.ts +514 -0
- package/src/sca/cardinal.ts +136 -0
- package/src/sca/eci-mappings.ts +63 -0
- package/src/sca/index.ts +329 -0
- package/src/sca/scenarios/enrollment.ts +164 -0
- package/src/sca/scenarios/index.ts +2 -0
- package/src/sca/scenarios/validation.ts +142 -0
- package/src/sca/types.ts +206 -0
- package/src/shared/api-gateway-client.ts +71 -0
- package/src/shared/bridge-client.ts +26 -0
- package/src/shared/constants.ts +19 -0
- package/src/shared/event-manager.ts +44 -0
- package/src/shared/post-message-client.test.ts +73 -0
- package/src/shared/post-message-client.ts +125 -0
- package/src/shared/types.test.ts +65 -0
- package/src/shared/types.ts +182 -0
- package/src/shared/util.test.ts +164 -0
- package/src/shared/util.ts +98 -0
- package/tests/helpers/api-gateway-mock.ts +46 -0
- package/tsconfig.json +22 -0
- package/yarn-error.log +2374 -0
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PublicEvent = void 0;
|
|
4
|
+
var types_1 = require("../src/shared/types");
|
|
5
|
+
Object.defineProperty(exports, "PublicEvent", { enumerable: true, get: function () { return types_1.PublicEvent; } });
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,6CAAuG;AAOrG,4FAP6D,mBAAW,OAO7D"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import * as FatZebra from "../shared/types";
|
|
3
|
+
type FrameProps = {
|
|
4
|
+
handlers: FatZebra.Handlers;
|
|
5
|
+
username: string;
|
|
6
|
+
accessToken: string;
|
|
7
|
+
config: FatZebra.VerificationConfig;
|
|
8
|
+
};
|
|
9
|
+
declare const Frame: ({ username, handlers, config }: FrameProps) => React.JSX.Element;
|
|
10
|
+
export default Frame;
|
|
@@ -0,0 +1,22 @@
|
|
|
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
|
+
var react_1 = __importDefault(require("react"));
|
|
7
|
+
var useFatZebra_1 = __importDefault(require("./useFatZebra"));
|
|
8
|
+
var Frame = function (_a) {
|
|
9
|
+
var username = _a.username, handlers = _a.handlers, config = _a.config;
|
|
10
|
+
var bridgeRef = react_1.default.useRef(null);
|
|
11
|
+
var url = (0, useFatZebra_1.default)({
|
|
12
|
+
username: username,
|
|
13
|
+
config: config,
|
|
14
|
+
handlers: handlers,
|
|
15
|
+
bridge: bridgeRef,
|
|
16
|
+
}).url;
|
|
17
|
+
return (react_1.default.createElement("div", null,
|
|
18
|
+
react_1.default.createElement("iframe", { src: url, width: "100%", height: "700px", title: "verification-form" }),
|
|
19
|
+
react_1.default.createElement("iframe", { title: "bridge-form", src: "http://paynow.test:3004/sdk/bridge", width: "100%", height: "700px", ref: bridgeRef })));
|
|
20
|
+
};
|
|
21
|
+
exports.default = Frame;
|
|
22
|
+
//# sourceMappingURL=VerifyCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VerifyCard.js","sourceRoot":"","sources":["../../src/react/VerifyCard.tsx"],"names":[],"mappings":";;;;;AAAA,gDAA0B;AAC1B,8DAAwC;AAUxC,IAAM,KAAK,GAAG,UAAC,EAA0C;QAAxC,QAAQ,cAAA,EAAE,QAAQ,cAAA,EAAE,MAAM,YAAA;IACzC,IAAM,SAAS,GAAG,eAAK,CAAC,MAAM,CAAoB,IAAI,CAAC,CAAC;IAEhD,IAAA,GAAG,GAAK,IAAA,qBAAW,EAAC;QAC1B,QAAQ,EAAE,QAAQ;QAClB,MAAM,QAAA;QACN,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,SAAS;KAClB,CAAC,IALS,CAKR;IAEH,OAAO,CACL;QACE,0CAAQ,GAAG,EAAE,GAAG,EAAE,KAAK,EAAC,MAAM,EAAC,MAAM,EAAC,OAAO,EAAC,KAAK,EAAC,mBAAmB,GAAG;QAC1E,0CACE,KAAK,EAAC,aAAa,EACnB,GAAG,EAAC,oCAAoC,EACxC,KAAK,EAAC,MAAM,EACZ,MAAM,EAAC,OAAO,EACd,GAAG,EAAE,SAAS,GACd,CACE,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,KAAK,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
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.VerifyCard = void 0;
|
|
7
|
+
var VerifyCard_1 = __importDefault(require("./VerifyCard"));
|
|
8
|
+
exports.VerifyCard = VerifyCard_1.default;
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":";;;;;;AAAA,4DAAsC;AAE7B,qBAFF,oBAAU,CAEE"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
type RequiredURLValues = {
|
|
2
|
+
merchant: string;
|
|
3
|
+
hash: string;
|
|
4
|
+
reference: string;
|
|
5
|
+
amount: number;
|
|
6
|
+
currency: string;
|
|
7
|
+
};
|
|
8
|
+
type VerificationURLValues = OptionalURLValues & {
|
|
9
|
+
merchant: string;
|
|
10
|
+
timestamp: string;
|
|
11
|
+
verification: string;
|
|
12
|
+
};
|
|
13
|
+
type OptionalURLValues = Partial<{
|
|
14
|
+
hide_card_holder: string;
|
|
15
|
+
return_path: string;
|
|
16
|
+
card_types: Array<string>;
|
|
17
|
+
surcharge_enabled: string;
|
|
18
|
+
sca_enabled: boolean;
|
|
19
|
+
css: string;
|
|
20
|
+
css_signature: string;
|
|
21
|
+
tokenize_only: boolean;
|
|
22
|
+
}>;
|
|
23
|
+
type UrlValues = RequiredURLValues & OptionalURLValues;
|
|
24
|
+
declare const generatePaymentURL: (values: UrlValues) => string;
|
|
25
|
+
declare const generateVerificationURL: (values: VerificationURLValues) => string;
|
|
26
|
+
export { generatePaymentURL, generateVerificationURL };
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateVerificationURL = exports.generatePaymentURL = void 0;
|
|
4
|
+
var url_template_1 = require("url-template");
|
|
5
|
+
var generatePaymentURL = function (values) {
|
|
6
|
+
var queryParts = [
|
|
7
|
+
"tokenize_only",
|
|
8
|
+
"css",
|
|
9
|
+
"css_signature",
|
|
10
|
+
"iframe",
|
|
11
|
+
"postmessage",
|
|
12
|
+
"hide_card_holder",
|
|
13
|
+
"return_path",
|
|
14
|
+
"card_types",
|
|
15
|
+
"surcharge_enabled",
|
|
16
|
+
"sca_enabled",
|
|
17
|
+
];
|
|
18
|
+
var urlTemplate = (0, url_template_1.parseTemplate)("http://paynow.test:3004/sdk/v3/{merchant}/{reference}/{currency}/{amount}/{verification}{?".concat(queryParts.join(","), "}"));
|
|
19
|
+
var url = urlTemplate.expand({
|
|
20
|
+
merchant: values.merchant,
|
|
21
|
+
reference: values.reference,
|
|
22
|
+
currency: values.currency,
|
|
23
|
+
amount: values.amount,
|
|
24
|
+
verification: values.hash,
|
|
25
|
+
sca_enabled: values.sca_enabled,
|
|
26
|
+
css: values.css,
|
|
27
|
+
css_signature: values.css_signature,
|
|
28
|
+
iframe: true,
|
|
29
|
+
postmessage: true,
|
|
30
|
+
tokenize_only: values.tokenize_only,
|
|
31
|
+
});
|
|
32
|
+
return url;
|
|
33
|
+
};
|
|
34
|
+
exports.generatePaymentURL = generatePaymentURL;
|
|
35
|
+
var generateVerificationURL = function (values) {
|
|
36
|
+
var queryParts = [
|
|
37
|
+
"tokenize_only",
|
|
38
|
+
"css",
|
|
39
|
+
"css_signature",
|
|
40
|
+
"iframe",
|
|
41
|
+
"postmessage",
|
|
42
|
+
"hide_card_holder",
|
|
43
|
+
"return_path",
|
|
44
|
+
"card_types",
|
|
45
|
+
"surcharge_enabled",
|
|
46
|
+
"sca_enabled",
|
|
47
|
+
];
|
|
48
|
+
var urlTemplate = (0, url_template_1.parseTemplate)("http://paynow.test:3004/sdk/v3/{merchant}/verification/{timestamp}/{verification}{?".concat(queryParts.join(","), "}"));
|
|
49
|
+
var url = urlTemplate.expand({
|
|
50
|
+
merchant: values.merchant,
|
|
51
|
+
timestamp: values.timestamp,
|
|
52
|
+
verification: values.verification,
|
|
53
|
+
sca_enabled: values.sca_enabled,
|
|
54
|
+
css: values.css,
|
|
55
|
+
css_signature: values.css_signature,
|
|
56
|
+
iframe: true,
|
|
57
|
+
postmessage: true,
|
|
58
|
+
tokenize_only: values.tokenize_only,
|
|
59
|
+
});
|
|
60
|
+
return url;
|
|
61
|
+
};
|
|
62
|
+
exports.generateVerificationURL = generateVerificationURL;
|
|
63
|
+
//# sourceMappingURL=url.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url.js","sourceRoot":"","sources":["../../src/react/url.ts"],"names":[],"mappings":";;;AAAA,6CAA6C;AA4B7C,IAAM,kBAAkB,GAAG,UAAC,MAAiB;IAC3C,IAAM,UAAU,GAAG;QACjB,eAAe;QACf,KAAK;QACL,eAAe;QACf,QAAQ;QACR,aAAa;QACb,kBAAkB;QAClB,aAAa;QACb,YAAY;QACZ,mBAAmB;QACnB,aAAa;KACd,CAAA;IAED,IAAM,WAAW,GAAG,IAAA,4BAAa,EAC/B,oGAA6F,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,MAAG,CACrH,CAAC;IAEF,IAAM,GAAG,GAAG,WAAW,CAAC,MAAM,CAAC;QAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,YAAY,EAAE,MAAM,CAAC,IAAI;QACzB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,MAAM,EAAE,IAAI;QACZ,WAAW,EAAE,IAAI;QACjB,aAAa,EAAE,MAAM,CAAC,aAAa;KACpC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAmCO,gDAAkB;AAjC3B,IAAM,uBAAuB,GAAG,UAAC,MAA6B;IAC5D,IAAM,UAAU,GAAG;QACjB,eAAe;QACf,KAAK;QACL,eAAe;QACf,QAAQ;QACR,aAAa;QACb,kBAAkB;QAClB,aAAa;QACb,YAAY;QACZ,mBAAmB;QACnB,aAAa;KACd,CAAA;IAED,IAAM,WAAW,GAAG,IAAA,4BAAa,EAC/B,6FAAsF,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,MAAG,CAC9G,CAAC;IAEF,IAAM,GAAG,GAAG,WAAW,CAAC,MAAM,CAAC;QAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,MAAM,EAAE,IAAI;QACZ,WAAW,EAAE,IAAI;QACjB,aAAa,EAAE,MAAM,CAAC,aAAa;KACpC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAE2B,0DAAuB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import * as FatZebra from "../shared/types";
|
|
3
|
+
type UseFatZebraProps = {
|
|
4
|
+
username: string;
|
|
5
|
+
handlers: FatZebra.Handlers;
|
|
6
|
+
config: FatZebra.VerificationConfig;
|
|
7
|
+
bridge: React.MutableRefObject<HTMLIFrameElement>;
|
|
8
|
+
};
|
|
9
|
+
declare const useFatZebra: ({ username, config, handlers, bridge }: UseFatZebraProps) => {
|
|
10
|
+
url: string;
|
|
11
|
+
};
|
|
12
|
+
export default useFatZebra;
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
16
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
17
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
18
|
+
}
|
|
19
|
+
Object.defineProperty(o, k2, desc);
|
|
20
|
+
}) : (function(o, m, k, k2) {
|
|
21
|
+
if (k2 === undefined) k2 = k;
|
|
22
|
+
o[k2] = m[k];
|
|
23
|
+
}));
|
|
24
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
25
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
26
|
+
}) : function(o, v) {
|
|
27
|
+
o["default"] = v;
|
|
28
|
+
});
|
|
29
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
30
|
+
if (mod && mod.__esModule) return mod;
|
|
31
|
+
var result = {};
|
|
32
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
33
|
+
__setModuleDefault(result, mod);
|
|
34
|
+
return result;
|
|
35
|
+
};
|
|
36
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
38
|
+
};
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
var react_1 = require("react");
|
|
41
|
+
var FatZebra = __importStar(require("../shared/types"));
|
|
42
|
+
var url_1 = require("./url");
|
|
43
|
+
var sca_1 = __importDefault(require("../sca"));
|
|
44
|
+
var api_gateway_client_1 = __importDefault(require("../shared/api-gateway-client"));
|
|
45
|
+
var useFatZebra = function (_a) {
|
|
46
|
+
var username = _a.username, config = _a.config, handlers = _a.handlers, bridge = _a.bridge;
|
|
47
|
+
var options = config.options, accessToken = config.accessToken, paymentIntent = config.paymentIntent, verification = config.verification;
|
|
48
|
+
var sca = (0, react_1.useMemo)(function () {
|
|
49
|
+
var gatewayClient = new api_gateway_client_1.default({ accessToken: accessToken, username: username });
|
|
50
|
+
return new sca_1.default({ gatewayClient: gatewayClient });
|
|
51
|
+
}, [config, username]);
|
|
52
|
+
var emit = function (event, data) {
|
|
53
|
+
var handler = handlers[event];
|
|
54
|
+
if (handler) {
|
|
55
|
+
handler(new CustomEvent(event, { detail: data }));
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
var handleCreatePaymentResponse = function (data) {
|
|
59
|
+
var transactionPayload = {
|
|
60
|
+
transactionId: data.transaction_id,
|
|
61
|
+
responseCode: data.response_code,
|
|
62
|
+
message: data.message,
|
|
63
|
+
amount: data.amount,
|
|
64
|
+
currency: data.currency,
|
|
65
|
+
reference: data.reference,
|
|
66
|
+
cardNumber: data.card_number,
|
|
67
|
+
cardHolder: data.card_holder,
|
|
68
|
+
cardExpiry: data.card_expiry,
|
|
69
|
+
cardType: data.card_type,
|
|
70
|
+
verification: data.v,
|
|
71
|
+
};
|
|
72
|
+
if (data.errors) {
|
|
73
|
+
emit(FatZebra.PublicEvent.PAYMENT_ERROR, {
|
|
74
|
+
message: 'Payment failed.',
|
|
75
|
+
errors: data.errors,
|
|
76
|
+
data: transactionPayload,
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
emit(FatZebra.PublicEvent.PAYMENT_SUCCESS, {
|
|
81
|
+
message: 'Payment successful.',
|
|
82
|
+
data: transactionPayload,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
var handleTokenizeCardResponse = function (data) {
|
|
87
|
+
if (data.errors) {
|
|
88
|
+
emit(FatZebra.PublicEvent.TOKENIZATION_ERROR, {
|
|
89
|
+
message: "Card tokenization failed.",
|
|
90
|
+
errors: data.errors,
|
|
91
|
+
data: null,
|
|
92
|
+
});
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
emit(FatZebra.PublicEvent.TOKENIZATION_SUCCESS, {
|
|
97
|
+
message: "Card tokenization success.",
|
|
98
|
+
data: {
|
|
99
|
+
token: data.token,
|
|
100
|
+
},
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
if (options.tokenizeOnly)
|
|
104
|
+
return;
|
|
105
|
+
if (options.enableSca) {
|
|
106
|
+
sca.run({ paymentIntent: paymentIntent, bin: data.bin, cardToken: data.token });
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
var messageHandler = function (event) {
|
|
110
|
+
if (event.data &&
|
|
111
|
+
event.data.source &&
|
|
112
|
+
event.data.source.includes("react-devtools"))
|
|
113
|
+
return;
|
|
114
|
+
if (event.data.subject === FatZebra.BridgeEvent.BIN_LOOKUP)
|
|
115
|
+
return;
|
|
116
|
+
if (event.data.subject === FatZebra.BridgeEvent.FORM_VALIDATION_ERROR) {
|
|
117
|
+
emit(FatZebra.PublicEvent.FORM_VALIDATION_ERROR, {
|
|
118
|
+
errors: event.data.data,
|
|
119
|
+
data: null,
|
|
120
|
+
});
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
if (event.data.subject === FatZebra.BridgeEvent.FORM_VALIDATION_SUCCESS) {
|
|
124
|
+
emit(FatZebra.PublicEvent.FORM_VALIDATION_SUCCESS, {
|
|
125
|
+
errors: event.data.data,
|
|
126
|
+
data: null,
|
|
127
|
+
});
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
if (event.data.subject === FatZebra.BridgeEvent.CREATE_PAYMENT_RESPONSE) {
|
|
131
|
+
handleCreatePaymentResponse(event.data.data);
|
|
132
|
+
}
|
|
133
|
+
if (event.data.subject === FatZebra.BridgeEvent.TOKENIZE_CARD_RESPONSE) {
|
|
134
|
+
handleTokenizeCardResponse(event.data.data);
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
(0, react_1.useEffect)(function () {
|
|
138
|
+
window.addEventListener("message", messageHandler);
|
|
139
|
+
return function () {
|
|
140
|
+
window.removeEventListener("message", messageHandler);
|
|
141
|
+
};
|
|
142
|
+
}, []);
|
|
143
|
+
var payment = paymentIntent.payment;
|
|
144
|
+
var url = (0, url_1.generatePaymentURL)(__assign(__assign({}, options), { merchant: username, reference: payment.reference, amount: payment.amount, currency: payment.currency, hash: verification }));
|
|
145
|
+
return { url: url };
|
|
146
|
+
};
|
|
147
|
+
exports.default = useFatZebra;
|
|
148
|
+
//# sourceMappingURL=useFatZebra.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFatZebra.js","sourceRoot":"","sources":["../../src/react/useFatZebra.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
interface CardinalConfig {
|
|
2
|
+
timeout?: number;
|
|
3
|
+
maxRequestRetries?: number;
|
|
4
|
+
logging?: {
|
|
5
|
+
level: 'on' | 'off' | 'verbose';
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
interface CardinalSetupCompleteResponseData {
|
|
9
|
+
sessionId: string;
|
|
10
|
+
modules: {
|
|
11
|
+
module: string;
|
|
12
|
+
loaded: boolean;
|
|
13
|
+
}[];
|
|
14
|
+
}
|
|
15
|
+
interface PaymentValidatedDTO {
|
|
16
|
+
processorTransactionId: string;
|
|
17
|
+
jwt: string;
|
|
18
|
+
}
|
|
19
|
+
export default class CardinalManager {
|
|
20
|
+
private cardinal;
|
|
21
|
+
constructor(config?: CardinalConfig);
|
|
22
|
+
setup(jwt: any): void;
|
|
23
|
+
onPaymentValidated(handler: (data: PaymentValidatedDTO, error: string) => void): void;
|
|
24
|
+
onPaymentSetupComplete(): Promise<CardinalSetupCompleteResponseData>;
|
|
25
|
+
processBin(bin: string): Promise<any>;
|
|
26
|
+
continue(acsUrl: string, pareq: string, transactionId: string): void;
|
|
27
|
+
}
|
|
28
|
+
export { CardinalManager, PaymentValidatedDTO, };
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.CardinalManager = void 0;
|
|
40
|
+
var CardinalWorkflow;
|
|
41
|
+
(function (CardinalWorkflow) {
|
|
42
|
+
CardinalWorkflow["CCA"] = "cca";
|
|
43
|
+
CardinalWorkflow["INIT"] = "init";
|
|
44
|
+
})(CardinalWorkflow || (CardinalWorkflow = {}));
|
|
45
|
+
var CardinalPaymentEvent;
|
|
46
|
+
(function (CardinalPaymentEvent) {
|
|
47
|
+
CardinalPaymentEvent["SETUP_COMPLETE"] = "payments.setupComplete";
|
|
48
|
+
CardinalPaymentEvent["VALIDATED"] = "payments.validated";
|
|
49
|
+
})(CardinalPaymentEvent || (CardinalPaymentEvent = {}));
|
|
50
|
+
var defaultConfig = {
|
|
51
|
+
timeout: 8000,
|
|
52
|
+
maxRequestRetries: 3,
|
|
53
|
+
logging: {
|
|
54
|
+
level: 'on'
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
var CardinalManager = /** @class */ (function () {
|
|
58
|
+
function CardinalManager(config) {
|
|
59
|
+
window.Cardinal.configure((config ? config : defaultConfig));
|
|
60
|
+
}
|
|
61
|
+
CardinalManager.prototype.setup = function (jwt) {
|
|
62
|
+
window.Cardinal.setup(CardinalWorkflow.INIT, { jwt: jwt });
|
|
63
|
+
};
|
|
64
|
+
CardinalManager.prototype.onPaymentValidated = function (handler) {
|
|
65
|
+
window.Cardinal.on('payments.validated', function (data, jwt) {
|
|
66
|
+
if (data.ErrorDescription.toLowerCase() === 'success') {
|
|
67
|
+
handler({
|
|
68
|
+
processorTransactionId: data.Payment.ProcessorTransactionId,
|
|
69
|
+
jwt: jwt
|
|
70
|
+
}, null);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
handler(null, data.ErrorDescription);
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
};
|
|
77
|
+
CardinalManager.prototype.onPaymentSetupComplete = function () {
|
|
78
|
+
return new Promise(function (resolve, reject) {
|
|
79
|
+
window.Cardinal.on(CardinalPaymentEvent.SETUP_COMPLETE, function (data) {
|
|
80
|
+
resolve(data);
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
};
|
|
84
|
+
CardinalManager.prototype.processBin = function (bin) {
|
|
85
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
86
|
+
return __generator(this, function (_a) {
|
|
87
|
+
switch (_a.label) {
|
|
88
|
+
case 0: return [4 /*yield*/, window.Cardinal.trigger('bin.process', bin)];
|
|
89
|
+
case 1:
|
|
90
|
+
_a.sent();
|
|
91
|
+
return [2 /*return*/];
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
};
|
|
96
|
+
CardinalManager.prototype.continue = function (acsUrl, pareq, transactionId) {
|
|
97
|
+
window.Cardinal.continue(CardinalWorkflow.CCA, {
|
|
98
|
+
AcsUrl: acsUrl,
|
|
99
|
+
Payload: pareq
|
|
100
|
+
}, {
|
|
101
|
+
OrderDetails: {
|
|
102
|
+
TransactionId: transactionId
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
};
|
|
106
|
+
return CardinalManager;
|
|
107
|
+
}());
|
|
108
|
+
exports.CardinalManager = CardinalManager;
|
|
109
|
+
exports.default = CardinalManager;
|
|
110
|
+
//# sourceMappingURL=cardinal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cardinal.js","sourceRoot":"","sources":["../../src/sca/cardinal.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4CA,IAAK,gBAGJ;AAHD,WAAK,gBAAgB;IACnB,+BAAW,CAAA;IACX,iCAAa,CAAA;AACf,CAAC,EAHI,gBAAgB,KAAhB,gBAAgB,QAGpB;AAED,IAAK,oBAGJ;AAHD,WAAK,oBAAoB;IACvB,iEAAyC,CAAA;IACzC,wDAAgC,CAAA;AAClC,CAAC,EAHI,oBAAoB,KAApB,oBAAoB,QAGxB;AAoBD,IAAM,aAAa,GAAG;IACpB,OAAO,EAAE,IAAI;IACb,iBAAiB,EAAE,CAAC;IACpB,OAAO,EAAE;QACP,KAAK,EAAE,IAAI;KACZ;CACF,CAAA;AAED;IAGE,yBAAY,MAAuB;QACjC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAA+B,CAAC,CAAC,CAAA;IAChF,CAAC;IAED,+BAAK,GAAL,UAAM,GAAQ;QACZ,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,EAAE,EAAE,GAAG,KAAA,EAAE,CAAC,CAAA;IACvD,CAAC;IAED,4CAAkB,GAAlB,UAAmB,OAA2D;QAC5E,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,oBAAoB,EAAE,UAAC,IAAkC,EAAE,GAAW;YACvF,IAAI,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,SAAS,EAAE;gBACrD,OAAO,CAAC;oBACN,sBAAsB,EAAE,IAAI,CAAC,OAAO,CAAC,sBAAsB;oBAC3D,GAAG,KAAA;iBACJ,EAAE,IAAI,CAAC,CAAA;aACT;iBAAM;gBACL,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAA;aACrC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,gDAAsB,GAAtB;QACE,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;YACjC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,oBAAoB,CAAC,cAAc,EAAE,UAAC,IAAuC;gBAC9F,OAAO,CAAC,IAAI,CAAC,CAAA;YACf,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;IAEK,oCAAU,GAAhB,UAAiB,GAAW;;;;4BAC1B,qBAAM,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,EAAA;;wBAAjD,SAAiD,CAAA;;;;;KAClD;IAED,kCAAQ,GAAR,UAAS,MAAc,EAAE,KAAa,EAAE,aAAqB;QAC3D,MAAM,CAAC,QAAQ,CAAC,QAAQ,CACtB,gBAAgB,CAAC,GAAG,EACpB;YACE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,KAAK;SACf,EACD;YACE,YAAY,EAAE;gBACZ,aAAa,EAAE,aAAa;aAC7B;SACF,CACF,CAAA;IACH,CAAC;IACH,sBAAC;AAAD,CAAC,AAlDD,IAkDC;AAGC,0CAAe"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toFzSli = exports.eciMappings = void 0;
|
|
4
|
+
// FatZebra only supports SLI 05, 06, 07 & 09.
|
|
5
|
+
// https://docs.fatzebra.com/docs/3d-secure
|
|
6
|
+
// Cardinal returns ECI(or SLI for MC) in the range of 01~07
|
|
7
|
+
// https://cardinaldocs.atlassian.net/wiki/spaces/CCen/pages/903577725/EMV+3DS+2.0+Test+Cases
|
|
8
|
+
var eciMappings = [
|
|
9
|
+
{
|
|
10
|
+
// Cards: Mastercard, CB Mastercard
|
|
11
|
+
// Test Case 2: Failed Frictionless Authentication
|
|
12
|
+
// Test Case 4: Unavailable Frictionless Authentication from the Issuer
|
|
13
|
+
// Test Case 5: Rejected Frictionless Authentication by the Issuer
|
|
14
|
+
// Test Case 6: Authentication Not Available on Lookup
|
|
15
|
+
// Test Case 7: Error on Lookup
|
|
16
|
+
// Test Case 9: Bypassed Authentication
|
|
17
|
+
// Test Case 11: Failed Step Up Authentication
|
|
18
|
+
// Test Case 12: Step Up Authentication is Unavailable
|
|
19
|
+
// Test Case 13: Error on Authentication
|
|
20
|
+
vendorEci: '00',
|
|
21
|
+
// Non-authenticated transaction - issuer not support. CAVV not present.
|
|
22
|
+
fatzebraSli: '07',
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
// Cards: Mastercard, CB Mastercard
|
|
26
|
+
// Test Case 3: Attempts Stand-In Frictionless Authentication
|
|
27
|
+
vendorEci: '01',
|
|
28
|
+
// Cards: Visa, American Express, Discover (Diners Club), CB Visa, ELO
|
|
29
|
+
// Secure, Non-authenticated transaction (XID present, CAVV not present)
|
|
30
|
+
fatzebraSli: '06',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
// Cards: Mastercard, CB Mastercard
|
|
34
|
+
// Test Case 1: Successful Frictionless Authentication
|
|
35
|
+
// Test Case 10: Successful Step Up Authentication
|
|
36
|
+
vendorEci: '02',
|
|
37
|
+
// Cards: Visa, American Express, Discover (Diners Club), CB Visa, ELO
|
|
38
|
+
// Secure, Authenticated transaction with XID and CAVV present
|
|
39
|
+
fatzebraSli: '05',
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
vendorEci: '05',
|
|
43
|
+
// Secure, Authenticated transaction with XID and CAVV present
|
|
44
|
+
fatzebraSli: '05',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
vendorEci: '06',
|
|
48
|
+
// Secure, Non-authenticated transaction (XID present, CAVV not present)
|
|
49
|
+
fatzebraSli: '06',
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
vendorEci: '07',
|
|
53
|
+
// Secure, Non-authenticated transaction (XID and CAVV not present). This is the default value.
|
|
54
|
+
fatzebraSli: '07',
|
|
55
|
+
},
|
|
56
|
+
];
|
|
57
|
+
exports.eciMappings = eciMappings;
|
|
58
|
+
var toFzSli = function (vendorEci) {
|
|
59
|
+
var matched = eciMappings.find(function (item) { return item.vendorEci == vendorEci; });
|
|
60
|
+
return matched ? matched.fatzebraSli : vendorEci;
|
|
61
|
+
};
|
|
62
|
+
exports.toFzSli = toFzSli;
|
|
63
|
+
//# sourceMappingURL=eci-mappings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eci-mappings.js","sourceRoot":"","sources":["../../src/sca/eci-mappings.ts"],"names":[],"mappings":";;;AAAA,8CAA8C;AAC9C,2CAA2C;AAC3C,4DAA4D;AAC5D,6FAA6F;AAC7F,IAAM,WAAW,GAAiD;IAChE;QACE,mCAAmC;QACnC,kDAAkD;QAClD,uEAAuE;QACvE,kEAAkE;QAClE,sDAAsD;QACtD,+BAA+B;QAC/B,uCAAuC;QACvC,8CAA8C;QAC9C,sDAAsD;QACtD,wCAAwC;QACxC,SAAS,EAAE,IAAI;QACf,wEAAwE;QACxE,WAAW,EAAE,IAAI;KAClB;IACD;QACE,mCAAmC;QACnC,6DAA6D;QAC7D,SAAS,EAAE,IAAI;QACf,sEAAsE;QACtE,wEAAwE;QACxE,WAAW,EAAE,IAAI;KAClB;IACD;QACE,mCAAmC;QACnC,sDAAsD;QACtD,kDAAkD;QAClD,SAAS,EAAE,IAAI;QACf,sEAAsE;QACtE,8DAA8D;QAC9D,WAAW,EAAE,IAAI;KAClB;IACD;QACE,SAAS,EAAE,IAAI;QACf,8DAA8D;QAC9D,WAAW,EAAE,IAAI;KAClB;IACD;QACE,SAAS,EAAE,IAAI;QACf,wEAAwE;QACxE,WAAW,EAAE,IAAI;KAClB;IACD;QACE,SAAS,EAAE,IAAI;QACf,+FAA+F;QAC/F,WAAW,EAAE,IAAI;KAClB;CACF,CAAA;AAQC,kCAAW;AANb,IAAM,OAAO,GAAG,UAAC,SAAiB;IAChC,IAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,UAAC,IAAI,IAAK,OAAA,IAAI,CAAC,SAAS,IAAI,SAAS,EAA3B,CAA2B,CAAC,CAAA;IACvE,OAAO,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAA;AAClD,CAAC,CAAA;AAIC,0BAAO"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import * as t from './types';
|
|
2
|
+
import { Customer, CustomerSnakeCase, PaymentIntent } from '../shared/types';
|
|
3
|
+
import { CardinalManager } from './cardinal';
|
|
4
|
+
import GatewayClient from '../shared/api-gateway-client';
|
|
5
|
+
export interface ScaRunProps {
|
|
6
|
+
cardToken: string;
|
|
7
|
+
customer?: Customer;
|
|
8
|
+
paymentIntent: PaymentIntent;
|
|
9
|
+
bin: string;
|
|
10
|
+
challengeWindowSize?: t.ChallengeWindowSize;
|
|
11
|
+
}
|
|
12
|
+
export interface ScaConfig {
|
|
13
|
+
gatewayClient: GatewayClient;
|
|
14
|
+
}
|
|
15
|
+
declare class Sca {
|
|
16
|
+
private _cardinal;
|
|
17
|
+
private _eventEmitTarget;
|
|
18
|
+
private enrollmentResult;
|
|
19
|
+
private paymentIntent;
|
|
20
|
+
private bin;
|
|
21
|
+
private cardToken;
|
|
22
|
+
private customer;
|
|
23
|
+
private challengeWindowSize;
|
|
24
|
+
private sessionId;
|
|
25
|
+
private gatewayClient;
|
|
26
|
+
constructor({ gatewayClient }: ScaConfig);
|
|
27
|
+
loadScript(): void;
|
|
28
|
+
get cardinal(): CardinalManager;
|
|
29
|
+
set cardinal(cardinal: CardinalManager);
|
|
30
|
+
get eventEmitTarget(): HTMLDivElement | Window;
|
|
31
|
+
set eventEmitTarget(target: HTMLDivElement | Window);
|
|
32
|
+
run(config: ScaRunProps): Promise<void>;
|
|
33
|
+
createCardinalJWT(): Promise<string>;
|
|
34
|
+
check3DSEnrollment(): Promise<void>;
|
|
35
|
+
customerProperties(customer: Customer): CustomerSnakeCase;
|
|
36
|
+
handleEnrollmentResult(enrollSCAResponse: t.EnrollSCAResponse): void;
|
|
37
|
+
}
|
|
38
|
+
export default Sca;
|