Skip to main content
Webhook to sposób, w jaki Paymove aktywnie powiadamia Twój system o zakończonej płatności - bez odpytywania API. Konfiguracja składa się z dwóch kroków: rejestrujesz webhook, a następnie przypisujesz go do produktu (sklepu). Od tego momentu każda opłacona transakcja w tym sklepie trafia na wskazany przez Ciebie endpoint. Wszystkie żądania autoryzujesz kluczem API przekazywanym w nagłówku X-API-KEY.
Przykłady używają środowiska sandbox: https://gateway-api.sandbox.paymove.io. Potrzebujesz partnerId oraz productId sklepu utworzonego w tutorialu Bramka płatnicza: podstawowa integracja.

Krok 1: Rejestracja webhooka

W requestTemplate definiujesz body żądania, które Paymove wyśle na Twój endpoint. Możesz w nim użyć zmiennych {{externalId}} (identyfikator zamówienia z Twojego systemu) i {{price}} (kwota) - Paymove podstawi je przy wysyłce.
Odpowiedź (200):
Pole id z odpowiedzi to identyfikator webhooka (webhookId), którego użyjesz w kroku 2.
Odpowiedź zawiera signingSecret - sekret do weryfikacji podpisu żądań przychodzących od Paymove. Zapisz go bezpiecznie po stronie swojego systemu i nie udostępniaj publicznie.

Krok 2: Przypisanie webhooka do sklepu

Webhook zacznie działać dopiero po powiązaniu z produktem. W URL podmień webhookId (z kroku 1) oraz productId swojego sklepu.
Odpowiedź (200): obiekt webhooka (taki sam jak w kroku 1), potwierdzający powiązanie. Od tego momentu każda opłacona płatność w tym sklepie wywołuje Twój endpoint.

Weryfikacja konfiguracji

Listę produktów powiązanych z webhookiem sprawdzisz wywołaniem:
Odpowiedź (200): tablica produktów powiązanych z webhookiem:

Jak wygląda powiadomienie o płatności?

Po zakończonej płatności Paymove wysyła na Twój endpoint żądanie zgodne z requestTemplate i skonfigurowanymi headers. Dla szablonu z kroku 1 body wygląda tak:
orderId to externalId, który przekazałeś tworząc płatność - dzięki temu jednoznacznie dopasujesz powiadomienie do zamówienia w swoim systemie.
Powyższy kształt to wynik requestTemplate. Gdyby szablon był pusty, Paymove wysłałby pełny obiekt płatności - zestaw pól opisuje Konfiguracja.
Zanim zaufasz treści powiadomienia, zweryfikuj nagłówek X-Paymove-Signature. Bez tego dowolna osoba znająca Twój endpoint może wysłać spreparowane powiadomienie i uzyskać realizację zamówienia bez płatności. Gotowy kod: Weryfikacja podpisu webhooka.
Twój system powinien odpowiedzieć kodem dokładnie równym expectedCode (zwyczajowo 200 i body { "status": "ok" }, choć treść odpowiedzi nie jest sprawdzana) - dopiero wtedy Paymove uznaje doręczenie za udane. Odpowiedź 201 czy 204 przy expectedCode: 200 liczy się jako niepowodzenie i nie jest ponawiana. Doręczenie zakończone kodem 4xx, 5xx lub błędem sieci zostanie ponowione tyle razy, ile wskazuje retries - domyślnie 0, czyli ani razu.
Realizuj zamówienie po otrzymaniu webhooka, a nie po powrocie klienta na returnUrl - klient może zamknąć przeglądarkę zanim wróci do Twojego sklepu, a samo przekierowanie można wywołać bez opłacenia płatności.

Co dalej?

Bramka płatnicza: podstawowa integracja

Pełny przepływ płatności: produkt, płatność, przekierowanie klienta.

Webhooki

Szczegóły konfiguracji powiadomień o płatnościach.