Deweloper 7 min czytania

Webhooki i wyniki asynchroniczne Verification of Payee

Solidna integracja Verification of Payee uwzględnia również żądanie, które nie wraca w ciągu 300 milisekund. Pokazujemy, jak wykorzystać webhooki i callbacki do obsługi wyników asynchronicznych bez zamrażania procesu płatności.

Autor Tomaas Vento Starrantino · Recenzja Donato Leone

Webhooki i wyniki asynchroniczne Verification of Payee

Najważniejsze informacje

  • Traktuj VoP jako zazwyczaj synchroniczną, ale czasami asynchroniczną: zaprojektuj stan oczekujący od pierwszego dnia.
  • Wykorzystaj webhook do odebrania końcowego wyniku dopasowania, gdy odpowiadający PSP odpowiada z opóźnieniem.
  • Zawsze weryfikuj podpisy webhooków i uczyń obsługę zdarzeń idempotentną, aby przetrwać ponowne próby.

Żądanie Verification of Payee zwykle zwraca wynik dopasowania w czasie rzeczywistym, wystarczająco szybko, aby pokazać go przed autoryzacją przelewu przez płatnika. Ale VoP to wywołanie sieciowe do innego banku, a sieci nie są idealnie niezawodne. Odpowiadający PSP może być wolny, połączenie może się przerwać, a żądanie może trafić do kolejki. Integracja klasy produkcyjnej wymaga planu na odpowiedź, która przychodzi kilka sekund - lub kilka minut - później.

Czemu wywołanie VoP może stać się asynchroniczne

Schemat definiuje wąskie okno odpowiedzi, ale realny ruch nadal generuje przypadki brzegowe, które musisz obsługiwać z gracją, a nie traktować jako poważne błędy:

  • Odpowiadający PSP jest tymczasowo przeciążony i odpowiada tuż poza Twoim synchronicznym limitem czasu.
  • Chwilowa awaria sieci uruchamia ponowną próbę, która kończy się po tym, jak Twoje pierwotne żądanie już wróciło.
  • Wysyłasz wiele kontroli w partii (na przykład przebieg płatności) i zbierasz wyniki w miarę ich napływania.

Projektowanie przepływu webhooka

Najczystszym wzorcem jest przypisanie każdej kontroli stabilnego identyfikatora, zwrócenie statusu oczekującego, gdy synchroniczne okno wygasa, i pozwolenie, aby webhook dostarczył końcowy wynik.

  1. 1 Wyślij weryfikację i zapisz jej identyfikator żądania przy płatności, którą zamierzasz wykonać.
  2. 2 Jeśli odpowiedź nie nadejdzie w ramach synchronicznego budżetu czasowego, pokaż płatnikowi stan oczekujący, a nie błąd.
  3. 3 Odbierz końcowy wynik (zgodność, częściowa zgodność, brak zgodności lub niedostępny) na swoim endpoincie webhooka.
  4. 4 Dopasuj treść webhooka do zapisanego identyfikatora żądania i zaktualizuj decyzję dotyczącą płatności.

Bezpieczne i idempotentne domyślnie

Weryfikuj podpis każdego webhooka, zanim mu zaufasz, i uczyń swoją obsługę idempotentną: ten sam wynik może zostać dostarczony więcej niż raz. Indeksuj przetwarzanie według identyfikatora żądania, aby duplikat dostawy nigdy nie zadziałał dwukrotnie na tej samej płatności.

RoxPay zwraca wynik synchroniczny zawsze, gdy to możliwe, i przechodzi na podpisany webhook, gdy odpowiadający PSP jest wolny, dzięki czemu Twój proces płatności pozostaje responsywny, a Twoje zapisy - kompletne.

FAQ

Najczęściej zadawane pytania

Nie jest to bezwzględnie konieczne, ale jest zdecydowanie zalecane. Bez ścieżki asynchronicznej wolny odpowiadający PSP zmusza Cię do zablokowania płatnika lub odrzucenia prawidłowego wyniku. Webhook pozwala przejrzyście przechwycić późne odpowiedzi.

Uczyń swoją obsługę webhooka idempotentną. Indeksuj przetwarzanie według identyfikatora żądania weryfikacji i ignoruj treść, którą już zastosowałeś, ponieważ ten sam wynik może zostać dostarczony więcej niż raz.

Pokaż neutralny stan oczekujący, a nie błąd, i unikaj automatycznego potwierdzania przelewu wysokiego ryzyka, dopóki wynik nie nadejdzie lub nie zostanie osiągnięty limit czasu wynikający z Twojej polityki.

Zbuduj odporną integrację VoP

Porozmawiaj z RoxPay o wynikach synchronicznych z zapasowym webhookiem dla wolnych odpowiadających PSP.