Przejdź do treści

Webhooki wychodzące

Zamiast odpytywać Kangura co minutę, każ mu powiadamiać Twój system o tym, co się wydarzyło.

Jak to podłączyć

Ustawienia → Webhooki → Dodaj → podaj adres HTTPS i zaznacz zdarzenia. Każda subskrypcja ma własny sekret — służy do sprawdzenia, że żądanie naprawdę pochodzi od Kangura.

Weryfikacja podpisu

Każde żądanie niesie nagłówek X-Kangur-Signature — to HMAC-SHA256 treści żądania, policzony sekretem subskrypcji, zapisany szesnastkowo.

import hashlib, hmac, json

def podpis_sie_zgadza(tresc: bytes, naglowek: str, sekret: str) -> bool:
    oczekiwany = hmac.new(sekret.encode(), tresc, hashlib.sha256).hexdigest()
    return hmac.compare_digest(oczekiwany, naglowek)   # NIE zwykłe ==

Porównuj podpisy funkcją odporną na pomiar czasu

Zwykłe == przerywa porównanie na pierwszej różnicy, co pozwala odgadywać podpis po czasie odpowiedzi. Użyj hmac.compare_digest (Python), crypto.timingSafeEqual (Node) albo odpowiednika w swoim języku.

Zdarzenia

Te same nazwy, których używają automatyzacje. Pełną, zawsze aktualną listę zwraca GET /api/webhooks/events — poniżej ta sama lista w komplecie:

  • Zamówienia — order.created, order.updated, order.status_changed, order.category_assigned, order.category_released, order.category_ack_required, order.category_acknowledged, order.paid, order.shipped, order.fulfilled
  • Kompletacja i pakowanie — order.picking_started, order.picked, order.picking_cancelled, order.packing_started, order.packed, order.packing_cancelled
  • Produkty i magazyn — product.created, product.updated, product.stock_changed, product.price_changed, product.cost_changed, stock.low_alert
  • Przesyłki — shipment.created, shipment.status_changed
  • Przesyłki przychodzące — inbound.received (przyjęcie dostawy, zwrotu lub przesunięcia na magazyn; PZ powstaje jako szkic)
  • Zwroty — return.created, return.status_changed, return.refunded

Zanim uznasz, że działa

POST /api/webhooks/{id}/test wysyła próbne żądanie pod Twój adres. GET /api/webhooks/{id}/deliveries pokazuje historię doręczeń wraz z kodem odpowiedzi Twojego serwera — to pierwsze miejsce, w które warto zajrzeć, gdy „nic nie przychodzi”.

Po Twojej stronie

  • Odpowiadaj szybko (2xx) i przetwarzaj w tle. Długa odpowiedź to ryzyko przeterminowania.
  • Licz się z powtórzeniem. Sieć bywa zawodna; to samo zdarzenie może dojść dwa razy. Zapisuj identyfikator zdarzenia i pomijaj duplikaty.
  • Nie zakładaj kolejności. Zdarzenia mogą dotrzeć w innej kolejności, niż zaszły.

Webhooki przychodzące

Odwrotny kierunek — powiadomienia od platform sprzedażowych do Kangura — konfigurujesz przy każdej integracji z osobna. Adres i sekret znajdziesz w Ustawienia → Integracje po wybraniu konkretnego połączenia.