Une requête de Verification of Payee renvoie généralement un résultat en temps réel, assez vite pour l'afficher avant que le payeur n'autorise un virement. Mais la VoP est un appel réseau vers une autre banque, et les réseaux ne sont pas parfaitement fiables. Un PSP répondeur peut être lent, une connexion peut tomber, ou une requête peut atterrir dans une file. Une intégration de niveau production a besoin d'un plan pour la réponse qui arrive quelques secondes — ou quelques minutes — en retard.
Pourquoi un appel VoP peut devenir asynchrone
Le schéma définit une fenêtre de réponse serrée, mais le trafic réel produit tout de même des cas limites que vous devez gérer avec élégance plutôt que de les traiter comme des erreurs dures :
- Le PSP répondeur est temporairement surchargé et répond juste au-delà de votre délai synchrone.
- Une panne réseau transitoire déclenche une relance qui se termine après le retour de votre requête initiale.
- Vous soumettez de nombreuses vérifications en lot (par exemple une remise de paiements) et collectez les résultats au fur et à mesure.
Concevoir le flux webhook
Le modèle le plus propre est de donner à chaque vérification un identifiant stable, de renvoyer un statut « en attente » quand la fenêtre synchrone expire, et de laisser un webhook livrer le résultat final.
- 1 Soumettez la vérification et stockez son ID de requête en regard du paiement que vous êtes sur le point d'effectuer.
- 2 Si aucune réponse n'arrive dans votre budget synchrone, montrez au payeur un état « en attente » plutôt qu'une erreur.
- 3 Recevez le résultat final (correspondance, correspondance partielle, absence de correspondance ou non-disponible) sur votre endpoint webhook.
- 4 Rapprochez la charge utile du webhook de l'ID de requête stocké et mettez à jour la décision de paiement.
Sécurisé et idempotent par défaut
Vérifiez la signature de chaque webhook avant de lui faire confiance, et rendez votre gestionnaire idempotent : le même résultat peut être livré plus d'une fois. Clé votre traitement sur l'ID de requête pour qu'une livraison en double n'agisse jamais deux fois sur un paiement.
RoxPay renvoie un résultat synchrone chaque fois qu'elle le peut et se replie sur un webhook signé lorsqu'un PSP répondeur est lent, pour que votre checkout reste réactif et vos enregistrements complets.