Integracja Uplisting i rezerwacje Bema 6
Jak połączyć WordPress z zewnętrznym API, nie dublować danych i bezpiecznie obsłużyć dostępność, cenę oraz płatność.

Integracja API nie polega wyłącznie na pobraniu odpowiedzi JSON. Trzeba ustalić, który system jest źródłem prawdy, jak często dane się zmieniają, co zrobić przy awarii oraz których operacji nie wolno potwierdzić na podstawie starego cache. Projekt Bema 6 dobrze pokazuje ten sposób myślenia.
Jedno źródło danych operacyjnych
Uplisting przechowuje informacje o apartamentach, stawkach, zasadach pobytu i dostępności. WordPress odpowiada za edytowalną prezentację marki w wersji polskiej i angielskiej. Zamiast utrzymywać drugi kalendarz, strona pobiera dane z systemu rezerwacyjnego i normalizuje je do własnego modelu.
Normalizacja jest ważna, bo zewnętrzny dostawca może zmienić nazwy pól albo zwracać różne warianty danych. Wewnętrzna warstwa adaptacyjna ogranicza wpływ takich zmian na szablony strony i formularz.
Synchronizacja zależy od ryzyka
Lżejsze odświeżenie danych odbywa się regularnie, a pełna synchronizacja co godzinę. Nie każda informacja ma jednak ten sam poziom wrażliwości. Nieaktualny opis może być niedogodnością, natomiast nieaktualna dostępność może prowadzić do podwójnej rezerwacji. Dlatego przy zbyt starych danych system blokuje operację zamiast zgadywać.
Serwer sprawdza wszystko ponownie
Formularz może natychmiast pokazać orientacyjną cenę, ale przeglądarka nie jest zaufanym źródłem. Po wysłaniu danych serwer ponownie sprawdza terminy, minimalną długość pobytu i cenę. Dopiero wtedy zapisuje rezerwację jako oczekującą. Potwierdzenie blokuje daty w chronionym kalendarzu iCal danego apartamentu.
Płatność wymaga niezależnego potwierdzenia
Integracja Przelewy24 tworzy transakcję po stronie operatora. Powrót klienta na stronę nie wystarcza do uznania płatności. System weryfikuje podpis callbacku i identyfikatory transakcji, zanim zmieni status. Tak samo należy projektować integracje z innymi operatorami, magazynem, CRM lub księgowością.
Bezpieczeństwo, obserwowalność i wyjątki
Nonce, honeypot, limitowanie żądań i Cloudflare Turnstile ograniczają automatyczny spam. Logi i status ostatniej synchronizacji pozwalają odróżnić błąd dostawcy od problemu po stronie strony. Najważniejsze jest jednak zaplanowanie wyjątków: nieudanej płatności, wygasłego zgłoszenia, konfliktu terminu i czasowej niedostępności API.
To podejście można zastosować do dowolnego udokumentowanego API. Szczegóły wdrożenia opisuje realizacja Bema 6.