Vous avez configuré votre boutique WooCommerce. Les produits sont en ligne. Les moyens de paiement sont paramétrés. Tout semble parfait. Puis le premier client essaie de passer à la caisse… et rien ne fonctionne.
Le panier est vide. Le bouton de paiement ne fait rien. La commande reste bloquée sur « En attente de paiement » indéfiniment. Ou pire, le client est débité mais la commande n’est jamais enregistrée.
Si vous gérez une boutique WooCommerce assez longtemps, vous allez rencontrer ces bugs. La bonne nouvelle ? La plupart ont des solutions connues. Cet articleUn contenu dynamique et temporel (ex. : billets de blog) aff... More couvre les échecs de paiement les plus courants, pourquoi ils surviennent, et comment les résoudre, des correctifs rapides aux débogages approfondis pour développeurs.
Le client ajoute des produits au panier. Clique sur « Paiement ». La pageUn contenu statique (ex. : "À propos", "Contact") qui ne fa... More de paiement se charge… avec un panier vide. Le client part. Vous perdez une vente.

Pourquoi cela arrive :
C’est presque toujours un problème de session ou de cache. WooCommerce utilise des sessions PHP (ou parfois des transients WordPress) pour stocker les données du panier. Si quelque chose efface ou bloque cette session entre la pageUn contenu statique (ex. : "À propos", "Contact") qui ne fa... More panier et la pageUn contenu statique (ex. : "À propos", "Contact") qui ne fa... More de paiement, le panier apparaît vide.
Causes courantes :
Comment corriger :
Étape 1 : Exclure les pages WooCommerce du cache
Si vous utilisez une extensionUn logiciel qui ajoute des fonctionnalités spécifiques à ... More de cache (WP Rocket, W3 Total Cache, LiteSpeed Cache, etc.), excluez :
Exemple pour WP Rocket : ajoutez ces URLs à « Ne jamais mettre en cache » :
/checkout/ /cart/ /my-account/
Étape 2 : Vérifiez le cache au niveau de l’hébergement
De nombreux hébergeurs (Kinsta, WP Engine, Cloudways) ont leur propre cache. Ajoutez les mêmes pages WooCommerce à la liste blanche dans les paramètres de cache de votre hébergeur.
Étape 3 : Testez avec le cache désactivé
Désactivez temporairement toutes les extensions de cache et tout CDN. Videz le cache de votre navigateur. Testez à nouveau. Si cela fonctionne, réactivez le cache une couche à la fois.
Étape 4 : Corrigez le contenu mixte
Si votre site charge en HTTPS mais certaines ressources en HTTP, le cookie de session pourrait ne pas persister. Utilisez une extensionUn logiciel qui ajoute des fonctionnalités spécifiques à ... More comme « Really Simple SSL » ou ajoutez à wp-config.php :
$_SERVER['HTTPS'] = 'on';
Étape 5 : Forcer la persistance du panier (solution développeur)
Ajoutez à functions.php comme solution temporaire :
add_action( 'init', 'wc_force_cart_persistence' );
function wc_force_cart_persistence() {
if ( function_exists( 'WC' ) && is_null( WC()->session ) ) {
WC()->session = new WC_Session_Handler();
WC()->session->init();
}
}Le client effectue le paiement. L’argent quitte son compte. Mais dans WooCommerce, la commande reste sur « En attente de paiement » indéfiniment. Pas d’email de confirmation. Pas de commande dans votre tableau de bordL'interface d'administration où les utilisateurs gèrent le... More.
Pourquoi cela arrive :
La passerelle de paiement a envoyé la transaction réussie à WooCommerce, mais WooCommerce n’a jamais reçu ou traité le callback (webhook/IPN). Causes courantes :
http:// mais webhook envoyé à https://)Comment corriger :
Étape 1 : Vérifiez manuellement le journal des transactions de la passerelle
Connectez-vous au tableau de bordL'interface d'administration où les utilisateurs gèrent le... More Stripe, PayPal ou de votre passerelle. Trouvez la transaction. Est-elle marquée « Réussie » ou « En attente » ? Si elle est réussie chez eux mais pas chez vous, le webhook a échoué.
Étape 2 : Vérifiez les URLs des webhooks
Pour Stripe : Dashboard → Développeurs → Webhooks. Assurez-vous que l’URL est https://votresite.com/wc-api/stripe/ (ou similaire pour votre passerelle).
Pour PayPal : L’URL IPN doit être https://votresite.com/wc-api/paypal/.
Étape 3 : Vérifiez les extensions de sécurité
Wordfence, Sucuri et d’autres pare-feux bloquent parfois les IP des webhooks. Ajoutez les adresses IP de la passerelle à la liste blanche. Désactivez temporairement le pare-feu pour tester.
Étape 4 : Finalisez manuellement la commande
Si vous avez confirmé le paiement en dehors de WooCommerce, vous pouvez marquer manuellement la commande comme « Terminée » ou « En traitement » depuis l’écran WooCommerce → Commandes. Envoyez ensuite un email manuellement au client.
Étape 5 : Renvoyez les webhooks échoués (Stripe)
Stripe permet de renvoyer les événements webhook échoués depuis le tableau de bordL'interface d'administration où les utilisateurs gèrent le... More. Cherchez les événements « Échoués » et cliquez sur « Renvoyer ».
Étape 6 : Journalisation des débogages
Ajoutez à wp-config.php pour journaliser toutes les erreurs WooCommerce :
define( 'WC_LOG_DIR', WP_CONTENT_DIR . '/wc-logs/' );
Consultez ensuite wp-content/wc-logs/ pour fatal-errors.log ou les logs spécifiques à la passerelle.
Le client clique sur « Passer la commande » ou sur le bouton PayPal/Stripe. Le bouton tourne, ou rien ne se passe. Pas de message d’erreur. Pas de redirection.
Pourquoi cela arrive :
Conflit JavaScriptUn langage de programmation utilisé pour créer des éléme... More, erreur dans la console du navigateur, ou échec AJAX. Le plus courant : un script d’extensionUn logiciel qui ajoute des fonctionnalités spécifiques à ... More ou du thème casse le JavaScriptUn langage de programmation utilisé pour créer des éléme... More de la caisse.
Comment corriger :
Étape 1 : Ouvrez la console du navigateur
Appuyez sur F12 → onglet Console. Cherchez des erreurs en rouge. Les plus courantes :
Uncaught ReferenceError: jQuery is not definedUncaught TypeError: Cannot read property 'xxx' of undefinedFailed to load resource (scripts bloqués)Étape 2 : Vérifiez les conflits JavaScriptUn langage de programmation utilisé pour créer des éléme... More
Basculez temporairement vers un thème par défaut (Storefront, Twenty Twenty-Four). Testez la caisse. Si cela fonctionne, votre thème est le problème.
Si toujours cassé, désactivez toutes les extensions sauf WooCommerce et votre passerelle de paiement. Testez. Réactivez une par une.
Étape 3 : Corrigez les problèmes courants de jQuery
WooCommerce a besoin de jQuery. Si votre thème appelle jQuery incorrectement, ajoutez :
function ensure_jquery_on_checkout() {
if ( is_checkout() ) {
wp_enqueue_script( 'jquery' );
}
}
add_action( 'wp_enqueue_scripts', 'ensure_jquery_on_checkout' );Étape 4 : Vérifiez les scripts manquants de la passerelle
Certaines passerelles nécessitent des scripts supplémentaires sur la pageUn contenu statique (ex. : "À propos", "Contact") qui ne fa... More de paiement. Assurez-vous que votre thème appelle wp_head() et wp_footer() dans header.php et footer.php.
Étape 5 : Activez le mode débogage de la caisse
Dans WooCommerce → Réglages → Paiements → [Votre passerelle] → Activez « Mode débogage » (journaliser les erreurs). Consultez ensuite wp-content/uploads/wc-logs/.
Le client clique sur « Paiement » et voit un écran blanc ou un spinner de chargement qui ne s’arrête jamais.

Pourquoi cela arrive :
Erreur fatale PHP, épuisement de la mémoire, ou boucle infinie dans un hookUn point dans le code de WordPress où les développeurs peu... More. Souvent causé par une extensionUn logiciel qui ajoute des fonctionnalités spécifiques à ... More qui essaie de modifier incorrectement les champs de paiement.
Comment corriger :
Étape 1 : Activez WP_DEBUG
Ajoutez à wp-config.php :
define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); define( 'WP_DEBUG_DISPLAY', false );
Consultez ensuite wp-content/debug.log pour les erreurs fatales.
Étape 2 : Augmentez la limite mémoire
Ajoutez à wp-config.php :
define( 'WP_MEMORY_LIMIT', '256M' ); define( 'WP_MAX_MEMORY_LIMIT', '512M' );
Étape 3 : Vérifiez les redirections infinies
Parfois, une extensionUn logiciel qui ajoute des fonctionnalités spécifiques à ... More ou un code personnalisé crée une boucle entre le panier et la caisse. Vérifiez votre fichier .htaccess pour des règles de réécriture bizarres. Renommez temporairement .htaccess en .htaccess_old et testez.
Étape 4 : Validez les surcharges des champs de paiement
Si vous avez du code personnalisé modifiant les champs de paiement, commentez-le temporairement. Recherchez les fonctions accrochées à woocommerce_checkout_fields.
Le client clique sur « Ajouter au panier » sur une pageUn contenu statique (ex. : "À propos", "Contact") qui ne fa... More produit. Le bouton tourne, mais le compteur du panier ne se met pas à jour. La pageUn contenu statique (ex. : "À propos", "Contact") qui ne fa... More se recharge. Ou rien ne se passe.
Pourquoi cela arrive :
Conflit AJAX, endpoint wc-ajax manquant, ou cache.
Comment corriger :
Étape 1 : Vérifiez l’URL AJAX
Affichez la source de la pageUn contenu statique (ex. : "À propos", "Contact") qui ne fa... More. Recherchez wc_ajax_url. Elle doit pointer vers /?wc-ajax=%%endpoint%%. Si c’est faux, vérifiez vos permaliens (Réglages → Permaliens → Enregistrer les modifications. Pas besoin de modifier, juste réenregistrer).
Étape 2 : Excluez les endpoints AJAX du cache
Ajoutez wc-ajax à la liste « Ne jamais mettre en cache » de votre extensionUn logiciel qui ajoute des fonctionnalités spécifiques à ... More de cache.
Étape 3 : Vérifiez un fichier .htaccess corrompu
Réesenregistrez les permaliens (Réglages → Permaliens → Enregistrer les modifications). Cela régénère les règles .htaccess.
Étape 4 : Test d’ajout au panier manuel
Visitez https://votresite.com/?add-to-cart=123 (remplacez 123 par un ID produit réel). Si cela fonctionne mais pas l’AJAX, le problème est JavaScriptUn langage de programmation utilisé pour créer des éléme... More.
Le client se connecte, ajoute des produits au panier, se déconnecte, se reconnecte: le panier est vide. Ou le panier se vide aléatoirement entre les chargements de pageUn contenu statique (ex. : "À propos", "Contact") qui ne fa... More.
Pourquoi cela arrive :
Problèmes de gestionnaire de session, corruption de table de base de donnéesL'endroit où tout le contenu, les réglages et les données... More, ou problèmes de cookies.
Comment corriger :
Étape 1 : Réparez les tables de session WooCommerce
Dans phpMyAdmin ou équivalent, exécutez :
REPAIR TABLE wp_woocommerce_sessions; OPTIMIZE TABLE wp_woocommerce_sessions;
Étape 2 : Effacez toutes les sessions (attention: déconnecte tous les clients)
Depuis WP CLI :
wp wc tool run clear_sessions
Ou utilisez une extensionUn logiciel qui ajoute des fonctionnalités spécifiques à ... More comme « WooCommerce Database Cleanup ».
Étape 3 : Vérifiez les paramètres des cookies
Dans WooCommerce → Réglages → Avancé → Pages, assurez-vous que les pages Panier et Paiement sont correctement assignées.
Étape 4 : Forcez la gestion des sessions
Ajoutez à functions.php :
add_action( 'init', 'wc_force_session_start' );
function wc_force_session_start() {
if ( function_exists( 'WC' ) && ! WC()->session->has_session() ) {
WC()->session->set_customer_session_cookie( true );
}
}WooCommerce propose désormais deux expériences de paiement :
[woocommerce_checkout])Lequel casse le moins ?
Actuellement, le paiement par shortcode est plus stable, mais le paiement en bloc rattrape son retard.
Si le paiement en bloc est cassé :
Option 1 : Revenir au paiement par shortcode
[woocommerce_checkout]Option 2 : Corriger les problèmes du paiement en bloc
woocommerce/checkout)Bugs connus du paiement en bloc (en 2026) :
Recommandation : Utilisez le paiement par shortcode pour les boutiques en production jusqu’à ce que le paiement en bloc soit plus mature.
Quand un bug de paiement apparaît, utilisez ces outils avant d’appeler à l’aide :
| Outil | Ce qu’il fait |
|---|---|
| Rapport d’état WooCommerce | WooCommerce → Statut → État du système. Copiez-collez dans les demandes d’assistance. |
| WP_DEBUG_LOG | Capture les erreurs PHP. Essentiel pour les écrans blancs. |
| Console navigateur (F12) | Affiche les erreurs JavaScriptUn langage de programmation utilisé pour créer des éléme... More qui cassent la caisse. |
| Health Check & Troubleshooting | ExtensionUn logiciel qui ajoute des fonctionnalités spécifiques à ... More qui permet de désactiver extensions/thème seulement pour votre session. |
| Logs WooCommerce | WooCommerce → Statut → Logs. Cherchez fatal-errors, stripe, paypal, etc. |
| Site de staging | Clonez votre site en production pour tester les correctifs sans temps d’arrêt. |
Flux de débogage rapide :
WP_DEBUG_LOGdebug.log et les logs WooCommerceLa plupart des bugs de paiement sont évitables. Suivez ces règles :
Règle 1 : Ne mettez jamais en cache les pages panier, paiement ou mon compte
Utilisez les paramètres d’exclusion de votre extensionUn logiciel qui ajoute des fonctionnalités spécifiques à ... More de cache religieusement.
Règle 2 : Gardez tout à jour
WooCommerce cœur, extensions de passerelle de paiement, WordPress, et votre thème. Code ancien = bugs anciens.
Règle 3 : Testez régulièrement les passerelles de paiement
Effectuez une transaction test de 1 € une fois par semaine. Vous détecterez les échecs de webhook tôt.
Règle 4 : Utilisez un site de staging
Ne mettez jamais à jour WooCommerce ou ne modifiez la logique de paiement d’abord sur votre site en production.
Règle 5 : Limitez les personnalisations de la caisse
Chaque champ personnalisé ou snippet JavaScriptUn langage de programmation utilisé pour créer des éléme... More est un point de rupture potentiel. Utilisez des hooks, pas des modifications de fichiers cœur.
Règle 6 : Surveillez les webhooks échoués
Les tableaux de bord Stripe et PayPal montrent les tentatives de webhook échouées. Vérifiez-les chaque semaine.
Règle 7 : Choisissez un hébergement fiable
Un hébergement bon marché avec un cache agressif et des limites PHP basses cassera WooCommerce. Utilisez un hébergement WordPress géré si possible.
Les bugs de paiement WooCommerce sont frustrants, pour vous et pour les clients qui veulent simplement vous donner de l’argent. Mais presque chaque bug a une solution connue. La clé est un débogage systématique : vérifiez d’abord le cache, puis les conflits JavaScriptUn langage de programmation utilisé pour créer des éléme... More, puis les webhooks, puis les problèmes de base de donnéesL'endroit où tout le contenu, les réglages et les données... More.
Quand un client signale un bug de paiement, demandez-lui :
Et rappelez-vous : Avant de toucher à quoi que ce soit sur une boutique en production, faites une sauvegardeUne copie des fichiers et de la base de données de votre si... More. Clonez vers un environnement de staging si possible. Et testez toujours après chaque modification.
Votre caisse est votre pipeline de revenus. Gardez-la propre, testée et surveillée.