Requiply
SDK TypeScript

Obsługa błędów

Przechwytuj błędy API, rozgałęziaj kod według przyczyny i obsługuj odrzucone rezerwacje.

Nieudane odpowiedzi API zgłaszają RequiplyError:

import { RequiplyError } from '@requiply/api-sdk';

try {
  await requiply.sales.create({ lines: [{ saleItemId, quantity: 1 }], paymentMethod: 'liqpay' });
} catch (error) {
  if (error instanceof RequiplyError && error.reason === 'client_email_required') {
    console.error('LiqPay needs a client with an email');
  } else {
    throw error;
  }
}

Właściwości błędu

WłaściwośćCo zawiera
statusStatus odpowiedzi HTTP, na przykład 400, 403, 404, 409 lub 429.
messageCzytelny dla ludzi komunikat API, a w razie jego braku opis statusu HTTP. Pokazuj go ludziom, ale nie rozgałęziaj kodu według jego treści.
reasonPrzyczyna w formie czytelnej dla programu, gdy API ją podaje, na przykład feature_disabled. Według niej rozgałęziaj kod.
dataDodatkowe pola wysłane przez API razem z błędem, w tym reason.
detailsPrzetworzona treść odpowiedzi albo surowy tekst odpowiedzi, gdy nie jest to JSON.
retryAfterLiczba sekund oczekiwania z nagłówka Retry-After odpowiedzi 429.

Przyczyny błędów

reason ustawiają zapytania o rezerwację wysyłane z kluczami publicznymi, punkty końcowe Sprzedaży oraz pozycje sprzedaży w wycenach i rezerwacjach:

reasonStatusZnaczenie
request_only403Klucz publiczny wywołał bookings.create() bez asRequest: true.
feature_disabled403Włącz sprzedaż jest wyłączone albo organizacja nie ma planu Advanced.
selling_disabled403Klucz publiczny poprosił o towary na sprzedaż, a organizacja nie sprzedaje klientom.
out_of_stock409Klucz publiczny poprosił o więcej sztuk, niż jest na półce. data.saleItemId wskazuje towar, a data.availableQuantity mówi, ile zostało.
invalid_lines400Pozycja nie ma towaru albo jej ilość nie jest liczbą całkowitą większą od zera.
duplicate_line400Ten sam towar występuje w dwóch pozycjach.
sale_item_not_found404Towar nie istnieje w tej organizacji.
sale_item_archived409Towar jest zarchiwizowany i nie można go sprzedać.
invalid_payment400paymentMethod nie jest znaną metodą.
payment_method_unavailable400Organizacja nie ma aktywnej integracji dla tej metody płatności.
client_email_required400LiqPay wysyła fakturę e-mailem, więc sprzedaż wymaga klienta z adresem e-mail.
sale_not_found404Sprzedaż nie istnieje.

Mogą pojawić się nowe przyczyny, więc zawsze zostawiaj gałąź domyślną. Większość innych błędów, takich jak brakujące pole czy nieznana rezerwacja, zawiera tylko status i message.

Limity żądań

Każdy klucz może wykonać 100 żądań na minutę. Kolejne żądania zgłaszają RequiplyError ze status 429 i retryAfter w sekundach. W przeglądarkach retryAfter nie jest ustawiony, bo API nie udostępnia tego nagłówka między różnymi źródłami. Odczekaj kilka sekund przed ponowną próbą.

Odrzucone rezerwacje nie są błędami

bookings.create() nie zgłasza wyjątku, gdy organizacja nie może przyjąć rezerwacji, na przykład dlatego, że pozycje są zajęte w tych datach albo wydanie wypada poza godzinami pracy. Zwraca wynik success: false, message, a czasem reason. Zobacz Rezerwacje.

Błędy inne niż RequiplyError

Walidacja w konstruktorze i brakujące API środowiska uruchomieniowego zgłaszają TypeError: brakujący lub pusty apiKey, niedostępne fetch albo klucz tajny użyty w przeglądarce. Awarie sieci i przerwane żądania kończą się odrzuceniem z błędem, który zgłasza Twoja implementacja fetch.

Copyright © 2026