fix: race condition OAuth2 et rejet 400 caractères spéciaux [RUN-3788]#16
Open
rockynox wants to merge 1 commit into
Open
fix: race condition OAuth2 et rejet 400 caractères spéciaux [RUN-3788]#16rockynox wants to merge 1 commit into
rockynox wants to merge 1 commit into
Conversation
… spéciaux - process_payment() ne refresh le token que si absent ou expiré, évitant la rotation concurrente du refresh token sous charge (boucle 401) - les erreurs API (wp_error, non-200, réponse sans redirectUrl) retournent désormais un échec WooCommerce propre au lieu de continuer l'exécution - corrige la regex validate_fields() : '![...]' → '[^...]' pour bloquer correctement les points, @, _ et autres caractères rejetés par l'API
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Contexte
Deux bugs de production identifiés sur les commandes #1456, #1353 et #1449 (ticket RUN-3788).
Bug 1 — Boucle 401 / race condition token OAuth2
process_payment()appelaithelloasso_refresh_token_asso()systématiquement à chaque paiement, même si le token courant était encore valide (30 min de durée de vie). Sous charge concurrente, deux requêtes lisaient le même refresh token en base, déclenchaient deux rotations en cascade, et le token utilisé par la première requête se retrouvait révoqué → 401 en boucle.Fix : le refresh n'est déclenché que si le token est absent ou si
helloasso_token_expires_in_assoindique qu'il est expiré. Les paiements simultanés partagent le même access token valide (l'API autorise jusqu'à 20 en simultané).Bug 2 — Rejet 400 / noms avec points ou caractères spéciaux
La regex de
validate_fields()était cassée :Les points (
.),@,_passaient la validation locale et étaient rejetés par l'API avecArgumentInvalid.Corrections annexes
wp_error, les réponses non-200 et les réponses sansredirectUrlretournent maintenant unresult: failurepropre à WooCommerce, au lieu de continuer l'exécution et crasher sur->redirectUrl.Fichiers modifiés
inc/Gateway/WC_HelloAsso_Gateway.php