@xsolla/payment-client-core 0.3.14 → 0.5.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.
Files changed (25) hide show
  1. package/esm2022/lib/core/payment/actions/status-updated/status-updated.action.class.mjs +9 -4
  2. package/esm2022/lib/core/payment/actions/status-updated/status-updated.action.type.mjs +1 -1
  3. package/esm2022/lib/core/payment/status/check-status/check-status.service.mjs +19 -13
  4. package/esm2022/lib/core/payment/status/listen-status/listen-status.service.mjs +31 -1
  5. package/esm2022/lib/core/payment/status/status-request/response/status-response.class.mjs +3 -1
  6. package/esm2022/lib/core/payment/status/status.interface.mjs +1 -1
  7. package/esm2022/lib/core/payment/status/status.service.mjs +48 -5
  8. package/esm2022/lib/core/payment/status/websocket-status/websocket-status.service.mjs +6 -2
  9. package/esm2022/lib/core/payment/xps-response.interface.mjs +1 -1
  10. package/esm2022/lib/core/settings/project.interface.mjs +1 -1
  11. package/esm2022/lib/core-library.service.mjs +9 -2
  12. package/esm2022/lib/version.mjs +2 -2
  13. package/fesm2022/xsolla-payment-client-core.mjs +116 -21
  14. package/fesm2022/xsolla-payment-client-core.mjs.map +1 -1
  15. package/lib/core/payment/actions/status-updated/status-updated.action.class.d.ts +3 -0
  16. package/lib/core/payment/actions/status-updated/status-updated.action.type.d.ts +3 -0
  17. package/lib/core/payment/status/check-status/check-status.service.d.ts +7 -0
  18. package/lib/core/payment/status/listen-status/listen-status.service.d.ts +1 -0
  19. package/lib/core/payment/status/status.interface.d.ts +3 -0
  20. package/lib/core/payment/status/status.service.d.ts +13 -1
  21. package/lib/core/payment/xps-response.interface.d.ts +2 -0
  22. package/lib/core/settings/project.interface.d.ts +1 -0
  23. package/lib/core-library.service.d.ts +1 -0
  24. package/lib/version.d.ts +1 -1
  25. package/package.json +1 -1
@@ -3,9 +3,12 @@ import { StatusUpdatedAction, StatusUpdatedActionType } from './status-updated.a
3
3
  import { StatusResponse } from '../../status/status-request/response/status-response.class';
4
4
  import { Status } from '../../status/status.interface';
5
5
  import { SavePaymentMethodStatus } from '../../status/save-payment-method-status/save-payment-method-status.enum';
6
+ import { SettingsService } from '../../../settings/settings.service';
6
7
  import * as i0 from "@angular/core";
7
8
  export declare class StatusUpdatedActionCreator implements ActionCreator {
9
+ private readonly settingsService;
8
10
  type: StatusUpdatedActionType;
11
+ constructor(settingsService: SettingsService);
9
12
  getActionData({ statusResponse, isSavePaymentMethodMode, savePaymentMethodStatus, }: {
10
13
  statusResponse: StatusResponse | Status;
11
14
  isSavePaymentMethodMode?: boolean;
@@ -11,5 +11,8 @@ export interface StatusUpdatedActionData {
11
11
  invoice?: number;
12
12
  isSavePaymentMethodMode: boolean;
13
13
  savePaymentMethodStatus?: SavePaymentMethodStatus;
14
+ canRepeatPayment?: boolean;
15
+ canRepeatProcessingPayment?: boolean;
16
+ isRetryPaymentEnabled?: boolean;
14
17
  }
15
18
  export type StatusUpdatedAction = Action<StatusUpdatedActionType, StatusUpdatedActionData>;
@@ -16,6 +16,13 @@ export declare class CheckStatusService extends XpsApiPart<CheckStatusResponse>
16
16
  constructor(xpsApiService: XpsApiService, settingsService: SettingsService, xpsResponseErrorsMappingService: XpsResponseErrorsMappingService, requestFactory: CheckStatusRequestFactory, responseFactory: CheckStatusResponseFactory);
17
17
  setRequestParams(invoice: number): void;
18
18
  request(): void;
19
+ /**
20
+ * Performs a one-shot getstatus poll and returns the mapped response without
21
+ * emitting it to the shared `response$` stream. Used by StatusService to
22
+ * consult the authoritative terminal signal without interfering with the
23
+ * listen-status polling loop. See PAYMENTS-29021.
24
+ */
25
+ requestStatus(invoice: number): Promise<CheckStatusResponse>;
19
26
  static ɵfac: i0.ɵɵFactoryDeclaration<CheckStatusService, never>;
20
27
  static ɵprov: i0.ɵɵInjectableDeclaration<CheckStatusService>;
21
28
  }
@@ -18,6 +18,7 @@ export declare class ListenStatusService {
18
18
  private destroy$;
19
19
  private listenInvoice;
20
20
  private websocketInvoice;
21
+ private pendingTerminalStatus;
21
22
  get websocketOpened$(): Observable<StatusSettings>;
22
23
  get statusUpdated$(): Observable<StatusUpdated>;
23
24
  constructor(statusService: StatusRequestService, checkStatusService: CheckStatusService, websocketStatusService: WebsocketStatusService, userBehaviourAnalyticsService: UserBehaviourAnalyticsService);
@@ -49,4 +49,7 @@ export interface Status {
49
49
  order?: StatusOrder;
50
50
  isSavePaymentAccount?: boolean;
51
51
  autoCancellation?: boolean;
52
+ canRepeatPayment?: boolean;
53
+ canRepeatProcessingPayment?: boolean;
54
+ isRetryPaymentEnabled?: boolean;
52
55
  }
@@ -8,6 +8,7 @@ import { StatusUpdatedActionCreator } from '../actions/status-updated/status-upd
8
8
  import { UrlService } from '../../url/url.service';
9
9
  import { FinanceDetailsService } from '../finance-details/finance-details.service';
10
10
  import { SavePaymentMethodStatusService } from './save-payment-method-status/save-payment-method-status.service';
11
+ import { CheckStatusService } from './check-status/check-status.service';
11
12
  import { StatusSettings } from './status-settings.interface';
12
13
  import * as i0 from "@angular/core";
13
14
  export declare class StatusService {
@@ -17,13 +18,24 @@ export declare class StatusService {
17
18
  private readonly listenStatusService;
18
19
  private readonly nextActionService;
19
20
  private readonly savePaymentMethodStatusService;
21
+ private readonly checkStatusService;
20
22
  private readonly statusUpdatedActionCreator;
21
23
  private listenStatusSubscription;
22
- constructor(urlService: UrlService, statusRequestService: StatusRequestService, financeDetailsService: FinanceDetailsService, listenStatusService: ListenStatusService, nextActionService: NextActionService, savePaymentMethodStatusService: SavePaymentMethodStatusService, statusUpdatedActionCreator: StatusUpdatedActionCreator);
24
+ constructor(urlService: UrlService, statusRequestService: StatusRequestService, financeDetailsService: FinanceDetailsService, listenStatusService: ListenStatusService, nextActionService: NextActionService, savePaymentMethodStatusService: SavePaymentMethodStatusService, checkStatusService: CheckStatusService, statusUpdatedActionCreator: StatusUpdatedActionCreator);
23
25
  getStatus(params: StatusRequestParams): Promise<Status>;
24
26
  getStatusWithUrlSearchParams(url?: string): Promise<Status>;
25
27
  listenFinalStatus(invoice: number): Observable<StatusSettings>;
26
28
  stopWaitingStatusUpdates(): void;
29
+ /**
30
+ * The full-status endpoint can report a non-terminal state (e.g.
31
+ * `processing` with group `delivering`) for a transaction that has actually
32
+ * been terminated — most notably a card payment declined by AFS and then
33
+ * auto-refunded. In that scenario the lightweight getstatus poll is the only
34
+ * authoritative terminal signal (`status: canceled`, `final: true`), so we
35
+ * consult it and surface the terminal verdict to the partner instead of
36
+ * leaving `statusState` stuck on `processing`.
37
+ */
38
+ private applyPollTerminalStatus;
27
39
  private getRequestParamsFromUrl;
28
40
  private startWaitingStatusUpdates;
29
41
  static ɵfac: i0.ɵɵFactoryDeclaration<StatusService, never>;
@@ -99,6 +99,8 @@ export interface XpsStatus {
99
99
  time: number;
100
100
  };
101
101
  statusData: {
102
+ canRepeatPayment?: boolean;
103
+ canRepeatProcessingPayment?: boolean;
102
104
  project: number;
103
105
  pid: number;
104
106
  out: number;
@@ -30,4 +30,5 @@ export interface Project {
30
30
  trackingInfo: TrackingInfo[] | [];
31
31
  isSubtotalVisibleByDefault?: boolean;
32
32
  isApplePayIframeIntegrationTurnedOn?: boolean;
33
+ isRetryPaymentEnabled?: boolean;
33
34
  }
@@ -98,6 +98,7 @@ export declare class CoreLibraryService {
98
98
  constructor(settingsService: SettingsService, loggerService: LoggerService, countryService: CountryService, paymentMethodsService: PaymentMethodsService, savedMethodsService: SavedMethodsService, userBalanceService: UserBalanceService, paymentConfigService: PaymentConfigService, paymentService: PaymentService, deviceFingerPrintService: DeviceFingerPrintService, financeDetailsService: FinanceDetailsService, legalService: LegalService, statusService: StatusService, nextActionService: NextActionService, creditCardService: CreditCardService, creditCardStateService: CreditCardStateService, formMessagesService: FormMessagesService, editSavedMethodsService: EditSavedMethodsService, userBehaviourAnalyticsService: UserBehaviourAnalyticsService, performanceService: PerformanceService, combinedPaymentMethodsService: CombinedPaymentMethodsService, countriesApiService: CountriesApiService, sendInstructionService: SendInstructionService, scriptTrackerService: ScriptTrackerService, translateService: TranslateService, commonLogAttributesService: CommonLogAttributesService, capabilitiesService: CapabilitiesService);
99
99
  init(configuration: InitConfiguration): Promise<void>;
100
100
  getStatus(url?: string): Promise<Status>;
101
+ get isRetryPaymentEnabled(): boolean;
101
102
  calculateField(changedField: Field, fields: Field[]): Promise<SyncResponse>;
102
103
  submit(fields: Field[]): Promise<{
103
104
  response: SubmitResponse;
package/lib/version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const PAYMENT_CLIENT_CORE_VERSION = "0.3.14";
1
+ export declare const PAYMENT_CLIENT_CORE_VERSION = "0.5.0";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xsolla/payment-client-core",
3
- "version": "0.3.14",
3
+ "version": "0.5.0",
4
4
  "engines": {
5
5
  "node": ">=16.10.0",
6
6
  "npm": ">=8.11.0"