Webhooki
Co się stało, bez pytania.
KRONENWERK wywołuje Twój adres, gdy w księgach zajdzie subskrybowane zdarzenie. Każda dostawa jest podpisana i ponawiana aż do przyjęcia.
| Zdarzenie | Kiedy jest wysyłane |
|---|---|
| invoice.issued | Faktura została wystawiona: numer jest zużyty, dokument zarchiwizowany i niezmienny. |
| invoice.paid | Faktura została w pełni rozliczona — przez płatność, niezależnie od sposobu jej zapisania. |
| invoice.cancelled | Faktura została anulowana: istnieje dokument korygujący, który w pełni ją znosi. Nic nie jest usuwane. |
| purchase.recorded | Zarejestrowano fakturę zakupu lub wydatek, z dostawcą, datą i kwotami. |
| payment.recorded | Zarejestrowano płatność, z kierunkiem, kwotą, dniem i dokumentem, który rozlicza. |
| bank.transaction.imported | Zaimportowano transakcję bankową; czeka na dopasowanie. |
| kronenwerk.test | Dostawa testowa uruchamiana przez Ciebie, by sprawdzić własną weryfikację. |
Weryfikacja, w całości.
Kolejność ma znaczenie: najpierw znacznik czasu, potem skrót. Odtworzona stara dostawa ma nienaganny skrót i zdradza ją tylko wiek. Porównuj w stałym czasie, na surowych bajtach.
# KRONENWERK-Signature: t=1775462400,v1=9f86d0…
t, v1 = parse(header) # t=<unix seconds>, v1=<hex hmac>
if abs(now() - t) > 300: reject() # replay window, checked first
expected = hmac_sha256(key=endpoint_secret, msg=f"{t}.{raw_body}").hexdigest()
if not constant_time_equals(expected, v1): reject()
accept() # then dedupe on Idempotency-Key
Licz się z duplikatami.
Każda dostawa niesie nagłówek idempotentności z identyfikatorem zdarzenia. Odpowiedź, która do nas nie dotrze, wywoła kolejną próbę z tym samym identyfikatorem — zapamiętaj go, a drugie wejście nic u Ciebie nie zmieni.
Ponowienia
Sześć prób, a potem trafia to do dziennika.
Jeśli twój odbiorca nie odpowie powodzeniem, KRONENWERK ponawia próbę: po trzydziestu sekundach, potem za każdym razem dwa razy dłużej, do sześciu prób. Potem dostawa liczy się jako nieudana i stoi w dzienniku z czasem, statusem i fragmentem odpowiedzi, skąd możesz wysłać ją ręcznie. Nic nie jest ponawiane w nieskończoność.