Wyobraź sobie dwa podejścia do sprawdzania czy jest nowa wiadomość. Pierwsze: sprawdzasz skrzynkę co minutę. Drugie: dostajesz powiadomienie gdy nowa wiadomość przychodzi. Webhook to drugie podejście w integracji systemów.
Jak działa webhook
Webhook to żądanie HTTP wysyłane przez system A do systemu B w momencie zajścia zdarzenia. Gdy w sklepie zostanie złożone nowe zamówienie, PS wysyła żądanie POST na podany URL z danymi zamówienia. System odbierający przetwarza dane i odpowiada kodem 200. Nie ma odpytywania, nie ma opóźnienia wynikającego z interwału.
Kiedy webhook jest lepszy niż polling
Polling (regularne odpytywanie API co minutę lub co godzinę) generuje zbędny ruch nawet gdy nie ma nowych danych. Webhook jest efektywniejszy, bo ruch pojawia się tylko przy zdarzeniu. Dla aplikacji wymagających szybkiej reakcji, jak synchronizacja stanów magazynowych w czasie rzeczywistym, webhook jest jedyną sensowną opcją.
Odbiór webhooka w PHP
Endpoint odbierający webhook to zazwyczaj kontroler lub prosty skrypt PHP dostępny pod publicznym URL. Odbierasz payload z ciała żądania POST, weryfikujesz sygnaturę (jeśli system ją wysyła) i przetwarzasz dane. Odpowiedź powinna wrócić szybko - przetwarzanie czasochłonne warto delegować do kolejki.
Weryfikacja sygnatury
Każdy webhook może być potencjalnie sfałszowany - ktokolwiek zna Twój URL może wysłać do niego żądanie POST. Większość systemów wysyłających webhooks podpisuje je kryptograficznie. Aplikacja odbierająca weryfikuje podpis, żeby upewnić się że żądanie pochodzi z oczekiwanego źródła. Pominięcie tej weryfikacji to luka bezpieczeństwa.
Obsługa awarii
Co jeśli webhook trafia do Twojego systemu, który w tym momencie jest niedostępny? Większość systemów powtarza nieudane dostarczenie kilka razy z rosnącymi odstępami. Twój endpoint powinien zwracać kod 200 natychmiast po poprawnym odebraniu, nawet jeśli przetwarzanie jeszcze trwa. Długi czas odpowiedzi może być traktowany jako błąd i powodować niepotrzebne powtórzenia.
Webhooks w PrestaShop i WooCommerce
Oba systemy obsługują webhooks dla kluczowych zdarzeń: nowe zamówienie, zmiana statusu, nowy klient. W WooCommerce webhooks konfiguruje się z poziomu panelu. W PrestaShop wymaga to modułu lub własnej implementacji przez hooki akcji.