# Droit de rétractation et biens numériques : la checklist WooCommerce

> Vendre un e-book ou une licence en ligne suppose de gérer l'exception au délai de rétractation de 14 jours. Voici les cases à cocher côté code.

- Auteur : WordPress Développement
- Publié le : 2020-10-16
- Mis à jour le : 2020-10-16
- Catégorie : E-commerce
- URL : https://www.wpmoderne.fr/ecommerce/droit-retractation-14-jours-biens-numeriques-woocommerce/

## L’essentiel

- Distinguer contenu numérique et service numérique
- Ajouter la case à cocher de renoncement explicite
- Conserver la preuve d'accord à chaque commande

Un client peut-il se faire rembourser un e-book téléchargé la veille au prétexte qu'il a changé d'avis ? En droit français comme dans la directive européenne relative aux droits des consommateurs, la réponse dépend d'une case à cocher précise, pas d'une mention vague en bas de page.

Le droit de rétractation de 14 jours s'applique par défaut à toute vente à distance, y compris numérique. Il existe une exception légale pour le contenu numérique non fourni sur support matériel, mais elle n'est valable que si deux conditions techniques sont réunies au moment de la commande : le consentement exprès du consommateur à l'exécution immédiate, et sa renonciation expresse au droit de rétractation. Sans ces deux éléments correctement enregistrés, l'exception ne tient pas.

## Distinguer contenu numérique et service numérique

La distinction compte : un e-book ou une licence logicielle téléchargeable relève du contenu numérique, régi par l'article L221-28 13° du Code de la consommation en droit français. Un accès à une plateforme SaaS relève davantage du service numérique, avec des règles de computation du délai légèrement différentes. Sur une boutique WooCommerce vendant des produits numériques via une extension comme WooCommerce Product Vendors ou un système de téléchargement natif, il faut traiter ces deux catégories séparément si elles coexistent dans le même catalogue.

## Ce qu'il faut coder avant la mise en ligne

- Une case à cocher, non pré-cochée, associée à un texte explicite de renonciation au droit de rétractation, positionnée juste avant le bouton de validation de commande
- Un blocage de soumission du formulaire de commande tant que la case n'est pas cochée pour les produits numériques concernés
- Un enregistrement horodaté de cet accord dans les métadonnées de la commande, consultable en cas de litige
- Un texte de renonciation distinct des conditions générales de vente, car une case cochant globalement les CGV ne vaut pas renonciation expresse selon la jurisprudence constante sur ce point
- Une vérification que le téléchargement n'est débloqué qu'après validation de cette case, pas avant

> L'essentiel à retenir : Distinguer contenu numérique et service numérique ; Ajouter la case à cocher de renoncement explicite ; Conserver la preuve d'accord à chaque commande

## Implémenter la case côté WooCommerce

Le hook `woocommerce_review_order_before_submit` est le point d'accroche classique pour insérer un champ juste avant le bouton de commande :

```
add_action('woocommerce_review_order_before_submit', function () {
    if (!panier_contient_produit_numerique()) {
        return;
    }
    echo '<p class="form-row">'
        . '<label><input type="checkbox" name="renonciation_retractation" /> '
        . 'Je demande l\'exécution immédiate et je renonce expressément '
        . 'à mon droit de rétractation.</label></p>';
});

add_action('woocommerce_checkout_process', function () {
    if (panier_contient_produit_numerique()
        && empty($_POST['renonciation_retractation'])) {
        wc_add_notice(
            'Merci de confirmer votre renonciation au droit de rétractation.',
            'error'
        );
    }
});
```

La fonction `panier_contient_produit_numerique()` reste à écrire selon la structure du catalogue, par exemple en testant une catégorie de produit ou un champ personnalisé marquant les produits téléchargeables.

## Conserver la preuve en cas de litige

L'accord doit être conservé, pas seulement collecté. Le hook `woocommerce_checkout_update_order_meta` permet d'attacher l'information à la commande avec un horodatage exact, exploitable des mois plus tard si un client conteste un refus de remboursement :

```
add_action('woocommerce_checkout_update_order_meta', function ($order_id) {
    if (!empty($_POST['renonciation_retractation'])) {
        update_post_meta(
            $order_id,
            '_renonciation_retractation_horodatage',
            current_time('mysql')
        );
    }
});
```

## En résumé

L'exception au droit de rétractation sur les biens numériques n'est pas automatique : elle se gagne case par case, au sens propre. Une case à cocher explicite, un blocage de commande tant qu'elle n'est pas validée, et un enregistrement horodaté de l'accord constituent le socle minimal pour qu'une boutique WooCommerce vendant du contenu numérique tienne la route en cas de contrôle ou de litige client.
