Le blog

Date : 10 février 2026
Catégorie : E-commerce
Checkout WooCommerce cassé : diagnostic et réparation par étape

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.

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
  4. Vérifiez : Outils > État du système > Journaux (WooCommerce > Statut > Journaux)

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/
  4. 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.