@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 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
- const message = {
49
- channel,
50
- subject: BridgeEvent.TOKENIZE_CARD_REQUEST,
51
- data: {
52
- access_token: window.localStorage.getItem(LocalStorageAccessTokenKey),
53
- card_holder: card.holder,
54
- card_number: card.number,
55
- card_expiry: `${card.expiryMonth}/${card.expiryYear}`,
56
- cvv: card.cvv,
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: this.headless
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
- threeDSecure.run({
94
- paymentIntent: params.paymentIntent,
90
+ const bin = card.number.substr(0, 6);
91
+ this.sca.run({
95
92
  cardToken: data.token,
96
- merchantUsername: this.fzConfig.username,
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
- threeDSecure.run({
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
- cardToken: cardToken,
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) {
@@ -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, tokenizeOnly }: {
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, tokenizeOnly }) {
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 {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fat-zebra/sdk",
3
- "version": "2.0.1-beta.0",
3
+ "version": "2.0.1-beta.1",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {