@paydock/client-sdk 1.126.0-beta → 1.127.0

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.
@@ -958,7 +958,7 @@
958
958
  version: 'x-sdk-version',
959
959
  type: 'x-sdk-type'
960
960
  });
961
- SDK._version = '1.126.0-beta';
961
+ SDK._version = 'v1.127.0';
962
962
 
963
963
  /******************************************************************************
964
964
  Copyright (c) Microsoft Corporation.
@@ -5518,12 +5518,12 @@
5518
5518
  * @type {object}
5519
5519
  * @param {string} HTML=html
5520
5520
  */
5521
- var TOKEN_FORMAT;
5521
+ var TOKEN_FORMAT$1;
5522
5522
  (function (TOKEN_FORMAT) {
5523
5523
  TOKEN_FORMAT["HTML"] = "html";
5524
5524
  TOKEN_FORMAT["URL"] = "url";
5525
5525
  TOKEN_FORMAT["STANDALONE_3DS"] = "standalone_3ds";
5526
- })(TOKEN_FORMAT || (TOKEN_FORMAT = {}));
5526
+ })(TOKEN_FORMAT$1 || (TOKEN_FORMAT$1 = {}));
5527
5527
  /**
5528
5528
  * List of available event's name
5529
5529
  * @const EVENT
@@ -5582,11 +5582,11 @@
5582
5582
  *
5583
5583
  */
5584
5584
  function load() {
5585
- if (this.token.format === TOKEN_FORMAT.HTML) this.iFrame.loadFromHtml(this.token.content, {
5585
+ if (this.token.format === TOKEN_FORMAT$1.HTML) this.iFrame.loadFromHtml(this.token.content, {
5586
5586
  title: '3d secure authentication'
5587
- }, 'threeDSecure-iframe');else if (this.token.format === TOKEN_FORMAT.URL) this.iFrame.load(this.token.content, {
5587
+ }, 'threeDSecure-iframe');else if (this.token.format === TOKEN_FORMAT$1.URL) this.iFrame.load(this.token.content, {
5588
5588
  title: '3d secure authentication'
5589
- }, 'threeDSecure-iframe');else if (this.token.format === TOKEN_FORMAT.STANDALONE_3DS) this.standalone3dsService.load(this.token.content, {
5589
+ }, 'threeDSecure-iframe');else if (this.token.format === TOKEN_FORMAT$1.STANDALONE_3DS) this.standalone3dsService.load(this.token.content, {
5590
5590
  title: '3d secure authentication'
5591
5591
  });else console.error('Token contain unsupported payload');
5592
5592
  }
@@ -5634,7 +5634,7 @@
5634
5634
  key: "on",
5635
5635
  value: function on(eventName, cb) {
5636
5636
  var _this = this;
5637
- if (this.token.format === TOKEN_FORMAT.STANDALONE_3DS) {
5637
+ if (this.token.format === TOKEN_FORMAT$1.STANDALONE_3DS) {
5638
5638
  if (typeof cb === 'function') return this.eventEmitter.subscribe(eventName, cb);
5639
5639
  return new Promise(function (resolve) {
5640
5640
  return _this.eventEmitter.subscribe(eventName, function (res) {
@@ -16081,6 +16081,95 @@
16081
16081
  }(InstructionHandler);
16082
16082
  InstructionBankAccountFormShow = __decorate([Instruction('instruction.bank_account_form.show')], InstructionBankAccountFormShow);
16083
16083
 
16084
+ var toByteArray_1 = toByteArray;
16085
+ var revLookup = [];
16086
+ var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;
16087
+
16088
+ var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
16089
+ for (var i$2 = 0, len = code.length; i$2 < len; ++i$2) {
16090
+ revLookup[code.charCodeAt(i$2)] = i$2;
16091
+ }
16092
+
16093
+ // Support decoding URL-safe base64 strings, as Node.js does.
16094
+ // See: https://en.wikipedia.org/wiki/Base64#URL_applications
16095
+ revLookup['-'.charCodeAt(0)] = 62;
16096
+ revLookup['_'.charCodeAt(0)] = 63;
16097
+
16098
+ function getLens (b64) {
16099
+ var len = b64.length;
16100
+
16101
+ if (len % 4 > 0) {
16102
+ throw new Error('Invalid string. Length must be a multiple of 4')
16103
+ }
16104
+
16105
+ // Trim off extra bytes after placeholder bytes are found
16106
+ // See: https://github.com/beatgammit/base64-js/issues/42
16107
+ var validLen = b64.indexOf('=');
16108
+ if (validLen === -1) validLen = len;
16109
+
16110
+ var placeHoldersLen = validLen === len
16111
+ ? 0
16112
+ : 4 - (validLen % 4);
16113
+
16114
+ return [validLen, placeHoldersLen]
16115
+ }
16116
+
16117
+ function _byteLength (b64, validLen, placeHoldersLen) {
16118
+ return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
16119
+ }
16120
+
16121
+ function toByteArray (b64) {
16122
+ var tmp;
16123
+ var lens = getLens(b64);
16124
+ var validLen = lens[0];
16125
+ var placeHoldersLen = lens[1];
16126
+
16127
+ var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));
16128
+
16129
+ var curByte = 0;
16130
+
16131
+ // if there are placeholders, only get up to the last complete 4 chars
16132
+ var len = placeHoldersLen > 0
16133
+ ? validLen - 4
16134
+ : validLen;
16135
+
16136
+ var i;
16137
+ for (i = 0; i < len; i += 4) {
16138
+ tmp =
16139
+ (revLookup[b64.charCodeAt(i)] << 18) |
16140
+ (revLookup[b64.charCodeAt(i + 1)] << 12) |
16141
+ (revLookup[b64.charCodeAt(i + 2)] << 6) |
16142
+ revLookup[b64.charCodeAt(i + 3)];
16143
+ arr[curByte++] = (tmp >> 16) & 0xFF;
16144
+ arr[curByte++] = (tmp >> 8) & 0xFF;
16145
+ arr[curByte++] = tmp & 0xFF;
16146
+ }
16147
+
16148
+ if (placeHoldersLen === 2) {
16149
+ tmp =
16150
+ (revLookup[b64.charCodeAt(i)] << 2) |
16151
+ (revLookup[b64.charCodeAt(i + 1)] >> 4);
16152
+ arr[curByte++] = tmp & 0xFF;
16153
+ }
16154
+
16155
+ if (placeHoldersLen === 1) {
16156
+ tmp =
16157
+ (revLookup[b64.charCodeAt(i)] << 10) |
16158
+ (revLookup[b64.charCodeAt(i + 1)] << 4) |
16159
+ (revLookup[b64.charCodeAt(i + 2)] >> 2);
16160
+ arr[curByte++] = (tmp >> 8) & 0xFF;
16161
+ arr[curByte++] = tmp & 0xFF;
16162
+ }
16163
+
16164
+ return arr
16165
+ }
16166
+
16167
+ var TOKEN_FORMAT;
16168
+ (function (TOKEN_FORMAT) {
16169
+ TOKEN_FORMAT["HTML"] = "html";
16170
+ TOKEN_FORMAT["URL"] = "url";
16171
+ TOKEN_FORMAT["STANDALONE_3DS"] = "standalone_3ds";
16172
+ })(TOKEN_FORMAT || (TOKEN_FORMAT = {}));
16084
16173
  var InstructionCanvas3dsShow = /*#__PURE__*/function (_InstructionHandler) {
16085
16174
  function InstructionCanvas3dsShow() {
16086
16175
  _classCallCheck(this, InstructionCanvas3dsShow);
@@ -16091,12 +16180,25 @@
16091
16180
  key: "handle",
16092
16181
  value: function handle(context) {
16093
16182
  var _this = this;
16183
+ var token = this.decodeBase64Token(context.payload._3ds_token);
16094
16184
  var canvas = new Canvas3ds(this.formSelector, context.payload._3ds_token);
16095
16185
  canvas.setEnv(this.getEnv(context.instruction_token));
16096
- canvas.on('chargeAuth', function (event) {
16186
+ canvas.on('chargeAuth', function () {
16097
16187
  return Spinner.show();
16098
16188
  });
16099
- canvas.on('chargeAuthSuccess', function (event) {
16189
+ canvas.on('chargeAuthChallenge', function () {
16190
+ if (token.format === TOKEN_FORMAT.STANDALONE_3DS) {
16191
+ Spinner.hide();
16192
+ _this.observeIframeAndResize();
16193
+ }
16194
+ });
16195
+ canvas.on('chargeAuthDecoupled', function () {
16196
+ if (token.format === TOKEN_FORMAT.STANDALONE_3DS) {
16197
+ Spinner.hide();
16198
+ _this.observeIframeAndResize();
16199
+ }
16200
+ });
16201
+ canvas.on('chargeAuthSuccess', function () {
16100
16202
  var _a;
16101
16203
  (_a = _this.checkoutWidget) === null || _a === void 0 ? void 0 : _a.fetchInstruction();
16102
16204
  _this.api.checkout().callback({
@@ -16110,8 +16212,9 @@
16110
16212
  })["catch"](function (response) {
16111
16213
  return console.error('callback.child_widget.status - chargeAuthSuccess: error', response);
16112
16214
  });
16215
+ Spinner.show();
16113
16216
  });
16114
- canvas.on('chargeAuthReject', function (event) {
16217
+ canvas.on('chargeAuthReject', function () {
16115
16218
  var _a;
16116
16219
  // **TODO add interface for chargeAuthReject event **//
16117
16220
  (_a = _this.checkoutWidget) === null || _a === void 0 ? void 0 : _a.fetchInstruction();
@@ -16126,6 +16229,7 @@
16126
16229
  })["catch"](function (response) {
16127
16230
  return console.error('callback.child_widget.status - chargeAuthReject: error', response);
16128
16231
  });
16232
+ Spinner.show();
16129
16233
  });
16130
16234
  canvas.on('error', function (event) {
16131
16235
  var _a;
@@ -16142,15 +16246,60 @@
16142
16246
  })["catch"](function (response) {
16143
16247
  return console.error('callback.child_widget.status - errorEvent: error', response);
16144
16248
  });
16249
+ Spinner.show();
16145
16250
  });
16146
16251
  canvas.load();
16147
- Spinner.hide();
16252
+ if (token.format !== TOKEN_FORMAT.STANDALONE_3DS) {
16253
+ Spinner.hide();
16254
+ }
16148
16255
  }
16149
16256
  }, {
16150
16257
  key: "destroy",
16151
16258
  value: function destroy() {
16152
16259
  document.querySelector(this.formSelector).innerHTML = '';
16153
16260
  }
16261
+ }, {
16262
+ key: "decodeBase64Token",
16263
+ value: function decodeBase64Token(token) {
16264
+ try {
16265
+ var base64 = token.replace(/-/g, '+').replace(/_/g, '/').padEnd(Math.ceil(token.length / 4) * 4, '=');
16266
+ var bytes = toByteArray_1(base64);
16267
+ var json = new TextDecoder().decode(bytes);
16268
+ return JSON.parse(json);
16269
+ } catch (err) {
16270
+ console.error('Failed to decode _3ds_token:', err);
16271
+ throw err;
16272
+ }
16273
+ }
16274
+ }, {
16275
+ key: "observeIframeAndResize",
16276
+ value: function observeIframeAndResize() {
16277
+ var outer = document.querySelector('#standaloneWidget');
16278
+ if (outer) {
16279
+ outer.style.display = 'flex';
16280
+ outer.style.justifyContent = 'center';
16281
+ }
16282
+ var container = document.querySelector('#paydock_authorization_iframe');
16283
+ if (!container) {
16284
+ console.warn('Container not found');
16285
+ return;
16286
+ }
16287
+ var observer = new MutationObserver(function () {
16288
+ var iframe = container.querySelector('iframe');
16289
+ if (iframe) {
16290
+ iframe.style.width = '100%';
16291
+ iframe.style.height = '500px';
16292
+ iframe.style.border = 'none';
16293
+ iframe.style.display = 'block';
16294
+ console.info('3DS iframe resized', iframe);
16295
+ observer.disconnect();
16296
+ }
16297
+ });
16298
+ observer.observe(container, {
16299
+ childList: true,
16300
+ subtree: true
16301
+ });
16302
+ }
16154
16303
  }]);
16155
16304
  }(InstructionHandler);
16156
16305
  InstructionCanvas3dsShow = __decorate([Instruction('instruction.canvas_3ds_form.show')], InstructionCanvas3dsShow);