CookieDetox
Sanctions & Amendes 2026-09-15

E-commerce & Tunnel d'Achat : Conformité EAA 2026 & Paiement

CD

Par Cellule Investigation CookieDetox

Expertise Juridique & Conformité

🔗
T

L'essentiel à retenir (En bref)

Depuis l'entrée en application de l'European Accessibility Act (Directive UE 2019/882), tout site e-commerce dépassant 10 salariés ou 2 M€ de chiffre d'affaires doit garantir l'accessibilité intégrale de son entonnoir de conversion selon les critères WCAG 2.2 AA et la norme européenne EN 301 549. Du sélecteur de variantes jusqu'à l'iframe de paiement 3D Secure, chaque interaction critique (focus trap, saisie sans redondance, cibles de 24x24px minimum, temporisation) est soumise au contrôle de la DGCCRF sous peine d'amendes administratives atteignant 150 000 €.

1. Périmètre Légal EAA 2026 et Sanctions DGCCRF pour le

L'entrée en vigueur effective des décrets de transposition de la directive européenne 2019/882 (European Accessibility Act) transforme radicalement l'obligation légale des marchands en ligne. Alors que les obligations d'accessibilité numérique étaient jusqu'alors circonscrites au secteur public et aux entreprises réalisant plus de 250 millions d'euros de chiffre d'affaires, le seuil d'exemption de l'EAA est drastiquement abaissé : seules les microentreprises (moins de 10 salariés et moins de 2 millions d'euros de bilan ou de chiffre d'affaires annuel) sont exemptées. Tous les autres acteurs du commerce interentreprises (B2B) et à destination des consommateurs (B2C) commercialisant des biens ou services dans l'Union européenne tombent sous le coup de la norme technique EN 301 549 V3.2.1, qui intègre les critères de succès de la recommandation WCAG 2.2 niveaux A et AA.

En France, l'autorité de contrôle désignée pour le e-commerce est la Direction générale de la concurrence, de la consommation et de la répression des fraudes (DGCCRF), conformément aux dispositions du Code de la consommation. Le non-respect des exigences d'accessibilité expose l'opérateur économique à une amende administrative pouvant atteindre 150 000 € pour une personne morale, assortie d'injonctions de mise en conformité sous astreinte journalière. Au-delà du volet administratif, les associations d'usagers et de défense des personnes en situation de handicap peuvent engager des actions civiles pour discrimination sur le fondement de l'article 225-2 du Code pénal et de l'article L. 1145-1 du Code du travail lorsque l'outil d'achat entrave l'exercice des droits civiques ou professionnels. Pour une analyse approfondie des barèmes et précédents, consultez notre dossier sur les sanctions et amendes EAA 2026 ainsi que notre cadrage sur la directive européenne EAA 2026.

Le tunnel d'achat constitue le segment le plus critique lors d'un audit de conformité : une rupture d'accessibilité sur l'ajout au panier ou sur la sélection du mode de livraison équivaut juridiquement à un refus de vente déguisé par barrière technologique. Les auditeurs de la DGCCRF opèrent désormais des contrôles systématiques par scripts automatisés et parcours manuels au clavier et lecteur d'écran (NVDA, JAWS, VoiceOver), ciblant en priorité l'impossibilité de finaliser la transaction.

2. Architecture Frontend Accessible

La fiche produit et la gestion de panier constituent le premier point de friction technique. La sélection de déclinaisons (taille, coloris, volume) est fréquemment implémentée au moyen d'éléments <div> ou <span> stylisés avec des gestionnaires d'événements onClick, dépourvus de focusabilité native et d'étiquetage accessible. Pour respecter le critère WCAG 1.3.1 (Info and Relationships) et le critère WCAG 4.1.2 (Name, Role, Value), ces composants doivent impérativement s'appuyer sur des structures sémantiques natives telles qu'un groupe de boutons radio stylisés ou un menu déroulant <select> natif enrichi :

<fieldset class="variant-picker">
  <legend class="text-sm font-semibold">Sélectionnez une taille :</legend>
  <div class="flex gap-2">
    <input type="radio" name="taille" id="size-m" value="M" checked class="sr-only peer" />
    <label for="size-m" class="min-w-[44px] min-h-[44px] flex items-center justify-center border p-2 peer-focus-visible:ring-2 peer-focus-visible:ring-blue-600 peer-checked:bg-slate-900 peer-checked:text-white">
      M
    </label>
    <input type="radio" name="taille" id="size-l" value="L" class="sr-only peer" />
    <label for="size-l" class="min-w-[44px] min-h-[44px] flex items-center justify-center border p-2 peer-focus-visible:ring-2 peer-focus-visible:ring-blue-600 peer-checked:bg-slate-900 peer-checked:text-white">
      L
    </label>
  </div>
</fieldset>

Le critère WCAG 2.5.8 (Target Size - Minimum), standardisé dans la version 2.2, impose que chaque élément interactif dispose d'une surface cliquable d'au moins 24x24 pixels CSS, ou d'un espacement compensatoire suffisant. Les sélecteurs d'incrémentation de quantité (icônes "+" et "-") mesurant couramment 16x16px constituent l'une des infractions les plus fréquemment relevées. Leurs boutons doivent être augmentés par padding ou dimensionnement explicite et pourvus d'un attribut aria-label contextualisé (ex: aria-label="Augmenter la quantité pour Casque Audio Pro").

Lors de l'activation du panier latéral dynamique (« cart drawer »), les frameworks modernes pèchent souvent par défaut de gestion du focus. L'ouverture du tiroir impose une triple contrainte technique : déplacer le focus clavier vers le conteneur du panier (cartDrawer.focus()), restreindre la navigation par tabulation à l'intérieur du tiroir (« focus trap »), et neutraliser l'arrière-plan du document principal à l'aide de l'attribut HTML standard inert sur l'élément <main> pour empêcher toute interaction accidentelle par les utilisateurs de lecteurs d'écran.

3. Formulaire de Commande, Autocomplete et Gestion Robuste des

L'étape de validation d'adresse et de choix de transporteur cristallise les exigences relatives à la robustesse des formulaires. Deux critères de succès issus des WCAG 2.2 impactent directement le tunnel : le critère WCAG 1.3.5 (Identify Input Purpose) et le critère WCAG 3.3.7 (Redundant Entry). L'obligation d'autocomplete prescrit l'utilisation explicite des jetons de métadonnées HTML standardisés permettant aux agents utilisateurs et aux technologies d'assistance de préremplir instantanément les coordonnées de l'acheteur sans effort cognitif ou moteur :

<div class="form-group">
  <label for="shipping-street">Adresse postale de livraison</label>
  <input 
    id="shipping-street" 
    name="street-address" 
    type="text" 
    autocomplete="shipping street-address" 
    required 
    aria-required="true"
    aria-describedby="street-error"
    aria-invalid="false" 
  />
  <p id="street-error" class="hidden text-red-600" role="alert">
    Veuillez saisir votre rue et numéro de voie.
  </p>
</div>

Le critère 3.3.7 prohibe formellement de réclamer une seconde fois une information déjà fournie au cours de la même session d'achat. L'adresse de facturation doit systématiquement proposer une case à cocher « Identique à l'adresse de livraison » activée par défaut, ou recycler les données sans forcer l'utilisateur à une nouvelle saisie textuelle. En cas d'erreur de validation (format de code postal erroné, numéro de téléphone invalide), l'API front-end doit dynamiquement passer l'attribut aria-invalid="true" sur le champ en cause et lier le paragraphe d'erreur via aria-describedby (critères 3.3.1 et 3.3.2).

Le tableau ci-dessous synthétise la matrice de conformité technique obligatoire pour chaque jalon critique de l'entonnoir d'achat en regard de la norme EN 301 549 :

Faites défiler ↔
Étape du tunnelErreur fréquente constatéeCritère WCAG 2.2 / EN 301 549Solution technique conforme
Fiche ProduitPastilles de couleur sous forme de <span> non tabulablesWCAG 2.1.1 (Clavier) & 4.1.2 (Nom/Rôle/Valeur)Boutons radio natifs dans un <fieldset> avec aria-label explicite de la teinte.
Panier FlottantLe focus reste piégé sous le rideau d'arrière-plan sans inertWCAG 2.4.3 (Ordre du focus) & EN 301 549 (9.2.4.3)Appliquer inert sur <main> et injecter le focus sur le titre du panier avec focus-trap.
LivraisonChamps d'adresse sans attributs autocompleteWCAG 1.3.5 (Identifier la finalité de la saisie)Intégrer les valeurs standardisées : autocomplete="shipping postal-code".
PaiementCaptcha à reconnaissance visuelle pour valider la commandeWCAG 3.3.8 (Authentification accessible)Authentification sans puzzle cognitif : WebAuthn, passkeys ou OTP par SMS/Email.

Pour auditer l'ensemble des modules tiers pouvant interférer avec ce flux, reportez-vous également à notre étude sur l'audit d'accessibilité des CMP et bannières.

4. Paiement, Iframes Sécurisées (Stripe/Adyen), 3D Secure et

L'intégration des prestataires de services de paiement (PSP) via des composants en iframes sécurisées (Stripe Elements, Adyen Drop-in, PayPal SDK) représente une responsabilité conjointe sous l'EAA. Le marchand ne peut s'exonérer de sa responsabilité légale en invoquant la titularité d'un tiers si l'iframe hébergée empêche la complétion de la commande. Les conteneurs <iframe> injectés doivent impérativement comporter un attribut title explicite (ex: title="Zone sécurisée de saisie de la carte bancaire") afin de satisfaire le critère WCAG 4.1.2.

Sur le plan de la sécurité et de la directive DSP2 (authentification forte), l'étape du protocole 3-D Secure 2 doit respecter le nouveau critère WCAG 2.2 AA : 3.3.8 (Accessible Authentication). Il est formellement interdit d'imposer un test de mémoire cognitive, un calcul mathématique ou la transcription de caractères déformés (CAPTCHA visuel) pour confirmer le paiement, sans proposer une alternative universelle (copier-coller de code OTP autorisé, authentification biométrique par WebAuthn ou validation intégrée dans l'application bancaire sur smartphone).

De plus, le critère WCAG 2.2.1 (Timing Adjustable) impose que si un délai d'expiration de session s'applique au panier ou à la réservation d'un stock éphémère, l'utilisateur doit être averti par une boîte de dialogue accessible au moins 20 secondes avant l'expiration et disposer d'une commande au clavier lui permettant de prolonger ce délai d'au moins 10 fois la durée d'origine.

Pour valider la conformité de bout en bout de l'entonnoir d'achat sans aucune intervention de la souris, nous mettons à disposition le script Playwright ci-dessous, intégrant le moteur d'analyse @axe-core/playwright configuré pour auditer les règles WCAG 2.2 AA :

import { test, expect } from '@playwright/test';
import AxeBuilder from '@axe-core/playwright';

test.describe('Audit EAA 2026 - Tunnel d\'achat e-commerce', () => {
  test('Navigation complète au clavier et zéro violation WCAG 2.2 AA', async ({ page }) => {
    // 1. Accès à la fiche produit
    await page.goto('https://mon-site-ecommerce.test/products/sample-item');
    
    // Audit accessibilité initial fiche produit
    let accessibilityScanResults = await new AxeBuilder({ page })
      .withTags(['wcag2a', 'wcag2aa', 'wcag22aa'])
      .analyze();
    expect(accessibilityScanResults.violations).toEqual([]);

    // 2. Sélection de variante et ajout au panier exclusivement au clavier
    await page.keyboard.press('Tab');
    await page.locator('input[name="taille"][value="L"]').focus();
    await page.keyboard.press('Space');

    // Clic accessible sur le bouton d'ajout
    const addToCartBtn = page.locator('button#add-to-cart');
    await expect(addToCartBtn).toBeVisible();
    await addToCartBtn.focus();
    await page.keyboard.press('Enter');

    // 3. Vérification du panier Drawer et du focus trap
    const drawer = page.locator('#cart-drawer');
    await expect(drawer).toBeVisible();
    
    // Vérifier que le contenu principal est neutralisé avec inert
    const mainElement = page.locator('main');
    await expect(mainElement).toHaveAttribute('inert', '');

    // 4. Passage en caisse (Checkout)
    await page.locator('a#checkout-button').focus();
    await page.keyboard.press('Enter');
    await page.waitForURL('**/checkout/shipping');

    // 5. Audit de la page d'adresse de livraison
    const shippingScan = await new AxeBuilder({ page })
      .withTags(['wcag2a', 'wcag2aa', 'wcag22aa'])
      .analyze();
    expect(shippingScan.violations).toEqual([]);

    // Vérification de la présence d'attributs autocomplete standardisés
    const addressInput = page.locator('input[name="street-address"]');
    await expect(addressInput).toHaveAttribute('autocomplete', /shipping/);
  });
});
§

Sources Officielles & Jurisprudence de Référence

Textes réglementaires primaires, délibérations officielles de la CNIL et arrêts de la CJUE cités dans cette analyse.

  • Journal officiel de l'Union européenne Directive (UE) 2019/882 relative aux exigences en matière d'accessibilité applicables aux produits et services
    Consulter le texte officiel
  • ETSI / CEN / CENELEC EN 301 549 V3.2.1 - Accessibility requirements for ICT products and services
    Consulter le texte officiel
  • World Wide Web Consortium (W3C) Web Content Accessibility Guidelines (WCAG) 2.2
    Consulter le texte officiel
  • République Française (Légifrance) Loi n° 2023-171 portant diverses dispositions d'adaptation au droit de l'Union européenne (DDADUE)
    Consulter le texte officiel
Mis à jour le 2026-09-15
Partager cet article:

Questions Fréquentes : E-commerce & Tunnel d'Achat

Quels sont les seuils d'exemption précis de l'European Accessibility Act pour un site marchand ?

La directive UE 2019/882 exempte uniquement les microentreprises, définies au sens du droit européen comme les structures employant moins de 10 personnes et affichant un chiffre d'affaires annuel ou un total de bilan n'excédant pas 2 millions d'euros. Dès qu'un marchand franchit l'un de ces deux seuils, la totalité de son service de commerce en ligne doit se conformer à la norme EN 301 549 / WCAG 2.2 AA.

Le commerçant est-il responsable si le module Stripe ou Adyen présente des non-conformités d'accessibilité ?

Oui. En droit européen de la consommation, le prestataire de services de commerce électronique porte la responsabilité juridique globale de la chaîne de contractualisation face au consommateur final. Le choix d'un fournisseur tiers (PSP) non conforme n'exonère pas le marchand des sanctions prévues par la DGCCRF. Les commerçants doivent exiger contractuellement des PSP un VPAT (Voluntary Product Accessibility Template) attestant de la conformité aux WCAG 2.2 AA.

En quoi consiste la nouvelle exigence WCAG 2.2 relative à l'authentification accessible (critère 3.3.8) ?

Le critère de succès 3.3.8 prohibe les mécanismes d'authentification reposant sur des tests d'aptitude cognitive, tels que la mémorisation d'un mot de passe complexe sans possibilité de copier-coller, la résolution d'énigmes ou la transcription de captchas visuels distordus. Pour le 3D Secure ou la connexion au compte client, le site doit autoriser les gestionnaires de mots de passe, l'authentification WebAuthn/Passkey, ou l'envoi d'un lien magique/code à usage unique.

Pourquoi l'utilisation de l'attribut HTML 'inert' est-elle recommandée sur les paniers latéraux ?

L'attribut global standard 'inert' permet d'indiquer au navigateur d'ignorer complètement les événements d'entrée utilisateur et de masquer l'arborescence DOM correspondante aux technologies d'assistance. Lors de l'ouverture d'un panier drawer modal, appliquer 'inert' sur l'élément
garantit que le lecteur d'écran ou la tabulation ne s'échappera pas vers les éléments en arrière-plan, résolvant nativement les problématiques de focus trap.