@xsolla/payment-client-core 0.2.58 → 0.2.59

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.
@@ -1,6 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { InjectionToken, Injectable, Inject, isDevMode, Pipe, NgModule } from '@angular/core';
3
- import { firstValueFrom, lastValueFrom, map, Subject, BehaviorSubject, filter as filter$1, takeUntil, skip, take, of, interval, throwError } from 'rxjs';
3
+ import { firstValueFrom, lastValueFrom, map, Subject, BehaviorSubject, filter as filter$1, takeUntil, skip, take, of, interval, throwError, share } from 'rxjs';
4
4
  import * as i1 from '@angular/common/http';
5
5
  import { HttpParams, HttpHeaders, HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
6
6
  import { UntypedFormGroup, Validators, UntypedFormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';
@@ -8241,102 +8241,9 @@ class ApplePaySessionHandlerAbstract {
8241
8241
  }
8242
8242
  }
8243
8243
 
8244
- class SocketBridgeService {
8245
- constructor(secureApiClient) {
8246
- this.secureApiClient = secureApiClient;
8247
- this.apiUrl = 'socket_bridge';
8248
- }
8249
- async getBridgeConnectionChannel(token) {
8250
- this.token = token;
8251
- const params = new HttpParams().set('access_token', token);
8252
- return firstValueFrom(this.secureApiClient.get(`${this.apiUrl}/socket_url`, {
8253
- params,
8254
- }));
8255
- }
8256
- async publishMessage(message, messagePayload) {
8257
- const requestPayload = {
8258
- message: {
8259
- command: message,
8260
- data: messagePayload,
8261
- },
8262
- };
8263
- const endpointUrl = `${this.apiUrl}/message?access_token=${this.token}`;
8264
- return firstValueFrom(this.secureApiClient.post(endpointUrl.toString(), requestPayload, {
8265
- headers: new HttpHeaders().set('Content-Type', 'application/json; charset=utf-8'),
8266
- responseType: 'json',
8267
- }));
8268
- }
8269
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: SocketBridgeService, deps: [{ token: SecureApiClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
8270
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: SocketBridgeService, providedIn: 'root' }); }
8271
- }
8272
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: SocketBridgeService, decorators: [{
8273
- type: Injectable,
8274
- args: [{
8275
- providedIn: 'root',
8276
- }]
8277
- }], ctorParameters: () => [{ type: SecureApiClient }] });
8278
-
8279
- class ApplePayExternalWindowCommunicationService {
8280
- constructor(window, webSocketFactory, socketBridgeService) {
8281
- this.window = window;
8282
- this.webSocketFactory = webSocketFactory;
8283
- this.socketBridgeService = socketBridgeService;
8284
- }
8285
- getWindowClose$() {
8286
- const isWindowCloseMessage = (message) => message.command === "apple-pay-window-close" /* CommandsForPages.APPLE_PAY_WINDOW_CLOSE */;
8287
- const eventSource$ = this.getEventSource(isWindowCloseMessage);
8288
- return eventSource$.pipe(tap(() => {
8289
- this.window.focus();
8290
- }));
8291
- }
8292
- getWindowReturnMessage$() {
8293
- const isReturnMessage = (message) => message.command === "apple-pay-return" /* CommandsForPages.APPLE_PAY_RETURN */;
8294
- const eventSource$ = this.getEventSource(isReturnMessage);
8295
- return eventSource$.pipe(tap(() => {
8296
- // TODO: send close event to sdk
8297
- }));
8298
- }
8299
- getWindowSendTokenMessage$() {
8300
- const isSendTokenMessage = (message) => message.command === "apple-pay-send-token" /* CommandsForPages.APPLE_PAY_SEND_TOKEN */;
8301
- return this.getEventSource(isSendTokenMessage);
8302
- }
8303
- getCartRecalculationMessage$() {
8304
- const isRecalculateCartMessage = (message) => message.command === "apple-pay-recalculate-cart" /* CommandsForPages.APPLE_PAY_RECALCULATE_CART */;
8305
- return this.getEventSource(isRecalculateCartMessage);
8306
- }
8307
- async openWebSocketConnection(token) {
8308
- const bridgeInfo = await this.socketBridgeService.getBridgeConnectionChannel(token);
8309
- if (this.websocketClient) {
8310
- this.websocketClient.close();
8311
- }
8312
- this.websocketClient = this.webSocketFactory.createWebSocketClient(bridgeInfo.subscribeUrl, bridgeInfo.clientType);
8313
- await this.websocketClient.open(bridgeInfo.subscribeUrl, bridgeInfo.channelName);
8314
- }
8315
- async sendMessageToAnotherWindow(command, payload) {
8316
- await this.socketBridgeService.publishMessage(command, payload);
8317
- }
8318
- getEventSource(eventHandler) {
8319
- return this.websocketClient.messages$.pipe(map$1((message) => {
8320
- console.info('websocket message', message);
8321
- return JSON.parse(message);
8322
- }), filter(eventHandler));
8323
- }
8324
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ApplePayExternalWindowCommunicationService, deps: [{ token: windowToken }, { token: WebSocketFactory }, { token: SocketBridgeService }], target: i0.ɵɵFactoryTarget.Injectable }); }
8325
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ApplePayExternalWindowCommunicationService, providedIn: 'root' }); }
8326
- }
8327
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ApplePayExternalWindowCommunicationService, decorators: [{
8328
- type: Injectable,
8329
- args: [{
8330
- providedIn: 'root',
8331
- }]
8332
- }], ctorParameters: () => [{ type: undefined, decorators: [{
8333
- type: Inject,
8334
- args: [windowToken]
8335
- }] }, { type: WebSocketFactory }, { type: SocketBridgeService }] });
8336
-
8337
8244
  class ApplePayCartService {
8338
8245
  get cartSuccessfulRecalculated$() {
8339
- return this.cartSuccessfulRecalculated.asObservable();
8246
+ return this.cartSuccessfulRecalculated.asObservable().pipe(share());
8340
8247
  }
8341
8248
  get cartErrorRecalculated$() {
8342
8249
  return this.cartErrorRecalculated.asObservable();
@@ -8344,8 +8251,7 @@ class ApplePayCartService {
8344
8251
  get cartRecalculationRequest$() {
8345
8252
  return this.cartRecalculationRequest.asObservable();
8346
8253
  }
8347
- constructor(externalWindowCommunicationService, summaryFinanceDetailsAdapterService) {
8348
- this.externalWindowCommunicationService = externalWindowCommunicationService;
8254
+ constructor(summaryFinanceDetailsAdapterService) {
8349
8255
  this.summaryFinanceDetailsAdapterService = summaryFinanceDetailsAdapterService;
8350
8256
  this.cartSuccessfulRecalculated = new Subject();
8351
8257
  this.cartErrorRecalculated = new Subject();
@@ -8380,9 +8286,6 @@ class ApplePayCartService {
8380
8286
  subtotalPayment: financeDetails.cartSummary.subtotalPayment,
8381
8287
  };
8382
8288
  this.cartSuccessfulRecalculated.next(updatedPrice);
8383
- void this.externalWindowCommunicationService.sendMessageToAnotherWindow("apple-pay-update-price" /* CommandsForPages.APPLE_PAY_UPDATE_PRICE */, {
8384
- newCartPricing: updatedPrice,
8385
- });
8386
8289
  }
8387
8290
  sendErrorRecalculatedCart(error) {
8388
8291
  this.cartErrorRecalculated.next(error);
@@ -8419,7 +8322,7 @@ class ApplePayCartService {
8419
8322
  getTotalAmount(finance) {
8420
8323
  return finance?.grand_total?.amount ?? finance?.total?.amount;
8421
8324
  }
8422
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ApplePayCartService, deps: [{ token: ApplePayExternalWindowCommunicationService }, { token: SummaryFinanceDetailsAdapterService }], target: i0.ɵɵFactoryTarget.Injectable }); }
8325
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ApplePayCartService, deps: [{ token: SummaryFinanceDetailsAdapterService }], target: i0.ɵɵFactoryTarget.Injectable }); }
8423
8326
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ApplePayCartService, providedIn: 'root' }); }
8424
8327
  }
8425
8328
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ApplePayCartService, decorators: [{
@@ -8427,7 +8330,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
8427
8330
  args: [{
8428
8331
  providedIn: 'root',
8429
8332
  }]
8430
- }], ctorParameters: () => [{ type: ApplePayExternalWindowCommunicationService }, { type: SummaryFinanceDetailsAdapterService }] });
8333
+ }], ctorParameters: () => [{ type: SummaryFinanceDetailsAdapterService }] });
8431
8334
 
8432
8335
  class BraintreeHandler extends ApplePaySessionHandlerAbstract {
8433
8336
  constructor(window, elkLoggerService, applePayCartService) {
@@ -9386,6 +9289,99 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
9386
9289
  args: [windowToken]
9387
9290
  }] }, { type: ElkLoggerService }] });
9388
9291
 
9292
+ class SocketBridgeService {
9293
+ constructor(secureApiClient) {
9294
+ this.secureApiClient = secureApiClient;
9295
+ this.apiUrl = 'socket_bridge';
9296
+ }
9297
+ async getBridgeConnectionChannel(token) {
9298
+ this.token = token;
9299
+ const params = new HttpParams().set('access_token', token);
9300
+ return firstValueFrom(this.secureApiClient.get(`${this.apiUrl}/socket_url`, {
9301
+ params,
9302
+ }));
9303
+ }
9304
+ async publishMessage(message, messagePayload) {
9305
+ const requestPayload = {
9306
+ message: {
9307
+ command: message,
9308
+ data: messagePayload,
9309
+ },
9310
+ };
9311
+ const endpointUrl = `${this.apiUrl}/message?access_token=${this.token}`;
9312
+ return firstValueFrom(this.secureApiClient.post(endpointUrl.toString(), requestPayload, {
9313
+ headers: new HttpHeaders().set('Content-Type', 'application/json; charset=utf-8'),
9314
+ responseType: 'json',
9315
+ }));
9316
+ }
9317
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: SocketBridgeService, deps: [{ token: SecureApiClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
9318
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: SocketBridgeService, providedIn: 'root' }); }
9319
+ }
9320
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: SocketBridgeService, decorators: [{
9321
+ type: Injectable,
9322
+ args: [{
9323
+ providedIn: 'root',
9324
+ }]
9325
+ }], ctorParameters: () => [{ type: SecureApiClient }] });
9326
+
9327
+ class ApplePayExternalWindowCommunicationService {
9328
+ constructor(window, webSocketFactory, socketBridgeService) {
9329
+ this.window = window;
9330
+ this.webSocketFactory = webSocketFactory;
9331
+ this.socketBridgeService = socketBridgeService;
9332
+ }
9333
+ getWindowClose$() {
9334
+ const isWindowCloseMessage = (message) => message.command === "apple-pay-window-close" /* CommandsForPages.APPLE_PAY_WINDOW_CLOSE */;
9335
+ const eventSource$ = this.getEventSource(isWindowCloseMessage);
9336
+ return eventSource$.pipe(tap(() => {
9337
+ this.window.focus();
9338
+ }));
9339
+ }
9340
+ getWindowReturnMessage$() {
9341
+ const isReturnMessage = (message) => message.command === "apple-pay-return" /* CommandsForPages.APPLE_PAY_RETURN */;
9342
+ const eventSource$ = this.getEventSource(isReturnMessage);
9343
+ return eventSource$.pipe(tap(() => {
9344
+ // TODO: send close event to sdk
9345
+ }));
9346
+ }
9347
+ getWindowSendTokenMessage$() {
9348
+ const isSendTokenMessage = (message) => message.command === "apple-pay-send-token" /* CommandsForPages.APPLE_PAY_SEND_TOKEN */;
9349
+ return this.getEventSource(isSendTokenMessage);
9350
+ }
9351
+ getCartRecalculationMessage$() {
9352
+ const isRecalculateCartMessage = (message) => message.command === "apple-pay-recalculate-cart" /* CommandsForPages.APPLE_PAY_RECALCULATE_CART */;
9353
+ return this.getEventSource(isRecalculateCartMessage);
9354
+ }
9355
+ async openWebSocketConnection(token) {
9356
+ const bridgeInfo = await this.socketBridgeService.getBridgeConnectionChannel(token);
9357
+ if (this.websocketClient) {
9358
+ this.websocketClient.close();
9359
+ }
9360
+ this.websocketClient = this.webSocketFactory.createWebSocketClient(bridgeInfo.subscribeUrl, bridgeInfo.clientType);
9361
+ await this.websocketClient.open(bridgeInfo.subscribeUrl, bridgeInfo.channelName);
9362
+ }
9363
+ async sendMessageToAnotherWindow(command, payload) {
9364
+ await this.socketBridgeService.publishMessage(command, payload);
9365
+ }
9366
+ getEventSource(eventHandler) {
9367
+ return this.websocketClient.messages$.pipe(map$1((message) => {
9368
+ console.info('websocket message', message);
9369
+ return JSON.parse(message);
9370
+ }), filter(eventHandler));
9371
+ }
9372
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ApplePayExternalWindowCommunicationService, deps: [{ token: windowToken }, { token: WebSocketFactory }, { token: SocketBridgeService }], target: i0.ɵɵFactoryTarget.Injectable }); }
9373
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ApplePayExternalWindowCommunicationService, providedIn: 'root' }); }
9374
+ }
9375
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ApplePayExternalWindowCommunicationService, decorators: [{
9376
+ type: Injectable,
9377
+ args: [{
9378
+ providedIn: 'root',
9379
+ }]
9380
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
9381
+ type: Inject,
9382
+ args: [windowToken]
9383
+ }] }, { type: WebSocketFactory }, { type: SocketBridgeService }] });
9384
+
9389
9385
  class ApplePayService {
9390
9386
  get paymentParameters() {
9391
9387
  return this.applePayParams;
@@ -9407,7 +9403,27 @@ class ApplePayService {
9407
9403
  get integrationType$() {
9408
9404
  return this.integrationType.asObservable();
9409
9405
  }
9410
- constructor(window, summaryFinanceDetailsAdapterService, braintreeHandler, checkoutHandler, appleParamsBuilder, elkLoggerService, applePaySdkService, externalWindowCommunicationService, applePayCartService) {
9406
+ get getCartRecalculationMessage$() {
9407
+ return this.externalWindowCommunicationService
9408
+ .getCartRecalculationMessage$()
9409
+ .pipe(takeUntil(this.destroy$));
9410
+ }
9411
+ get getWindowSendTokenMessage$() {
9412
+ return this.externalWindowCommunicationService
9413
+ .getWindowSendTokenMessage$()
9414
+ .pipe(takeUntil(this.destroy$));
9415
+ }
9416
+ get getWindowClose$() {
9417
+ return this.externalWindowCommunicationService
9418
+ .getWindowClose$()
9419
+ .pipe(takeUntil(this.destroy$));
9420
+ }
9421
+ get getWindowReturnMessage$() {
9422
+ return this.externalWindowCommunicationService
9423
+ .getWindowReturnMessage$()
9424
+ .pipe(takeUntil(this.destroy$));
9425
+ }
9426
+ constructor(window, summaryFinanceDetailsAdapterService, braintreeHandler, checkoutHandler, appleParamsBuilder, elkLoggerService, applePaySdkService, externalWindowCommunicationService, applePayCartService, settingsService) {
9411
9427
  this.window = window;
9412
9428
  this.summaryFinanceDetailsAdapterService = summaryFinanceDetailsAdapterService;
9413
9429
  this.braintreeHandler = braintreeHandler;
@@ -9417,6 +9433,7 @@ class ApplePayService {
9417
9433
  this.applePaySdkService = applePaySdkService;
9418
9434
  this.externalWindowCommunicationService = externalWindowCommunicationService;
9419
9435
  this.applePayCartService = applePayCartService;
9436
+ this.settingsService = settingsService;
9420
9437
  this.payment = new Subject();
9421
9438
  this.error = new Subject();
9422
9439
  this.integrationType = new Subject();
@@ -9474,14 +9491,19 @@ class ApplePayService {
9474
9491
  }
9475
9492
  this.emitIntegrationType();
9476
9493
  }
9477
- async redirectToPaymentPage(parameters, token, isSandbox) {
9494
+ async startWindowCommunication() {
9495
+ await this.externalWindowCommunicationService.openWebSocketConnection(this.settingsService.token);
9496
+ }
9497
+ sendUpdatedPriceViaWindowCommunication(updatedPrice) {
9498
+ void this.externalWindowCommunicationService.sendMessageToAnotherWindow("apple-pay-update-price" /* CommandsForPages.APPLE_PAY_UPDATE_PRICE */, {
9499
+ newCartPricing: updatedPrice,
9500
+ });
9501
+ }
9502
+ redirectToPaymentPage(parameters, token, isSandbox) {
9478
9503
  const route = pagesRoutes.get(applePayId);
9479
9504
  if (!route) {
9480
9505
  return;
9481
9506
  }
9482
- console.log('🟡[LOG] token :>>', token);
9483
- await this.externalWindowCommunicationService.openWebSocketConnection(token);
9484
- this.listenWebsocketMessages();
9485
9507
  const query = new URLSearchParams({
9486
9508
  ...parameters,
9487
9509
  merchantCapabilities: JSON.stringify(parameters.merchantCapabilities),
@@ -9546,6 +9568,12 @@ class ApplePayService {
9546
9568
  sessionHandler.startSession(parameters, additionalParams, () => this.applePaySdkService.emitWindowClosing());
9547
9569
  this.emitApplePayOpened();
9548
9570
  }
9571
+ mapShippingAddressToContact(shippingAddress) {
9572
+ return mapShippingAddressToContact(shippingAddress);
9573
+ }
9574
+ setToken(token) {
9575
+ this.payment.next(token);
9576
+ }
9549
9577
  getSessionHandler(acquirer) {
9550
9578
  switch (acquirer) {
9551
9579
  case 'braintree':
@@ -9587,34 +9615,7 @@ class ApplePayService {
9587
9615
  this.applePayQrOpened.next();
9588
9616
  }
9589
9617
  }
9590
- listenWebsocketMessages() {
9591
- // Cart recalculation
9592
- this.externalWindowCommunicationService
9593
- .getCartRecalculationMessage$()
9594
- .pipe(takeUntil(this.destroy$))
9595
- .subscribe((message) => {
9596
- const shippingContact = mapShippingAddressToContact(message.data.shippingAddress);
9597
- this.applePayCartService.recalculateCartTaxes(shippingContact);
9598
- });
9599
- // Send token
9600
- this.externalWindowCommunicationService
9601
- .getWindowSendTokenMessage$()
9602
- .pipe(takeUntil(this.destroy$))
9603
- .subscribe((message) => {
9604
- this.payment.next(message.data.applePayToken);
9605
- });
9606
- // Close window
9607
- this.externalWindowCommunicationService.getWindowClose$().subscribe(() => {
9608
- // TODO handle
9609
- });
9610
- // Close window with 'back' button
9611
- this.externalWindowCommunicationService
9612
- .getWindowReturnMessage$()
9613
- .subscribe(() => {
9614
- // TODO handle
9615
- });
9616
- }
9617
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ApplePayService, deps: [{ token: windowToken }, { token: SummaryFinanceDetailsAdapterService }, { token: BraintreeHandler }, { token: CheckoutHandler }, { token: ApplePayParamsBuilderService }, { token: ElkLoggerService }, { token: ApplePaySdkService }, { token: ApplePayExternalWindowCommunicationService }, { token: ApplePayCartService }], target: i0.ɵɵFactoryTarget.Injectable }); }
9618
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ApplePayService, deps: [{ token: windowToken }, { token: SummaryFinanceDetailsAdapterService }, { token: BraintreeHandler }, { token: CheckoutHandler }, { token: ApplePayParamsBuilderService }, { token: ElkLoggerService }, { token: ApplePaySdkService }, { token: ApplePayExternalWindowCommunicationService }, { token: ApplePayCartService }, { token: SettingsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
9618
9619
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ApplePayService, providedIn: 'root' }); }
9619
9620
  }
9620
9621
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ApplePayService, decorators: [{
@@ -9625,7 +9626,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
9625
9626
  }], ctorParameters: () => [{ type: undefined, decorators: [{
9626
9627
  type: Inject,
9627
9628
  args: [windowToken]
9628
- }] }, { type: SummaryFinanceDetailsAdapterService }, { type: BraintreeHandler }, { type: CheckoutHandler }, { type: ApplePayParamsBuilderService }, { type: ElkLoggerService }, { type: ApplePaySdkService }, { type: ApplePayExternalWindowCommunicationService }, { type: ApplePayCartService }] });
9629
+ }] }, { type: SummaryFinanceDetailsAdapterService }, { type: BraintreeHandler }, { type: CheckoutHandler }, { type: ApplePayParamsBuilderService }, { type: ElkLoggerService }, { type: ApplePaySdkService }, { type: ApplePayExternalWindowCommunicationService }, { type: ApplePayCartService }, { type: SettingsService }] });
9629
9630
 
9630
9631
  /*
9631
9632
  * Public API Surface of core-library