Contexte
Une boutique WooCommerce en Suisse romande recevait des ajouts au panier, mais le processus de commande devenait instable: panier qui se vide, page checkout qui « tourne » sans fin, ou paiement qui échoue sans message clair. Le problème était surtout visible sur mobile et sur certaines sessions, ce qui indiquait un mélange de cache, cookies et requêtes AJAX.
Symptômes observés
- Panier qui se vide après actualisation ou lors du passage au checkout.
- Checkout bloqué: bouton « Commander » qui ne termine pas.
- Erreurs réseau sur
/wp-admin/admin-ajax.phpou/?wc-ajax=checkout. - Comportement variable selon navigateur, consentement cookies et CDN.
Objectifs du dépannage
- Stabiliser panier et checkout sur desktop et mobile.
- Corriger les erreurs AJAX et éviter la mise en cache de pages dynamiques.
- Valider le flux de paiement (Stripe, PayPal, TWINT/PostFinance/Datatrans/Payrexx selon contexte).
- Maintenir performance et conformité (cookies/Consent Mode v2) sans casser l’achat.
Diagnostic (approche)
- Analyse réseau navigateur: erreurs 400/403/500, CORS, timeouts.
- Contrôle cache plugin et CDN: mise en cache de
/cart/et/checkout/. - Vérification cookies WooCommerce (
woocommerce_items_in_cart,wp_woocommerce_session_*). - Contrôle HTTPS (mixed content) et redirections (www / non-www).
- Test avec thème par défaut et plugins désactivés (Health Check) pour isoler un conflit.
Cause identifiée
Un réglage de cache/CDN mettait en cache des pages et endpoints WooCommerce dynamiques, et une règle de sécurité bloquait parfois les requêtes AJAX. En parallèle, une configuration cookies liée au bandeau de consentement perturbait certaines sessions (cookies essentiels mal catégorisés ou purgés).
Correctifs appliqués
1) Exclusions cache WooCommerce
- Bypass cache pour
/cart/,/checkout/,/my-account/. - Bypass cache pour
/?wc-ajax=*et/wp-admin/admin-ajax.php. - Purge cache complète après application des règles.
2) Ajustements cookies et consentement
- Marquage des cookies WooCommerce comme essentiels dans le bandeau (Cookiebot/Axeptio selon contexte).
- Vérification que le consentement ne bloque pas les scripts checkout nécessaires.
- Contrôle du comportement en navigation privée et après refus/acceptation.
3) Sécurité et endpoints
- Assouplissement ciblé WAF pour les endpoints WooCommerce légitimes.
- Protection anti-bots conservée, mais sans bloquer les clients.
4) Validation paiement
- Test d’une commande complète (sandbox si possible), puis test en condition réelle avec montant minimal.
- Vérification webhooks (Stripe/PayPal) et retour d’état de commande.
Exemple technique : liste d’exclusions cache WooCommerce (repère)
À appliquer côté plugin cache et côté CDN.
Pages:
- /cart/
- /checkout/
- /my-account/
Endpoints:
- /wp-admin/admin-ajax.php
- /?wc-ajax=*
- /wp-json/wc/*
Exemple technique : cookies WooCommerce à conserver (essentiels)
Selon la config, les noms peuvent varier. L’idée: ne pas purger les cookies de session.
woocommerce_cart_hash
woocommerce_items_in_cart
wp_woocommerce_session_*
Exemple technique : vérifier les endpoints en erreur (console réseau)
Les erreurs 403 pointent souvent une règle WAF trop stricte.
1) Ouvrir DevTools > Network
2) Filtrer sur: ajax, wc-ajax, admin-ajax
3) Repérer: code HTTP + payload + timing
Résultats
- Panier stable, checkout fonctionnel sur mobile et desktop.
- Requêtes AJAX sans erreur, finalisation de commande fiable.
- Conformité cookies maintenue, sans casser les cookies essentiels.
- Flux paiement validé et webhooks opérationnels.
Prévention mise en place
- Règles cache/CDN WooCommerce documentées et conservées.
- Test checkout après chaque mise à jour cache, sécurité ou bandeau cookies.
- Monitoring des erreurs 4xx/5xx sur endpoints checkout (si disponible).
- Revue périodique des webhooks et du statut des paiements.
Points clés à retenir
- Un checkout qui bloque est souvent un conflit cache + cookies + sécurité.
- WooCommerce a besoin de pages non cachées et de cookies de session stables.
- Tester avec plusieurs scénarios de consentement évite des pertes de commandes.