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 :
- Mettez le site en maintenance (
.htaccessou plugin Maintenance — pas via admin si possible) - Ouvrez un onglet navigation privée → testez le tunnel complet (produit → panier → commande → paiement → confirmation)
- Notez : étape exacte où ça casse, message d'erreur exact, URL à ce moment
- 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) :
- Limite mémoire PHP :
memory_limittrop bas (WooCommerce + plugins = 256 Mo min, 512 Mo recommandé) - Erreur PHP fatale : plugin/thème incompatible PHP version
- Fichier corrompu : mise à jour interrompue, transfert FTP raté
Diagnostic :
wp-config.php: ajoutezdefine('WP_DEBUG', true); define('WP_DEBUG_LOG', true); define('WP_DEBUG_DISPLAY', false);- Regardez
wp-content/debug.log: erreur exacte, fichier, ligne error_logserveur (cPanel / Plesk / SSHtail -f /var/log/apache2/error.log)
Réparation type :
- Augmenter
memory_limit(.user.iniouphp.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 :
- Cookies / Session :
session_start()conflit, domaine cookie mal configuré (www vs non-www), HTTPS/HTTP混用 - Cache agressif : Varnish, Cloudflare, plugin cache qui met en cache le panier (AJAX
wc-ajax=add_to_cartmis en cache) - 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_cartpré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 :
- WooCommerce > Statut > Journaux > sélectionner passerelle > dernières entrées
- Console navigateur (F12) > Network > filtrer
checkout/payment/stripe/paypal: requête, réponse, erreur JS - Logs serveur :
grep -i "stripe\|paypal\|paybox" /var/log/apache2/access.log - 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) ouPAYMENT.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 :
- Permaliens cassés : Réglages > Permaliens > "Enregistrer les modifications" (régénère
.htaccess) - 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]) ? - Conflit plugin SEO / Redirection : Rank Math, Yoast, Redirection, Redirection 301 qui intercepte
/commande/ - HTACCESS corrompu : règles personnalisées qui cassent
index.phprouting
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 :
- Conflit jQuery : thème/plugin charge jQuery v1, WooCommerce attend v3+
- Select2 / Chosen : double chargement, version incompatible
- CSS :
display:nonesur.woocommerce-checkout,#place_ordermasqué - Blocage CSP / CSP-header : scripts inline bloqués
Diagnostic :
- Console navigateur : erreurs rouge (JS), avertissements jaune (CSS)
- Sources :
wc-checkout.js,wc-cart-fragments.jschargé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-inlinepour 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.
