@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.
Files changed (89) hide show
  1. package/.jest/setup-env-vars.js +2 -0
  2. package/dist/index.d.ts +2 -0
  3. package/dist/index.js +6 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/react/VerifyCard.d.ts +10 -0
  6. package/dist/react/VerifyCard.js +22 -0
  7. package/dist/react/VerifyCard.js.map +1 -0
  8. package/dist/react/index.d.ts +2 -0
  9. package/dist/react/index.js +9 -0
  10. package/dist/react/index.js.map +1 -0
  11. package/dist/react/url.d.ts +26 -0
  12. package/dist/react/url.js +63 -0
  13. package/dist/react/url.js.map +1 -0
  14. package/dist/react/useFatZebra.d.ts +12 -0
  15. package/dist/react/useFatZebra.js +148 -0
  16. package/dist/react/useFatZebra.js.map +1 -0
  17. package/dist/sca/cardinal.d.ts +28 -0
  18. package/dist/sca/cardinal.js +110 -0
  19. package/dist/sca/cardinal.js.map +1 -0
  20. package/dist/sca/eci-mappings.d.ts +6 -0
  21. package/dist/sca/eci-mappings.js +63 -0
  22. package/dist/sca/eci-mappings.js.map +1 -0
  23. package/dist/sca/index.d.ts +38 -0
  24. package/dist/sca/index.js +395 -0
  25. package/dist/sca/index.js.map +1 -0
  26. package/dist/sca/scenarios/enrollment.d.ts +15 -0
  27. package/dist/sca/scenarios/enrollment.js +150 -0
  28. package/dist/sca/scenarios/enrollment.js.map +1 -0
  29. package/dist/sca/scenarios/index.d.ts +2 -0
  30. package/dist/sca/scenarios/index.js +8 -0
  31. package/dist/sca/scenarios/index.js.map +1 -0
  32. package/dist/sca/scenarios/validation.d.ts +15 -0
  33. package/dist/sca/scenarios/validation.js +128 -0
  34. package/dist/sca/scenarios/validation.js.map +1 -0
  35. package/dist/sca/types.d.ts +158 -0
  36. package/dist/sca/types.js +57 -0
  37. package/dist/sca/types.js.map +1 -0
  38. package/dist/shared/api-gateway-client.d.ts +17 -0
  39. package/dist/shared/api-gateway-client.js +106 -0
  40. package/dist/shared/api-gateway-client.js.map +1 -0
  41. package/dist/shared/bridge-client.d.ts +2 -0
  42. package/dist/shared/bridge-client.js +24 -0
  43. package/dist/shared/bridge-client.js.map +1 -0
  44. package/dist/shared/constants.d.ts +6 -0
  45. package/dist/shared/constants.js +19 -0
  46. package/dist/shared/constants.js.map +1 -0
  47. package/dist/shared/event-manager.d.ts +28 -0
  48. package/dist/shared/event-manager.js +15 -0
  49. package/dist/shared/event-manager.js.map +1 -0
  50. package/dist/shared/post-message-client.d.ts +47 -0
  51. package/dist/shared/post-message-client.js +107 -0
  52. package/dist/shared/post-message-client.js.map +1 -0
  53. package/dist/shared/types.d.ts +142 -0
  54. package/dist/shared/types.js +41 -0
  55. package/dist/shared/types.js.map +1 -0
  56. package/dist/shared/util.d.ts +6 -0
  57. package/dist/shared/util.js +96 -0
  58. package/dist/shared/util.js.map +1 -0
  59. package/fatzebra-sdk-1.0.0.tgz +0 -0
  60. package/index.js +0 -0
  61. package/jest.config.js +16 -0
  62. package/package.json +33 -0
  63. package/src/index.ts +9 -0
  64. package/src/react/VerifyCard.tsx +36 -0
  65. package/src/react/index.ts +3 -0
  66. package/src/react/url.ts +97 -0
  67. package/src/react/useFatZebra.ts +154 -0
  68. package/src/sca/__tests__/eci-mappings.test.ts +35 -0
  69. package/src/sca/__tests__/index.test.ts +514 -0
  70. package/src/sca/cardinal.ts +136 -0
  71. package/src/sca/eci-mappings.ts +63 -0
  72. package/src/sca/index.ts +329 -0
  73. package/src/sca/scenarios/enrollment.ts +164 -0
  74. package/src/sca/scenarios/index.ts +2 -0
  75. package/src/sca/scenarios/validation.ts +142 -0
  76. package/src/sca/types.ts +206 -0
  77. package/src/shared/api-gateway-client.ts +71 -0
  78. package/src/shared/bridge-client.ts +26 -0
  79. package/src/shared/constants.ts +19 -0
  80. package/src/shared/event-manager.ts +44 -0
  81. package/src/shared/post-message-client.test.ts +73 -0
  82. package/src/shared/post-message-client.ts +125 -0
  83. package/src/shared/types.test.ts +65 -0
  84. package/src/shared/types.ts +182 -0
  85. package/src/shared/util.test.ts +164 -0
  86. package/src/shared/util.ts +98 -0
  87. package/tests/helpers/api-gateway-mock.ts +46 -0
  88. package/tsconfig.json +22 -0
  89. package/yarn-error.log +2374 -0
@@ -0,0 +1,2 @@
1
+ process.env.NODE_ENV = "test"
2
+ process.env.API_GATEWAY_URL = 'https://api-gateway.io'
@@ -0,0 +1,2 @@
1
+ import { Payment, PaymentIntent, VerificationConfig, Handlers, PublicEvent } from "../src/shared/types";
2
+ export { Payment, PaymentIntent, VerificationConfig, Handlers, PublicEvent, };
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,2 @@
1
+ import VerifyCard from "./VerifyCard";
2
+ export { VerifyCard };
@@ -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,6 @@
1
+ declare const eciMappings: {
2
+ vendorEci: string;
3
+ fatzebraSli: string;
4
+ }[];
5
+ declare const toFzSli: (vendorEci: string) => string;
6
+ export { eciMappings, toFzSli, };
@@ -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;