# Vendre des licences logicielles sous WooCommerce : clés et anti-partage

> Retour d'expérience sur la livraison automatique de clés de licence et les garde-fous mis en place pour limiter le partage entre utilisateurs.

- Auteur : Clément Hadrot
- Publié le : 2023-10-16
- Mis à jour le : 2023-10-16
- Catégorie : E-commerce
- URL : https://wpmoderne.dev.wordpress-developpement.fr/ecommerce/vendre-licences-logicielles-woocommerce-cles-anti-partage/

## L’essentiel

- Une clé unique générée à la commande
- Un quota d'activations suivi côté serveur
- Une révocation possible sans support manuel

« FacturePro », un éditeur de logiciel de facturation pour indépendants, nous a confié la refonte de sa boutique après trois ans de vente via une page de paiement Stripe isolée, sans lien avec le site vitrine. L'objectif tenait en une phrase : passer sur WooCommerce pour unifier vitrine, facturation et gestion des clients, sans perdre le contrôle sur la diffusion des clés de licence, un point sensible pour un logiciel installé en local sur le poste du client.

Le brief initial parlait de « protection anti-piratage », une expression trompeuse : aucune protection technique ne rend une clé impossible à copier. Ce qui compte réellement, c'est la capacité à détecter un partage et à réagir vite, sans bloquer les clients honnêtes qui changent d'ordinateur. C'est cette philosophie qui a guidé toutes les décisions techniques du projet.

## Un produit virtuel, pas un téléchargement

Première décision : le produit WooCommerce est déclaré en *virtuel*, sans fichier téléchargeable associé. FacturePro distribue son exécutable via son propre serveur de mise à jour, protégé par la clé elle-même. WooCommerce ne sert donc qu'à la vente et à la génération de la clé, ce qui simplifie beaucoup la configuration du produit : pas d'expiration de lien de téléchargement à gérer, pas de quota de re-téléchargement.

La génération de la clé est déclenchée sur le hook `woocommerce_order_status_completed`, après confirmation du paiement. Nous avons choisi un format lisible par un humain au téléphone avec le support, du type `FCPR-4X7K-9QRT-2MZP`, en excluant les caractères ambigus (0/O, 1/I/l) :

```
add_action( 'woocommerce_order_status_completed', 'fcpr_generer_cle_licence' );

function fcpr_generer_cle_licence( $order_id ) {
    $order = wc_get_order( $order_id );
    foreach ( $order->get_items() as $item ) {
        $product_id = $item->get_product_id();
        if ( ! fcpr_est_produit_licence( $product_id ) ) {
            continue;
        }
        $cle = fcpr_generer_segments_aleatoires( 4, 4 );
        update_post_meta( $order_id, '_fcpr_cle_licence', $cle );
        // Enregistrement dans la table dédiée avec quota d'activations
        fcpr_enregistrer_cle( $cle, $order->get_customer_id(), 3 );
    }
}
```

## Le quota d'activations, cœur du dispositif

Plutôt que de bloquer la clé après une seule installation, nous avons opté pour un quota de trois activations simultanées, un chiffre choisi avec le client après avoir observé ses tickets de support sur l'ancien système : la majorité des utilisateurs légitimes possèdent un poste fixe, un portable et parfois une machine de secours. Chaque activation appelle un petit point d'entrée REST côté serveur FacturePro, qui vérifie le quota avant de valider.

> L'essentiel à retenir : Une clé unique générée à la commande ; Un quota d'activations suivi côté serveur ; Une révocation possible sans support manuel

Ce compteur d'activations vit dans une table personnalisée, pas dans les métadonnées de commande WooCommerce : il évolue après la vente, potentiellement des centaines de fois sur la durée de vie de la licence, ce qui n'a rien à voir avec le cycle de vie d'une commande. Utiliser `update_post_meta` pour ce genre de compteur à forte fréquence de mise à jour aurait fini par saturer la table `wp_postmeta` et ralentir toutes les requêtes qui en dépendent.

## Détecter le partage sans punir le client

Un quota dépassé ne coupe jamais le logiciel immédiatement. La quatrième tentative d'activation renvoie un message invitant l'utilisateur à désactiver un poste depuis son espace client, avec un lien direct. Cette étape a divisé par deux les tickets de support liés aux licences dans les trois mois suivant la mise en production, simplement parce que le client peut résoudre seul un cas de changement d'ordinateur qui, avant, nécessitait un e-mail au support.

Pour les cas de partage manifeste — une clé activée depuis des dizaines d'adresses IP différentes en quelques jours — un tableau de bord d'administration liste les clés suspectes, construit à partir d'une requête simple sur la table de journalisation des activations, avec un bouton de révocation immédiate.

## L'espace client, vitrine de la confiance

Chaque client dispose, dans son compte WooCommerce, d'un onglet personnalisé ajouté via `woocommerce_account_menu_items`, listant ses clés actives et le nombre d'activations restantes. Cette transparence a un effet secondaire positif : elle rassure les acheteurs hésitants, qui voient noir sur blanc qu'ils ne sont pas engagés sur une seule machine à vie.

- Ajout d'un endpoint de compte via `add_rewrite_endpoint` et `woocommerce_account_licences_endpoint`
- Affichage du quota restant sous forme de jauge simple
- Bouton de désactivation à distance d'un poste

> Un système anti-partage qui ne laisse aucune porte de sortie au client honnête finit toujours par générer plus de support qu'il n'en économise. Mieux vaut un quota généreux et visible qu'une restriction stricte et opaque.

## Résultats après un an de production

Un an après la bascule, FacturePro a constaté une baisse mesurable du partage de clés au sein d'une même entreprise : les licences vendues en petit nombre par une entité qui en distribuait davantage en interne sont redevenues cohérentes avec le nombre de commandes. Le support n'a pas explosé, contrairement à la crainte initiale du client, grâce au message pédagogique affiché en cas de quota dépassé.

Le point qui a le plus surpris l'équipe FacturePro : la fonctionnalité de désactivation à distance, pensée au départ comme un garde-fou technique, est devenue un argument commercial mis en avant sur la page produit, sous la formule « changez de poste sans perdre votre licence ».

## En résumé

Vendre des licences logicielles sous WooCommerce ne demande pas d'extension propriétaire complexe : un produit virtuel, une table de suivi des activations et un quota raisonnable suffisent à couvrir l'essentiel des cas réels. Le vrai travail ne consiste pas à empêcher techniquement la copie d'une clé, mais à concevoir un parcours où signaler un abus est plus simple que le tolérer, et où le client légitime ne se sent jamais suspecté par défaut.
