Un checkout qui casse, c'est des ventes perdues à la minute. Pas de diagnostic "au feeling". Il faut une méthode reproductible. Voici celle qu'on utilise depuis 2017 sur 100+ boutiques.
**WooCommerce** est une extension e-commerce pour WordPress qui transforme un site en boutique en ligne complète.**WooCommerce** est une extension e-commerce pour WordPress qui transforme un site en boutique en ligne complète.
Checkout WooCommerce cassé est un sujet central pour les entreprises qui veulent performer en ligne. Cet article détaille les points clés, les pièges à éviter et les bonnes pratiques à appliquer.
Premières minutes : isolez, testez, notez
Ne faites PAS :
- Désactiver tous les plugins d'un coup (vous perdez le contexte)
- Changer de thème (vous masquez le problème)
- Mettre à jour WordPress/WooCommerce/plugins (vous ajoutez des variables)
Faites :
1. Mettez le site en maintenance (.htaccess ou plugin Maintenance — pas via admin si possible)
2. Ouvrez un onglet navigation privée → testez le tunnel complet (produit → panier → commande → paiement → confirmation)
3. Notez : étape exacte où ça casse, message d'erreur exact, URL à ce moment
3. Vérifiez : Outils > État du système > Journaux (WooCommerce > Statut > Journaux)
Si le problème est apparu juste après une mise à jour, voyez les erreurs WooCommerce après une mise à jour.
Diagnostic : méthode par élimination
Étape 1 : Erreur 500 / Page blanche / Écran blanc
Causes probables (ordre) :
1. Limite mémoire PHP : memory_limit trop bas (WooCommerce + plugins = 256 Mo min, 512 Mo recommandé)
2. Erreur PHP fatale : plugin/thème incompatible PHP version
3. Fichier corrompu : mise à jour interrompue, transfert FTP raté
Diagnostic :
- wp-config.php : ajoutez define('WP_DEBUG', true); define('WP_DEBUG_LOG', true); define('WP_DEBUG_DISPLAY', false);
- Regardez wp-content/debug.log : erreur exacte, fichier, ligne
- error_log serveur (cPanel / Plesk / SSH tail -f /var/log/apache2/error.log)
Réparation type :
- Augmenter memory_limit (.user.ini ou php.ini : memory_limit = 512M)
- Corriger l'erreur PHP (souvent : fonction dépréciée PHP 8.x, classe manquante)
- Si fichier corrompu : réinstaller le plugin/thème concerné depuis source officielle
Étape 2 : Panier vide / Produit non ajouté / Session perdue
Symptômes : "Ajouter au panier" ne fait rien, panier reste vide, compteur à 0.
Causes probables :
1. Cookies / Session : session_start() conflit, domaine cookie mal configuré (www vs non-www), HTTPS/HTTP混用
2. Cache agressif : Varnish, Cloudflare, plugin cache qui met en cache le panier (AJAX wc-ajax=add_to_cart mis en cache)
3. Conflit JS : erreur JavaScript qui bloque l'AJAX add_to_cart
Diagnostic :
- Outils dev > Network > filtrer wc-ajax=add_to_cart : statut 200 ? réponse JSON valide ?
- Application > Cookies : woocommerce_cart_hash, woocommerce_items_in_cart présents ? HttpOnly, Secure, SameSite=Lax ?
- Vider cache serveur (Varnish/Redis), CDN (Cloudflare Purge Everything), plugin cache
- Tester en navigation privée / autre navigateur / autre appareil
Réparation type :
- wp-config.php : define('WP_CACHE', false); temporairement pour tester
- Cloudflare : Page Rule "Bypass Cache on Cookie" pour woocommerce_*
- Plugin cache : exclure /panier/, /commande/, /mon-compte/, wc-ajax=*
- wp-config.php : define('COOKIE_DOMAIN', '.votresite.com'); (avec point devant) si sous-domaines
Étape 3 : Paiement qui échoue / Redirection en boucle / Erreur passerelle
Symptômes : "Paiement refusé", "Erreur lors du traitement", retour au panier, page blanche après clic "Payer".
Causes probables (par passerelle) :
| Passerelle | Causes fréquentes |
|---|---|
| Stripe | Clés API test/prod mélangées, webhook non configuré/échoué, version API obsolète, 3D Secure non géré, montant 0 ou négatif |
| PayPal | Email marchand non confirmé, devise non supportée, IPN/PDT mal configuré, sandbox/prod mélangé |
| Paybox / Systempay / CM-CIC | Clé HMAC/SHA invalide, URL retour/annulation/erreur inaccessibles (HTTPS requis), certificat expiré |
| Klarna / Alma / Oney | Clés API test/prod, pays non supporté, montant hors limites, adresse facturation invalide |
Diagnostic commun :
1. WooCommerce > Statut > Journaux > sélectionner passerelle > dernières entrées
2. Console navigateur (F12) > Network > filtrer checkout / payment / stripe / paypal : requête, réponse, erreur JS
3. Logs serveur : grep -i "stripe\|paypal\|paybox" /var/log/apache2/access.log
4. Mode test passerelle : commande test 1 €, regarder réponse complète (JSON, redirect URL, erreur)
Réparation type :
- Vérifier clés API : prod sur prod, test sur staging (jamais mélanger)
- Webhooks : URL accessible en HTTPS, répond 200 en < 3s, traite événement payment_intent.succeeded / checkout.session.completed (Stripe) ou PAYMENT.SALE.COMPLETED (PayPal)
- Devises : WooCommerce > Réglages > Général > Devise = celle du compte passerelle
- SSL : certificat valide, pas de contenu mixte (DevTools > Security), HSTS activé
- Champs obligatoires : adresse facturation complète (certaines passerelles rejettent si champ manquant)
Étape 4 : Redirection en boucle / Page commande inaccessible
Symptômes : /commande/ redirige vers /panier/, ou /paiement/ boucle, ou 404 sur /commande/ID/.
Causes :
1. Permaliens cassés : Réglages > Permaliens > "Enregistrer les modifications" (régénère .htaccess)
2. Pages WooCommerce manquantes : Pages > Panier, Commande, Paiement, Mon compte existent ? Sont-elles publiées ? Ont-elles le bon shortcode ([woocommerce_cart], [woocommerce_checkout], [woocommerce_my_account]) ?
3. Conflit plugin SEO / Redirection : Rank Math, Yoast, Redirection, Redirection 301 qui intercepte /commande/
3. HTACCESS corrompu : règles personnalisées qui cassent index.php routing
Diagnostic :
- Réglages > Permaliens > "Structure personnalisée" > "Enregistrer" (sans changer)
- Pages > vérifier 4 pages WooCommerce : statut "Publié", shortcode présent
- Désactiver plugins SEO/Redirection temporairement
- .htaccess : restaurer version standard WP + WooCommerce
Étape 5 : Erreurs JavaScript / Styles cassés sur checkout
Symptômes : Champs paiement non affichés, bouton "Passer la commande" inactif, calendrier date non fonctionnel, select2 non initialisé.
Causes :
1. Conflit jQuery : thème/plugin charge jQuery v1, WooCommerce attend v3+
2. Select2 / Chosen : double chargement, version incompatible
3. CSS : display:none sur .woocommerce-checkout, #place_order masqué
4. Blocage CSP / CSP-header : scripts inline bloqués
Diagnostic :
- Console navigateur : erreurs rouge (JS), avertissements jaune (CSS)
- Sources : wc-checkout.js, wc-cart-fragments.js chargés ? Ordre : jQuery → select2 → wc-checkout
- Thème : functions.php > wp_enqueue_script('jquery') ? wp_deregister_script('jquery') ?
Réparation :
- Thème : ne pas dérouter jQuery, utiliser version WP (wp_enqueue_script('jquery'))
- Plugins : désactiver ceux qui chargent select2/chosen propres
- CSP : autoriser unsafe-inline pour scripts WooCommerce (ou mieux : déplacer inline vers fichier)
Checklist réparation complète (ordre)
| # | Action | Validation |
|---|---|---|
| 1 | Maintenance mode activé | Site inaccessible public |
| 2 | Debug WP activé | debug.log écrit |
| 3 | Logs serveur consultés | Erreur identifiée OU pas d'erreur serveur |
| 4 | Plugins désactivés un par un (sauf WooCommerce) | Test checkout après chaque |
| 5 | Thème basculé sur Storefront (thème officiel WC) | Test checkout |
| 6 | Permaliens régénérés | Pages WC accessibles |
| 7 | Cache vidé (serveur, CDN, plugin, navigateur) | Pas de version cachée |
| 8 | Commande test 1 € (mode test passerelle) | Commande créée, statut "En attente" → "Traitement" |
| 9 | Webhook passerelle reçu | Logs WC > Journaux > OK |
| 10 | Email commande reçu | Client + admin |
| 11 | Maintenance désactivé | Site public |
Outils de diagnostic recommandés
| Outil | Usage |
|---|---|
| Query Monitor (plugin) | Requêtes SQL, hooks, erreurs PHP, scripts, requêtes HTTP |
| WP Debugging (plugin) | Active debug.log, barre admin |
| Health Check & Troubleshooting (plugin) | Mode dépannage sans affecter visiteurs |
| WooCommerce > Statut > Outils | Vider transients, régénérer données, nettoyer sessions |
| GTmetrix / PageSpeed | Performance checkout (LCP, CLS, TBT) |
| SSL Labs | Configuration SSL/TLS complète |
Quand faire appel à un pro
- Erreur 500 persistante après désactivation plugins + thème Storefront
- Paiement qui échoue alors que logs passerelle = OK (problème callback/webhook)
- Redirection en boucle après régénération permaliens + thème Storefront
- Perte de commandes / commandes en double / statuts incohérents
- Vous n'avez pas accès SSH / logs serveur / debug.log
Notre intervention : diagnostic sous 2 h, réparation jour même, test tunnel complet mobile + desktop, monitoring 48 h. Urgence WooCommerce — 06 02 55 17 36.
Votre tunnel de commande est down ? Chaque minute = ventes perdues. Diagnostic sous 2 h, réparation jour même, test bout en bout. Urgence WooCommerce.
Pour éviter que ça se reproduise, notre maintenance WooCommerce teste les paiements chaque semaine.
Pour aller plus loin : documentation officielle WordPress · dev blog WordPress Core · documentation WooCommerce · releases WooCommerce
Pour approfondir : marché numérique unique européen.
| Plateforme | Maintenance requise | Coût annuel type |
|---|---|---|
| Shopify | Abonnement + apps | 360-3 600 € |
| WooCommerce | Hébergement + extensions | 200-2 000 € |
| PrestaShop | Hébergement + modules + MAJ | 500-3 000 € |
Pour approfondir : règlement européen sur l'intelligence artificielle.
