Konfigurácia webhookov v PSB: topiky, zabezpečenie HMAC SHA256 a IP whitelisting.
Webhooky sú primárny spôsob prijímania notifikácií v reálnom čase z PSB. Pri každej relevantnej udalosti, prijatej faktúre, zmene stavu, potvrdení doručenia, PSB odošle HTTP POST request na Váš endpoint s podrobnosťami o udalosti.
V PSB zaregistrujete webhook ("hook") s URL a topikom. PSB následne odosiela všetky udalosti daného topiku na Vašu URL. Každá udalosť obsahuje príslušné dáta ako JSON payload.
Žiadne používateľské rozhranie k dispozícii: v súčasnosti nie je možné konfigurovať hook prostredníctvom používateľského rozhrania platformy. Hooky sa nastavujú cez API alebo prostredníctvom podpory eConnect. Rozhranie samoobsluhy pre hooky je v pláne (plánované na Q4 2026) a bude súčasťou Control (Platform 2.0): používatelia budú môcť hooky sami vytvárať, upravovať a mazať. Dovtedy nie je plánovaný žiadny podrobný návod na manuálnu konfiguráciu hookov cez API.
Zaregistrujte hook cez API:
POST /api/v1/hook
Najdôležitejšie konfiguračné parametre:
InvoiceReceived)Poznámka: vyhnite sa rýchlemu mazaniu a opätovnému vytváraniu hookov pre rovnaké partyId a topik. Kvôli race conditions pri spracovaní úloh to môže dočasne viesť k tomu, že neexistuje žiadny aktívny hook, a udalosti tak nebudú doručené. Po zmazaní hooku chvíľu počkajte, kým vytvoríte nový, alebo namiesto zmazania a opätovného vytvorenia použite aktualizáciu.
Chcete pridať ďalší topik (napr. InvoiceReceived) k existujúcemu hooku? Aktualizujte existujúcu konfiguráciu webhooku prostredníctvom štandardného API /hook, aby požadovaný topik bol zahrnutý v poli topics:
{
"topics": ["InvoiceReceived"]
}
Aktualizujte existujúci hook namiesto jeho zmazania a opätovného vytvorenia. Zmazanie a opätovné vytvorenie spôsobuje race condition, pri ktorej môžu byť udalosti dočasne nedoručené (pozri upozornenie vyššie).
Nie je samoobslužné pre netechnických zákazníkov. Pridanie topiku k existujúcemu hooku je technická úloha: osoba, ktorá ju vykonáva, musí vedieť, kam má webhook smerovať (URL endpointu), a rozumieť tomu, čo je webhook. Netechnický zákazník to spravidla nemôže urobiť samostatne. Zapojte niekoho s technickými znalosťami (IT zákazníka alebo podpora eConnect).
InvoiceReceivedInvoiceSentInvoiceSentErrorInvoiceSentRetryInvoiceResponseReceivedOrderReceivedPSB zabezpečuje všetky doručenia webhookov pomocou HMAC SHA256 podpisov. Pri každom requeste PSB odosiela hlavičku:
X-EConnect-Signature: sha256={podpis}
Na overenie podpisu:
X-EConnect-Signature.Skontrolujte tiež pole sentOn v payloade. Ak je tento časový údaj starší ako 5 minút, request odmietnite. Tým sa zabráni replay útokom, pri ktorých sa zachytený request neskôr opätovne prehrá.
Okrem HMAC overenia ponúka PSB ďalšie bezpečnostné vrstvy:
104.40.188.59 a 104.47.148.207)Ak máte nakonfigurovaných viacero hookov, PSB určí, ktorý hook sa použije, na základe:
&& vyhráva nad kratším filtrom bez tejto klauzuly. Zabraňuje to duplicitnému doručeniu bez toho, aby sa filtre musely vzájomne vylučovať.Nižšie sú uvedené bežné problémy s webhookmi a ich riešenia.
sha256=sentOn staršie ako 5 minútHookSentError (pozri nižšie); získat zmeškané udalosti cez batch endpointX-EConnect-Delivery (unikátne UUID) na deduplikáciuPSB posiela webhook udalosti (napr. InvoiceReceived pri prijíaní e-faktúry) na konfigurovaný endpoint. Ak tento endpoint nie je dostupný — kvôli timeoutu, chybe SSL alebo chybe DNS ako No such host is known — PSB opakuje s exponenciálnym spätným krokom po dobu 5 dní (timeout 100 sek. na pokus). Každý pokus generuje udalosť HookSentRetry; po 5 dňoch bez odpovede 2xx je vydaný HookSentError ako konečný stav a PSB prestáva opakovať.
Dôsledok: prijatá e-faktúra nebude doručená zákazníkovi, kým je endpoint nedostupný, bez toho aby si to zákazník priamo všimol. Odporúčané kroky:
HookSentError, aby definitlvne zlyhanie doručovania bolo aktlvne signalizované namiesto tichého prechodzenia. Zvážiť aj HookSentRetry pre skoré odhalenie.Vezmite surové JSON telo requestu, vypočítajte HMAC SHA256 hash pomocou secretu, ktorý ste zadali pri vytváraní hooku, a porovnajte ho s hodnotou v hlavičke X-EConnect-Signature (za prefixom sha256=). Ak sa zhodujú, viete, že request pochádza z PSB a nebol počas prenosu upravený.
Overte, či sentOn nie je starší ako 5 minút. Ak je časová značka príliš stará, request odmietnite. Tým zabránite útokom typu replay, pri ktorých sa skôr zachytený request znova odošle neskôr, aj keď je podpis technicky správny.
Implementujte idempotentné spracovanie na Vašej strane, pretože PSB môže v zriedkavých prípadoch doručiť udalosť viackrát. Taktiež rýchlo vráťte HTTP 2xx stavový kód: každá iná odpoveď sa považuje za chybu a spustí opakovanie. Pre náročné spracovanie najprv potvrďte príjem a potom spracujte cez front.
Chcete dokumenty radšej získavať hromadne? Pozrite sa na batch hook.
Pozrite si webhook endpointy