@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 +1 -1
- package/lib/service/CardService.d.ts +3 -3
- package/lib/service/CardService.js +46 -81
- package/package.json +1 -1
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.
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
-
|
|
209
|
-
|
|
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(
|
|
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
|
-
|
|
261
|
-
|
|
262
|
-
if (CardService_1._isCardinalInitialized())
|
|
236
|
+
_request3DSToken(callback) {
|
|
237
|
+
window.Cardinal.on(this._paymentSetupCompleteEvent, () => {
|
|
263
238
|
callback();
|
|
264
|
-
|
|
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(
|
|
346
|
+
this._initializeCardinal(jwtResponse.jwt, cardNumber);
|
|
362
347
|
return jwtResponse.jwt;
|
|
363
348
|
}));
|
|
364
349
|
}
|
|
365
|
-
_initializeCardinal(
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
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(
|
|
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
|
-
|
|
386
|
-
|
|
387
|
-
|
|
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(
|
|
397
|
-
window.Cardinal.off(
|
|
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(
|
|
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 = {
|