@kushki/js 1.39.6 → 1.39.7

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/lib/KushkiInfo.js CHANGED
@@ -12,7 +12,7 @@ const UtilsService_1 = require("./../lib/service/UtilsService");
12
12
  */
13
13
  class KInfo {
14
14
  static buildKushkiInfo(kushkiInfo) {
15
- const kushki_js_version = "1.39.6";
15
+ const kushki_js_version = "1.39.7";
16
16
  if (kushkiInfo) {
17
17
  if (UtilsService_1.UtilsService.sIsEmpty(kushkiInfo.platformVersion))
18
18
  kushkiInfo.platformVersion = kushki_js_version;
@@ -39,6 +39,8 @@ export declare class CardService implements ICardService {
39
39
  private readonly _3Dsecure;
40
40
  private readonly _cardNumber;
41
41
  private _sandboxEnable;
42
+ private readonly _paymentValidatedEvent;
43
+ private readonly _paymentSetupCompleteEvent;
42
44
  constructor(gateway: IKushkiGateway, authService: IAuthService, antiFraud: IAntiFraud);
43
45
  requestToken(request: TokenRequest | TokenKPayRequest, mid: string, isTest: boolean, regional: boolean, callback: (value: TokenResponse | ErrorResponse) => void): void;
44
46
  requestDeviceToken(request: SubscriptionIdRequest, mid: string, isTest: boolean, regional: boolean, callback: (value: TokenResponse | ErrorResponse) => void): void;
@@ -49,7 +51,6 @@ export declare class CardService implements ICardService {
49
51
  requestSecureInit(request: SecureInitRequest, mid: string, isTest: boolean, regional: boolean, callback: (value: SecureInitResponse | ErrorResponse) => void): void;
50
52
  private _getCreateSubscriptionDataToTransform;
51
53
  private _request3DSToken;
52
- private _setupCompleteCardinal;
53
54
  private _requestTokenGateway;
54
55
  private _getMerchantSettings;
55
56
  private _validateParameters;
@@ -66,12 +67,11 @@ export declare class CardService implements ICardService {
66
67
  private _isSandboxEnabled;
67
68
  private _getCybersourceJwtSubscription;
68
69
  private _is3DSSecureEnabled;
70
+ private _loadCardinalScript;
69
71
  private _initCybersource;
70
72
  private _initializeCardinal;
71
73
  private _initCybersourceSubscription;
72
74
  private _completeCardinal;
73
- private static _initCardinal;
74
- private static _isCardinalInitialized;
75
75
  private static _ccaCardinal;
76
76
  private static _is3dsValid;
77
77
  private _setSandboxEnable;
@@ -46,6 +46,8 @@ let CardService = CardService_1 = class CardService {
46
46
  this._3Dsecure = "active_3dsecure";
47
47
  this._cardNumber = "card.number";
48
48
  this._sandboxEnable = false;
49
+ this._paymentValidatedEvent = "payments.validated";
50
+ this._paymentSetupCompleteEvent = "payments.setupComplete";
49
51
  this._gateway = gateway;
50
52
  this._antiFraud = antiFraud;
51
53
  this._authService = authService;
@@ -108,7 +110,7 @@ let CardService = CardService_1 = class CardService {
108
110
  error: (err) => Kushki_1.Kushki.callbackError(err, callback),
109
111
  next: ([final_request, authorization, merchant]) => {
110
112
  if (final_request.jwt && !merchant.sandboxEnable)
111
- this._request3DSToken(isTest, () => {
113
+ this._request3DSToken(() => {
112
114
  this._requestTokenGateway(final_request, mid, isTest, regional, callback, authorization);
113
115
  });
114
116
  else
@@ -135,7 +137,7 @@ let CardService = CardService_1 = class CardService {
135
137
  delete sift_science_obj.sessionId;
136
138
  if (jwt && !this._sandboxEnable) {
137
139
  sift_science_obj = Object.assign(Object.assign({}, sift_science_obj), { jwt, amount: request.amount, cardHolderName: request.cardHolderName, currency: request.currency });
138
- this._request3DSToken(isTest, () => {
140
+ this._request3DSToken(() => {
139
141
  sift_science_obj = Object.assign(Object.assign({}, sift_science_obj), { jwt });
140
142
  this._requestDeviceToken(Object.assign({ subscriptionId: request.subscriptionId }, sift_science_obj), mid, isTest, regional, callback);
141
143
  });
@@ -174,7 +176,7 @@ let CardService = CardService_1 = class CardService {
174
176
  error: (err) => Kushki_1.Kushki.callbackError(err, callback),
175
177
  next: ([body, jwt, merchant]) => {
176
178
  if (body.jwt && !merchant.sandboxEnable)
177
- this._request3DSToken(isTest, () => {
179
+ this._request3DSToken(() => {
178
180
  this._requestSubscriptionTokenGateway(body, mid, isTest, regional, callback, jwt);
179
181
  });
180
182
  else
@@ -205,24 +207,8 @@ let CardService = CardService_1 = class CardService {
205
207
  return this._ccaSandbox(body, mid, isTest, regional, callback);
206
208
  if (this._isInvalidSpecificationVersion(body, this._sandboxEnable))
207
209
  return Kushki_1.Kushki.callbackError(new KushkiError_1.KushkiError(ErrorEnum_1.ERRORS.E012), callback);
208
- if (isTest) {
209
- // tslint:disable-next-line:no-duplicate-string
210
- Promise.resolve().then(() => require("./../../lib/libs/cardinal/staging")).then(() => {
211
- CardService_1._ccaCardinal(body);
212
- });
213
- Promise.resolve().then(() => require("./../../lib/libs/cardinal/staging")).then(() => {
214
- this._completeCardinal(body.secureId, mid, isTest, regional, callback);
215
- });
216
- }
217
- else {
218
- // tslint:disable-next-line:no-duplicate-string
219
- Promise.resolve().then(() => require("./../../lib/libs/cardinal/prod")).then(() => {
220
- CardService_1._ccaCardinal(body);
221
- });
222
- Promise.resolve().then(() => require("./../../lib/libs/cardinal/prod")).then(() => {
223
- this._completeCardinal(body.secureId, mid, isTest, regional, callback);
224
- });
225
- }
210
+ CardService_1._ccaCardinal(body);
211
+ this._completeCardinal(body.secureId, mid, isTest, regional, callback);
226
212
  }
227
213
  requestSecureInit(request, mid, isTest, regional, callback) {
228
214
  rxjs_1.of(1)
@@ -235,7 +221,7 @@ let CardService = CardService_1 = class CardService {
235
221
  callback(jwt);
236
222
  return;
237
223
  }
238
- this._request3DSToken(isTest, () => {
224
+ this._request3DSToken(() => {
239
225
  callback(jwt);
240
226
  });
241
227
  },
@@ -246,25 +232,11 @@ let CardService = CardService_1 = class CardService {
246
232
  return Object.assign({}, subscriptionTokenRequest);
247
233
  return Object.assign(Object.assign({}, subscriptionTokenRequest), siftObject);
248
234
  }
249
- _request3DSToken(isTest, callback) {
250
- if (isTest)
251
- Promise.resolve().then(() => require("./../../lib/libs/cardinal/staging")).then(() => {
252
- this._setupCompleteCardinal(callback);
253
- });
254
- else
255
- Promise.resolve().then(() => require("./../../lib/libs/cardinal/prod")).then(() => {
256
- this._setupCompleteCardinal(callback);
257
- });
258
- }
259
235
  // istanbul ignore next
260
- _setupCompleteCardinal(callback) {
261
- // tslint:disable-next-line:early-exit
262
- if (CardService_1._isCardinalInitialized())
236
+ _request3DSToken(callback) {
237
+ window.Cardinal.on(this._paymentSetupCompleteEvent, () => {
263
238
  callback();
264
- else
265
- window.Cardinal.on("payments.setupComplete", () => {
266
- callback();
267
- });
239
+ });
268
240
  }
269
241
  // istanbul ignore next
270
242
  _requestTokenGateway(body, mid, testEnv, regional, callback, authorization) {
@@ -356,36 +328,53 @@ let CardService = CardService_1 = class CardService {
356
328
  _is3DSSecureEnabled(merchantSettings) {
357
329
  return merchantSettings[this._3Dsecure] === true;
358
330
  }
331
+ _loadCardinalScript(isTest) {
332
+ const last_script = document.getElementById("cardinal_sc_id");
333
+ if (last_script)
334
+ last_script.remove();
335
+ const head = document.getElementsByTagName("head")[0];
336
+ const script = document.createElement("script");
337
+ script.id = "cardinal_sc_id";
338
+ script.src = isTest
339
+ ? "https://songbirdstag.cardinalcommerce.com/cardinalcruise/v1/songbird.js"
340
+ : "https://songbird.cardinalcommerce.com/cardinalcruise/v1/songbird.js";
341
+ head.appendChild(script);
342
+ }
359
343
  _initCybersource(cardNumber, mid, isTest, regional) {
344
+ this._loadCardinalScript(isTest);
360
345
  return rxjs_1.of(1).pipe(operators_1.switchMap(() => this._gateway.cybersourceJwt(mid, isTest, regional)), operators_1.map((jwtResponse) => {
361
- this._initializeCardinal(isTest, jwtResponse.jwt, cardNumber);
346
+ this._initializeCardinal(jwtResponse.jwt, cardNumber);
362
347
  return jwtResponse.jwt;
363
348
  }));
364
349
  }
365
- _initializeCardinal(isTest, jwt, identifier) {
366
- if (isTest)
367
- Promise.resolve().then(() => require("./../../lib/libs/cardinal/staging")).then(() => {
368
- CardService_1._initCardinal(jwt, identifier);
369
- });
370
- else
371
- Promise.resolve().then(() => require("./../../lib/libs/cardinal/prod")).then(() => {
372
- CardService_1._initCardinal(jwt, identifier);
373
- });
350
+ _initializeCardinal(jwt, cardNumber) {
351
+ window.Cardinal.setup("init", {
352
+ jwt,
353
+ order: {
354
+ Consumer: {
355
+ Account: {
356
+ AccountNumber: UtilsService_1.getBinFromCreditCardNumber(cardNumber),
357
+ },
358
+ },
359
+ },
360
+ });
374
361
  }
375
362
  _initCybersourceSubscription(subscriptionId, mid, isTest, regional) {
363
+ this._loadCardinalScript(isTest);
376
364
  return rxjs_1.of(1).pipe(operators_1.switchMap(() => this._gateway.cybersourceJwt(mid, isTest, regional, subscriptionId)), operators_1.map((jwtResponse) => {
377
365
  const bin = buffer_1.Buffer.from(jwtResponse.identifier, "base64").toString("ascii");
378
- this._initializeCardinal(isTest, jwtResponse.jwt, bin);
366
+ this._initializeCardinal(jwtResponse.jwt, bin);
379
367
  return jwtResponse.jwt;
380
368
  }));
381
369
  }
382
370
  // istanbul ignore next
383
371
  _completeCardinal(secureServiceId, mid, isTest, regional, callback) {
384
- return window.Cardinal.on(
385
- // tslint:disable-next-line:no-duplicate-string
386
- "payments.validated", (data) => __awaiter(this, void 0, void 0, function* () {
387
- if (data.ActionCode === CardinalValidated_1.ActionCodeEnum.FAIL && !data.Validated)
372
+ return window.Cardinal.on(this._paymentValidatedEvent, (data) => __awaiter(this, void 0, void 0, function* () {
373
+ if (data.ActionCode === CardinalValidated_1.ActionCodeEnum.FAIL && !data.Validated) {
374
+ window.Cardinal.off(this._paymentSetupCompleteEvent);
375
+ window.Cardinal.off(this._paymentValidatedEvent);
388
376
  return Kushki_1.Kushki.callbackError(new KushkiError_1.KushkiError(ErrorEnum_1.ERRORS.E012), callback);
377
+ }
389
378
  const otp_request = {
390
379
  secureServiceId,
391
380
  otpValue: "",
@@ -393,8 +382,8 @@ let CardService = CardService_1 = class CardService {
393
382
  const secure = this._gateway.requestSecureServiceValidation(mid, otp_request, isTest, regional);
394
383
  return secure.subscribe({
395
384
  complete: () => {
396
- window.Cardinal.off("payments.setupComplete");
397
- window.Cardinal.off("payments.validated");
385
+ window.Cardinal.off(this._paymentSetupCompleteEvent);
386
+ window.Cardinal.off(this._paymentValidatedEvent);
398
387
  },
399
388
  error: (err) => Kushki_1.Kushki.callbackError(err, callback),
400
389
  next: (response) => {
@@ -405,30 +394,6 @@ let CardService = CardService_1 = class CardService {
405
394
  });
406
395
  }));
407
396
  }
408
- // istanbul ignore next
409
- static _initCardinal(jwt, cardNumber) {
410
- if (CardService_1._isCardinalInitialized()) {
411
- window.Cardinal.trigger("accountNumber.update", UtilsService_1.getBinFromCreditCardNumber(cardNumber));
412
- window.Cardinal.trigger("jwt.update", jwt);
413
- }
414
- else
415
- window.Cardinal.setup("init", {
416
- jwt,
417
- order: {
418
- Consumer: {
419
- Account: {
420
- AccountNumber: UtilsService_1.getBinFromCreditCardNumber(cardNumber),
421
- },
422
- },
423
- },
424
- });
425
- }
426
- static _isCardinalInitialized() {
427
- const cardinal_status = window.Cardinal.complete({
428
- Status: "Success",
429
- });
430
- return !!cardinal_status;
431
- }
432
397
  static _ccaCardinal(tokenResponse) {
433
398
  window.Cardinal.continue("cca", {
434
399
  AcsUrl: tokenResponse.security.acsURL,
@@ -466,7 +431,7 @@ let CardService = CardService_1 = class CardService {
466
431
  },
467
432
  });
468
433
  // istanbul ignore next
469
- cardinal_sandbox_js_1.KushkiCardinalSandbox.on("payments.validated", (isErrorFlow) => __awaiter(this, void 0, void 0, function* () {
434
+ cardinal_sandbox_js_1.KushkiCardinalSandbox.on(this._paymentValidatedEvent, (isErrorFlow) => __awaiter(this, void 0, void 0, function* () {
470
435
  if (isErrorFlow === true)
471
436
  return Kushki_1.Kushki.callbackError(new KushkiError_1.KushkiError(ErrorEnum_1.ERRORS.E008), callback);
472
437
  const otp_request = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kushki/js",
3
- "version": "1.39.6",
3
+ "version": "1.39.7",
4
4
  "description": "kushki-js",
5
5
  "main": "lib/lib.js",
6
6
  "types": "lib/lib.d.ts",