Weryfikacja podpisu webhooka i idempotencja

Weryfikuj 6MM Agent webhooków za pomocą surowego ciała żądania oraz powtórek procesów, timeoutów i powtarzających się zdarzeń bez duplikatów działań biznesowych.

Zobacz jako Markdown

Webhooki powiadamiają backend partnera o asynchronicznych zmianach stanu biznesowego. Ponieważ dostarczenie może być powtarzane, każdy odbiorca musi zweryfikować podpis przed parsowaniem zaufanych danych i musi przetwarzać zdarzenie idempotentnie.

Nagłówki Webhooków

NagłówekOpis
X-Agent-TimestampZnacznik czasu Unixa w sekundy.
X-Agent-NonceOchrona przed powtórkami.
X-Agent-SygnaturaHMAC-SHA256 podpis.
timestamp + nonce + rawBody

Używaj dokładnego surowego ciała żądania otrzymanego przez HTTP podczas rekonstrukcji wartości podpisanej. Parsowanie i ponowne serializowanie JSON pierwsze może zmienić odstępy lub kolejność pola i uzyskać inny podpis.

Przepływ weryfikacji

  1. Przeczytaj nagłówki z znacznikiem czasu, nonce i podpisem.
  2. Zdobyć niezmodyfikowany surowy korpus żądania.
  3. Buduj timestamp + nonce + rawBody.
  4. Oblicz HMAC-SHA256 z partnerem API sekretem.
  5. Porównaj obliczone i otrzymane sygnatury za pomocą porównania w czasie stałym.
  6. Stosuj zatwierdzone kontrole aktualności i ponownego użycia w czasie użycia.
  7. Analizuj i przetwarzaj zdarzenie dopiero po pomyślnym sprawdzeniu.

Gdy dostępny jest oficjalny weryfikator Agent SDK , używaj go zamiast utrzymywać kod niezależnego podpisu.

Idempotencja rzędu

SprawaProwadzenie
Początkowa prośba o przeniesienieStwórz jedną globalnie unikalną agentOrderNo.
HTTP przerwaZapytaj oryginalny agentOrderNo przed utworzeniem nowego.
PROCESSING reakcjaCzekaj na status webhooka lub kolejności zapytania.
Powtarzające się webhookiDeduplikuj według klucza idempotencji i ostatecznego statusu.

Przechowuj wystarczająco dużo informacji, aby rozpoznać powtarzającą się dostawę i bezpiecznie ją odzyskać:

PoleCel
Klucz do wydarzenia lub działalności gospodarczejJednoznacznie identyfikuje powiadomienie lub operację.
Numer zamówienia partneraŁączy zdarzenie z oryginalnym żądaniem.
Hash ładunkuPomaga zidentyfikować sprzeczne powtarzające się ładunki.
Aktualny stan przetwarzaniaRozróżnia otrzymaną, przetwarzaną, sukcesową i nieudaną pracę.
Ostateczny status działalnościZapobiega podwójnemu zastosowaniu akcji terminalnej.
Przetworzony znacznik czasuWspiera politykę dochodzeniową i retencyjną.

Jeśli to możliwe, zatwierdzaj zmianę biznesową i rekord idempotencji w tej samej transakcji. Powtarzające się zdarzenie powinno zwracać już znany wynik, zamiast ponownie stosować saldo, zamówienie lub zmianę użytkownika.

Zasada timeoutu i ponownej próby

Limit HTTP nie dowodzi, że pierwotne żądanie nie powiodło się. Zapytaj operację używając oryginalnego agentOrderNolub poczekaj na jej webhook, zanim zdecydujesz, czy potrzebna jest kolejna akcja. Tworzenie nowego numeru zlecenia biznesowego po każdym przekroczeniu może powodować duplikacje ruchów funduszy.

Lista kontrolna produkcji

  • Weryfikacja podpisu przed JSON parsowania lub przetwarzania biznesowego.
  • Zachowanie surowego ciała niezależnie od przeanalizowanego ładunku.
  • Odrzucanie przestarzałych lub powtarzanych żądań zgodnie z zatwierdzoną polityką integracji.
  • Zapewnienie bezpiecznego przetwarzania zdarzeń dla powtarzających się i niekolejnych dostaw.
  • Rejestruj identyfikatory zdarzeń, numery zamówień partnerów, wyniki przetwarzania oraz czas żądań.
  • Redakcja sekretów i wartości sygnatur z logów i załączników wsparcia.