@fat-zebra/sdk 2.0.1-beta.0 → 2.0.1-beta.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/dist/hpp/hpp.js +2 -3
- package/dist/main.d.ts +2 -3
- package/dist/main.js +29 -38
- package/dist/react/useMessage.js +1 -2
- package/dist/three_d_secure/index.d.ts +1 -3
- package/dist/three_d_secure/index.js +1 -7
- package/package.json +1 -1
package/dist/hpp/hpp.js
CHANGED
|
@@ -10,8 +10,8 @@ import { emit, off, on } from '../shared/event-manager';
|
|
|
10
10
|
import { PostMessageClient } from '../shared/post-message-client';
|
|
11
11
|
import { BridgeEvent, PublicEvent, } from '../shared/types';
|
|
12
12
|
import * as util from '../shared/util';
|
|
13
|
-
import { logMethod } from "../logging/logMethod";
|
|
14
13
|
import { setTransactionReference } from "../logging/logger-context";
|
|
14
|
+
import { logMethod } from "../logging/logMethod";
|
|
15
15
|
import ThreeDSecure from "../three_d_secure";
|
|
16
16
|
const HPP_DEFAULT_OPTIONS = {
|
|
17
17
|
enableSca: false,
|
|
@@ -147,8 +147,7 @@ class Hpp {
|
|
|
147
147
|
merchantUsername: this.username,
|
|
148
148
|
cardToken: this.cardToken,
|
|
149
149
|
test: this.test,
|
|
150
|
-
challengeWindowSize: this.challengeWindowSize
|
|
151
|
-
tokenizeOnly: false
|
|
150
|
+
challengeWindowSize: this.challengeWindowSize
|
|
152
151
|
});
|
|
153
152
|
return; // do not continue execution to old 3DS
|
|
154
153
|
}
|
package/dist/main.d.ts
CHANGED
|
@@ -27,10 +27,9 @@ export default class FatZebra {
|
|
|
27
27
|
private sca;
|
|
28
28
|
private fzConfig;
|
|
29
29
|
private gatewayClient;
|
|
30
|
-
private headless;
|
|
31
30
|
constructor(config: FZConfig);
|
|
32
|
-
tokenizeCard(card: Card): void;
|
|
33
|
-
cardDidTokenize(callback: (data: any) => void): void;
|
|
31
|
+
tokenizeCard(card: Card, headless: HTMLIFrameElement): void;
|
|
32
|
+
cardDidTokenize(headless: HTMLIFrameElement, callback: (data: any) => void): void;
|
|
34
33
|
verifyCard(params: VerifyCardParams): Promise<void>;
|
|
35
34
|
renderPaymentsPage(params: HppLoadParams): void;
|
|
36
35
|
renderApplePayButton(params: ApplePayParams): void;
|
package/dist/main.js
CHANGED
|
@@ -27,7 +27,6 @@ import { validateApplePayLoadParams } from "./validation/validators/apple-pay-lo
|
|
|
27
27
|
import { ApplePay } from "./applepay";
|
|
28
28
|
import { setLoggerUsername } from "./logging/logger-context";
|
|
29
29
|
import { logMethod } from "./logging/logMethod";
|
|
30
|
-
import ThreeDSecure from "./three_d_secure";
|
|
31
30
|
export default class FatZebra {
|
|
32
31
|
constructor(config) {
|
|
33
32
|
setLoggerUsername(config.username);
|
|
@@ -41,28 +40,29 @@ export default class FatZebra {
|
|
|
41
40
|
gatewayClient: this.gatewayClient,
|
|
42
41
|
});
|
|
43
42
|
this.sca.loadScript();
|
|
44
|
-
this.headless = bridge.load(process.env.PAYNOW_BRIDGE_URL);
|
|
45
43
|
}
|
|
46
|
-
tokenizeCard(card) {
|
|
44
|
+
tokenizeCard(card, headless) {
|
|
47
45
|
const channel = 'sca';
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
46
|
+
headless.onload = () => {
|
|
47
|
+
const message = {
|
|
48
|
+
channel,
|
|
49
|
+
subject: BridgeEvent.TOKENIZE_CARD_REQUEST,
|
|
50
|
+
data: {
|
|
51
|
+
access_token: window.localStorage.getItem(LocalStorageAccessTokenKey),
|
|
52
|
+
card_holder: card.holder,
|
|
53
|
+
card_number: card.number,
|
|
54
|
+
card_expiry: `${card.expiryMonth}/${card.expiryYear}`,
|
|
55
|
+
cvv: card.cvv,
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
headless.contentWindow.postMessage(message, '*');
|
|
58
59
|
};
|
|
59
|
-
this.headless.contentWindow.postMessage(message, '*');
|
|
60
60
|
}
|
|
61
|
-
cardDidTokenize(callback) {
|
|
61
|
+
cardDidTokenize(headless, callback) {
|
|
62
62
|
const channel = 'sca';
|
|
63
63
|
const postMessageClient = new PostMessageClient({
|
|
64
64
|
channel,
|
|
65
|
-
target:
|
|
65
|
+
target: headless
|
|
66
66
|
});
|
|
67
67
|
const handlers = {};
|
|
68
68
|
handlers[BridgeEvent.TOKENIZE_CARD_RESPONSE] = (data) => {
|
|
@@ -81,44 +81,35 @@ export default class FatZebra {
|
|
|
81
81
|
});
|
|
82
82
|
return;
|
|
83
83
|
}
|
|
84
|
-
const threeDSecure = new ThreeDSecure({
|
|
85
|
-
bridge: this.headless,
|
|
86
|
-
environment: process.env.API_ENV
|
|
87
|
-
});
|
|
88
84
|
switch (params.paymentMethod.type) {
|
|
89
85
|
case PaymentMethodType.CARD:
|
|
86
|
+
const headless = bridge.load(process.env.PAYNOW_BRIDGE_URL);
|
|
90
87
|
const card = params.paymentMethod.data;
|
|
91
|
-
this.cardDidTokenize((data) => __awaiter(this, void 0, void 0, function* () {
|
|
88
|
+
this.cardDidTokenize(headless, (data) => __awaiter(this, void 0, void 0, function* () {
|
|
92
89
|
var _a;
|
|
93
|
-
|
|
94
|
-
|
|
90
|
+
const bin = card.number.substr(0, 6);
|
|
91
|
+
this.sca.run({
|
|
95
92
|
cardToken: data.token,
|
|
96
|
-
|
|
93
|
+
customer: params.customer,
|
|
94
|
+
paymentIntent: params.paymentIntent,
|
|
95
|
+
bin,
|
|
97
96
|
challengeWindowSize: (_a = params.options) === null || _a === void 0 ? void 0 : _a.challengeWindowSize,
|
|
98
|
-
test: this.fzConfig.test,
|
|
99
|
-
tokenizeOnly: true
|
|
100
97
|
});
|
|
101
98
|
}));
|
|
102
|
-
this.tokenizeCard(card);
|
|
99
|
+
this.tokenizeCard(card, headless);
|
|
103
100
|
break;
|
|
104
101
|
case PaymentMethodType.CARD_ON_FILE:
|
|
105
102
|
const cardToken = params.paymentMethod.data.token;
|
|
106
|
-
|
|
103
|
+
const bin = (yield this.gatewayClient.getCard({ card_token: cardToken })).data.bin;
|
|
104
|
+
this.sca.run({
|
|
105
|
+
cardToken,
|
|
106
|
+
customer: params.customer,
|
|
107
107
|
paymentIntent: params.paymentIntent,
|
|
108
|
-
|
|
109
|
-
merchantUsername: this.fzConfig.username,
|
|
108
|
+
bin,
|
|
110
109
|
challengeWindowSize: (_a = params.options) === null || _a === void 0 ? void 0 : _a.challengeWindowSize,
|
|
111
|
-
test: this.fzConfig.test,
|
|
112
|
-
tokenizeOnly: true
|
|
113
110
|
});
|
|
114
111
|
break;
|
|
115
112
|
}
|
|
116
|
-
const channel = 'sca';
|
|
117
|
-
const postMessageClient = new PostMessageClient({
|
|
118
|
-
channel,
|
|
119
|
-
target: this.headless
|
|
120
|
-
});
|
|
121
|
-
postMessageClient.setEventListeners(threeDSecure.messageHandlers());
|
|
122
113
|
});
|
|
123
114
|
}
|
|
124
115
|
renderPaymentsPage(params) {
|
package/dist/react/useMessage.js
CHANGED
|
@@ -44,8 +44,7 @@ const useMessage = ({ paymentIntent, options, handlers, sca, config }) => {
|
|
|
44
44
|
paymentIntent,
|
|
45
45
|
cardToken: data.token,
|
|
46
46
|
merchantUsername: config.username,
|
|
47
|
-
test: config.environment !== Environment.production
|
|
48
|
-
tokenizeOnly: config.options.tokenize_only
|
|
47
|
+
test: config.environment !== Environment.production
|
|
49
48
|
});
|
|
50
49
|
return;
|
|
51
50
|
}
|
|
@@ -20,16 +20,14 @@ declare class ThreeDSecure {
|
|
|
20
20
|
private challengeWindowSize;
|
|
21
21
|
private successCallback;
|
|
22
22
|
private failureCallback;
|
|
23
|
-
private tokenizeOnly;
|
|
24
23
|
private iframe?;
|
|
25
24
|
constructor({ successCallback, failureCallback, environment, bridge, iframe }: ThreeDSecureConfig);
|
|
26
|
-
run({ paymentIntent, cardToken, merchantUsername, challengeWindowSize, test
|
|
25
|
+
run({ paymentIntent, cardToken, merchantUsername, challengeWindowSize, test }: {
|
|
27
26
|
paymentIntent: PaymentIntent;
|
|
28
27
|
cardToken: string;
|
|
29
28
|
merchantUsername: string;
|
|
30
29
|
challengeWindowSize?: ChallengeWindowSize;
|
|
31
30
|
test: boolean;
|
|
32
|
-
tokenizeOnly?: boolean;
|
|
33
31
|
}): void;
|
|
34
32
|
setupResponse(data: DeviceDataCollectionMessage): void;
|
|
35
33
|
messageHandlers(): {
|
|
@@ -19,7 +19,6 @@ import { ChallengeWindowSize } from "../sca/types";
|
|
|
19
19
|
import * as util from "../shared/util";
|
|
20
20
|
class ThreeDSecure {
|
|
21
21
|
constructor({ successCallback, failureCallback, environment, bridge, iframe }) {
|
|
22
|
-
this.tokenizeOnly = false;
|
|
23
22
|
this.headlessBridge = bridge;
|
|
24
23
|
this.environment = environment;
|
|
25
24
|
this.successCallback = successCallback;
|
|
@@ -27,8 +26,7 @@ class ThreeDSecure {
|
|
|
27
26
|
this.iframe = iframe;
|
|
28
27
|
DeviceDataCollection.listenDataCollectionResponse(environment);
|
|
29
28
|
}
|
|
30
|
-
run({ paymentIntent, cardToken, merchantUsername, challengeWindowSize, test
|
|
31
|
-
this.tokenizeOnly = tokenizeOnly;
|
|
29
|
+
run({ paymentIntent, cardToken, merchantUsername, challengeWindowSize, test }) {
|
|
32
30
|
this.setLoading();
|
|
33
31
|
this.paymentIntent = paymentIntent;
|
|
34
32
|
this.test = test;
|
|
@@ -126,8 +124,6 @@ class ThreeDSecure {
|
|
|
126
124
|
if (scenario.outcome.success) {
|
|
127
125
|
this.reportSuccess(`FatZebra.3DS: 3DS success - ${scenario.description}.`, threeDSecureData);
|
|
128
126
|
const extra = util.toObjectWithSnakeCaseKeys(threeDSecureData);
|
|
129
|
-
if (this.tokenizeOnly)
|
|
130
|
-
return; // DO NO process purchase if tokenizing only.
|
|
131
127
|
this.createPurchase(extra);
|
|
132
128
|
return;
|
|
133
129
|
}
|
|
@@ -153,8 +149,6 @@ class ThreeDSecure {
|
|
|
153
149
|
const extra = util.toObjectWithSnakeCaseKeys(threeDSecureData);
|
|
154
150
|
if (scenario.outcome.success) {
|
|
155
151
|
this.reportSuccess(`FatZebra.3DS: 3DS success - ${scenario.description}.`, threeDSecureData);
|
|
156
|
-
if (this.tokenizeOnly)
|
|
157
|
-
return; // DO NO process purchase if tokenizing only.
|
|
158
152
|
this.createPurchase(extra);
|
|
159
153
|
}
|
|
160
154
|
else {
|