Le WordPress d'aujourd'hui, décodé pour les développeurs

E-commerce

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.

Par WordPress Développement • 16 octobre 2020 • 4 min de lecture • Aucun commentaire
Droit de rétractation et biens numériques : la checklist WooCommerce

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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Partager :

À propos de l'auteur

WordPress Développement

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi