@fat-zebra/sdk 1.5.16-beta.2 → 1.5.16-beta.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/hpp/hpp.d.ts +1 -0
- package/dist/hpp/hpp.js +12 -17
- package/dist/react/VerifyCard.js +1 -1
- package/dist/react/useFatZebra.js +2 -1
- package/dist/react/useMessage.d.ts +2 -1
- package/dist/react/useMessage.js +63 -2
- package/dist/three_d_secure/index.d.ts +1 -1
- package/dist/three_d_secure/utility/index.js +1 -1
- package/package.json +1 -1
package/dist/hpp/hpp.d.ts
CHANGED
package/dist/hpp/hpp.js
CHANGED
|
@@ -1,16 +1,9 @@
|
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
1
|
import * as bridge from '../shared/bridge-client';
|
|
8
2
|
import { LocalStorageAccessTokenKey } from '../shared/constants';
|
|
9
3
|
import { emit, off, on } from '../shared/event-manager';
|
|
10
4
|
import { PostMessageClient } from '../shared/post-message-client';
|
|
11
5
|
import { BridgeEvent, PublicEvent, } from '../shared/types';
|
|
12
6
|
import * as util from '../shared/util';
|
|
13
|
-
import { logMethod } from "../logging/logMethod";
|
|
14
7
|
import { setTransactionReference } from "../logging/logger-context";
|
|
15
8
|
import ThreeDSecure from "../three_d_secure";
|
|
16
9
|
const HPP_DEFAULT_OPTIONS = {
|
|
@@ -45,8 +38,8 @@ class Hpp {
|
|
|
45
38
|
// initial headless load
|
|
46
39
|
this.ThreeDSecure = new ThreeDSecure({
|
|
47
40
|
bridge: this.headless,
|
|
48
|
-
|
|
49
|
-
|
|
41
|
+
environment: process.env.API_ENV,
|
|
42
|
+
iframe: this.iframe
|
|
50
43
|
});
|
|
51
44
|
this.setCrossFramesEventListeners();
|
|
52
45
|
this.setPublicEventListeners();
|
|
@@ -54,6 +47,11 @@ class Hpp {
|
|
|
54
47
|
this.iframe.contentWindow.postMessage(message, '*');
|
|
55
48
|
}
|
|
56
49
|
else if (this.headlessPreviouslyLoaded && this.iframeLoaded) {
|
|
50
|
+
this.ThreeDSecure = new ThreeDSecure({
|
|
51
|
+
bridge: this.headless,
|
|
52
|
+
environment: process.env.API_ENV,
|
|
53
|
+
iframe: this.iframe
|
|
54
|
+
});
|
|
57
55
|
this.iframe.contentWindow.postMessage(message, '*');
|
|
58
56
|
// subsequent iframe loads after headless has been previously loaded
|
|
59
57
|
// this caters for the SPA scenario
|
|
@@ -61,6 +59,7 @@ class Hpp {
|
|
|
61
59
|
}
|
|
62
60
|
}
|
|
63
61
|
load(config) {
|
|
62
|
+
this.challengeWindowSize = config.options.challengeWindowSize;
|
|
64
63
|
setTransactionReference(config.paymentIntent.payment.reference);
|
|
65
64
|
this.hppOptions = config.options;
|
|
66
65
|
const { el, isExisting } = bridge.load2(process.env.PAYNOW_BRIDGE_URL);
|
|
@@ -114,7 +113,7 @@ class Hpp {
|
|
|
114
113
|
setCrossFramesEventListeners() {
|
|
115
114
|
const handlers = {};
|
|
116
115
|
handlers[BridgeEvent.TOKENIZE_CARD_RESPONSE] = (data) => {
|
|
117
|
-
var _a
|
|
116
|
+
var _a;
|
|
118
117
|
if (data.errors) {
|
|
119
118
|
emit(PublicEvent.TOKENIZATION_ERROR, {
|
|
120
119
|
message: 'Card tokenization failed.',
|
|
@@ -140,8 +139,8 @@ class Hpp {
|
|
|
140
139
|
paymentIntent: this.paymentIntent,
|
|
141
140
|
merchantUsername: this.username,
|
|
142
141
|
cardToken: this.cardToken,
|
|
143
|
-
|
|
144
|
-
|
|
142
|
+
test: this.test,
|
|
143
|
+
challengeWindowSize: this.challengeWindowSize
|
|
145
144
|
});
|
|
146
145
|
return; // do not continue execution to old 3DS
|
|
147
146
|
}
|
|
@@ -150,7 +149,7 @@ class Hpp {
|
|
|
150
149
|
customer: this.customer,
|
|
151
150
|
paymentIntent: this.paymentIntent,
|
|
152
151
|
bin: data.bin,
|
|
153
|
-
challengeWindowSize: (
|
|
152
|
+
challengeWindowSize: (_a = this.hppOptions) === null || _a === void 0 ? void 0 : _a.challengeWindowSize,
|
|
154
153
|
});
|
|
155
154
|
}
|
|
156
155
|
else {
|
|
@@ -207,7 +206,6 @@ class Hpp {
|
|
|
207
206
|
handlers[BridgeEvent.THREE_D_SECURE_ENABLED] = (data) => {
|
|
208
207
|
this.threeDSecureEnabled = typeof data === "boolean" ? data : false;
|
|
209
208
|
if (this.threeDSecureEnabled) {
|
|
210
|
-
console.log("this is a three_d_secure enabled page: ", this.threeDSecureEnabled);
|
|
211
209
|
// setPublicEventListeners is set before this feature flag is returned.
|
|
212
210
|
// we need to therefore unset the scaHandler (for the old implementation or we will get two purchase requests
|
|
213
211
|
off(PublicEvent.SCA_SUCCESS, this.scaHandler);
|
|
@@ -247,7 +245,4 @@ class Hpp {
|
|
|
247
245
|
this.headless.contentWindow.postMessage(message, '*');
|
|
248
246
|
}
|
|
249
247
|
}
|
|
250
|
-
__decorate([
|
|
251
|
-
logMethod()
|
|
252
|
-
], Hpp.prototype, "createPurchase", null);
|
|
253
248
|
export { Hpp, HPP_DEFAULT_OPTIONS, };
|
package/dist/react/VerifyCard.js
CHANGED
|
@@ -6,6 +6,6 @@ const VerifyCard = ({ handlers, config, iframeProps }) => {
|
|
|
6
6
|
handlers: handlers,
|
|
7
7
|
});
|
|
8
8
|
return (React.createElement("div", null,
|
|
9
|
-
React.createElement("iframe", Object.assign({ src: paymentUrl, "data-test-id": "verify-card", title: "verification-form" }, iframeProps))));
|
|
9
|
+
React.createElement("iframe", Object.assign({ src: paymentUrl, name: 'renderIframe', "data-test-id": "verify-card", title: "verification-form" }, iframeProps))));
|
|
10
10
|
};
|
|
11
11
|
export default VerifyCard;
|
|
@@ -5,6 +5,7 @@ type UseMessageProps = {
|
|
|
5
5
|
handlers: FatZebra.Handlers;
|
|
6
6
|
options?: FatZebra.OptionalUrlValues;
|
|
7
7
|
sca?: InstanceType<typeof Sca>;
|
|
8
|
+
config?: FatZebra.PaymentConfig;
|
|
8
9
|
};
|
|
9
|
-
declare const useMessage: ({ paymentIntent, options, handlers, sca }: UseMessageProps) => void;
|
|
10
|
+
declare const useMessage: ({ paymentIntent, options, handlers, sca, config }: UseMessageProps) => void;
|
|
10
11
|
export default useMessage;
|
package/dist/react/useMessage.js
CHANGED
|
@@ -7,9 +7,17 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
7
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
|
-
import { useEffect } from 'react';
|
|
10
|
+
import { useEffect, useRef, useState } from 'react';
|
|
11
11
|
import * as FatZebra from "../shared/types";
|
|
12
|
-
|
|
12
|
+
import ThreeDSecure from "../three_d_secure";
|
|
13
|
+
import * as bridge from "../shared/bridge-client";
|
|
14
|
+
import env, { Environment } from "../shared/env";
|
|
15
|
+
import { BridgeEvent } from "../shared/types";
|
|
16
|
+
const useMessage = ({ paymentIntent, options, handlers, sca, config }) => {
|
|
17
|
+
const [threeDSecureEnabled, setThreeDSecureEnabled] = useState(false);
|
|
18
|
+
const threeDSecureRef = useRef(null);
|
|
19
|
+
const successCallback = handlers[FatZebra.PublicEvent.SCA_SUCCESS];
|
|
20
|
+
const failureCallback = handlers[FatZebra.PublicEvent.SCA_ERROR];
|
|
13
21
|
const emit = (event, data) => {
|
|
14
22
|
const handler = handlers[event];
|
|
15
23
|
if (handler) {
|
|
@@ -31,6 +39,15 @@ const useMessage = ({ paymentIntent, options, handlers, sca }) => {
|
|
|
31
39
|
data,
|
|
32
40
|
});
|
|
33
41
|
}
|
|
42
|
+
if (options && options.sca_enabled && threeDSecureEnabled) {
|
|
43
|
+
threeDSecureRef.current.run({
|
|
44
|
+
paymentIntent,
|
|
45
|
+
cardToken: data.token,
|
|
46
|
+
merchantUsername: config.username,
|
|
47
|
+
test: config.environment !== Environment.production
|
|
48
|
+
});
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
34
51
|
if (options && sca && options.sca_enabled) {
|
|
35
52
|
yield sca.run({ paymentIntent, bin: data.bin, cardToken: data.token });
|
|
36
53
|
}
|
|
@@ -42,6 +59,37 @@ const useMessage = ({ paymentIntent, options, handlers, sca }) => {
|
|
|
42
59
|
return;
|
|
43
60
|
if (event.data.subject === FatZebra.BridgeEvent.BIN_LOOKUP)
|
|
44
61
|
return;
|
|
62
|
+
if (event.data.subject === FatZebra.BridgeEvent.THREE_D_SECURE_ENABLED) {
|
|
63
|
+
setThreeDSecureEnabled(event.data.data);
|
|
64
|
+
if (event.data.data) {
|
|
65
|
+
const { el } = bridge.load2(env[config.environment].bridgeUrl);
|
|
66
|
+
const headless = el;
|
|
67
|
+
let onMessage;
|
|
68
|
+
headless.onload = () => {
|
|
69
|
+
const iframe = document.querySelector('[name="renderIframe"]');
|
|
70
|
+
const threeDS = new ThreeDSecure({
|
|
71
|
+
successCallback,
|
|
72
|
+
failureCallback,
|
|
73
|
+
bridge: headless,
|
|
74
|
+
environment: config.environment,
|
|
75
|
+
iframe: iframe
|
|
76
|
+
});
|
|
77
|
+
threeDSecureRef.current = threeDS;
|
|
78
|
+
const messages = threeDS.messageHandlers(); // { [subject]: (payload) => void }
|
|
79
|
+
onMessage = (ev) => {
|
|
80
|
+
var _a, _b;
|
|
81
|
+
const subject = (_a = ev === null || ev === void 0 ? void 0 : ev.data) === null || _a === void 0 ? void 0 : _a.subject;
|
|
82
|
+
const payload = (_b = ev === null || ev === void 0 ? void 0 : ev.data) === null || _b === void 0 ? void 0 : _b.data;
|
|
83
|
+
if (!subject)
|
|
84
|
+
return;
|
|
85
|
+
const handler = messages[subject];
|
|
86
|
+
if (handler)
|
|
87
|
+
handler(payload);
|
|
88
|
+
};
|
|
89
|
+
window.addEventListener("message", onMessage);
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
}
|
|
45
93
|
if (event.data.subject === FatZebra.BridgeEvent.FORM_VALIDATION_ERROR) {
|
|
46
94
|
emit(FatZebra.PublicEvent.FORM_VALIDATION_ERROR, {
|
|
47
95
|
errors: event.data.data,
|
|
@@ -60,6 +108,19 @@ const useMessage = ({ paymentIntent, options, handlers, sca }) => {
|
|
|
60
108
|
yield handleTokenizeCardResponse(event.data.data);
|
|
61
109
|
}
|
|
62
110
|
});
|
|
111
|
+
useEffect(() => {
|
|
112
|
+
const message = {
|
|
113
|
+
channel: 'sca',
|
|
114
|
+
subject: BridgeEvent.READY,
|
|
115
|
+
data: {}
|
|
116
|
+
};
|
|
117
|
+
const iframe = document.querySelector('[name="renderIframe"]');
|
|
118
|
+
if (!iframe)
|
|
119
|
+
return;
|
|
120
|
+
iframe.onload = () => {
|
|
121
|
+
iframe.contentWindow.postMessage(message, '*');
|
|
122
|
+
};
|
|
123
|
+
}, []);
|
|
63
124
|
useEffect(() => {
|
|
64
125
|
window.addEventListener("message", messageHandler);
|
|
65
126
|
return () => {
|
|
@@ -26,7 +26,7 @@ declare class ThreeDSecure {
|
|
|
26
26
|
paymentIntent: PaymentIntent;
|
|
27
27
|
cardToken: string;
|
|
28
28
|
merchantUsername: string;
|
|
29
|
-
challengeWindowSize
|
|
29
|
+
challengeWindowSize?: ChallengeWindowSize;
|
|
30
30
|
test: boolean;
|
|
31
31
|
}): void;
|
|
32
32
|
setupResponse(data: DeviceDataCollectionMessage): void;
|
|
@@ -8,7 +8,7 @@ const threeDResponseData = (response) => {
|
|
|
8
8
|
sli: toFzSli(response.eci),
|
|
9
9
|
eci: response.eci,
|
|
10
10
|
xid: response.xid,
|
|
11
|
-
ver:
|
|
11
|
+
ver: response === null || response === void 0 ? void 0 : response.veres,
|
|
12
12
|
directoryServerTxnId: response.directory_server_txn_id,
|
|
13
13
|
threedsVersion: response.threeds_version,
|
|
14
14
|
};
|