O cerere Verification of Payee returnează de obicei un rezultat de potrivire în timp real, suficient de repede pentru a fi afișat înainte ca plătitorul să autorizeze un transfer. Dar VoP este un apel de rețea către o altă bancă, iar rețelele nu sunt perfect fiabile. Un PSP care răspunde poate fi lent, o conexiune poate cădea sau o cerere poate ajunge într-o coadă. O integrare de nivel de producție are nevoie de un plan pentru răspunsul care sosește cu câteva secunde — sau câteva minute — mai târziu.
De ce un apel VoP poate deveni asincron
Schema definește o fereastră de răspuns strânsă, dar traficul real produce totuși cazuri limită pe care trebuie să le gestionezi elegant, nu ca pe niște erori dure:
- PSP-ul care răspunde este temporar supraîncărcat și răspunde exact după expirarea timeout-ului tău sincron.
- O defecțiune temporară de rețea declanșează o reîncercare care se finalizează după ce cererea inițială s-a întors deja.
- Trimiți multe verificări în lot (de exemplu o rulare de plăți) și colectezi rezultatele pe măsură ce sosesc.
Cum proiectezi fluxul cu webhookuri
Cel mai curat model este să dai fiecărei verificări un identificator stabil, să returnezi o stare de așteptare când fereastra sincronă expiră și să lași un webhook să livreze rezultatul final.
- 1 Trimite verificarea și stochează ID-ul cererii ei, asociindu-l plății pe care urmează să o faci.
- 2 Dacă nu sosește niciun răspuns în bugetul tău sincron, arată plătitorului o stare de așteptare, nu o eroare.
- 3 Primește rezultatul final — potrivire, aproape potrivire, fără potrivire sau indisponibil — pe endpointul tău de webhook.
- 4 Asociază payloadul webhookului cu ID-ul cererii stocat și actualizează decizia de plată.
Securizat și idempotent din start
Verifică semnătura fiecărui webhook înainte de a te baza pe el și fă handler-ul idempotent: același rezultat poate fi livrat de mai multe ori. Leagă procesarea de ID-ul cererii, astfel încât o livrare duplicată să nu acționeze niciodată de două ori asupra unei plăți.
RoxPay returnează un rezultat sincron ori de câte ori poate și trece pe un webhook semnat atunci când un PSP care răspunde este lent, astfel încât finalizarea plății rămâne receptivă, iar înregistrările tale rămân complete.