Guide complet pour implémenter un paywall basé sur les licences dans votre application SaaS avec l’API Chariow et les outils d’IA
Ce guide vous montre comment utiliser l’API Licence de Chariow pour implémenter un paywall dans votre application SaaS. Que vous construisiez avec Lovable, Cursor, Bolt ou tout autre assistant de codage IA, ce guide fournit tout ce dont vous avez besoin, y compris des prompts IA prêts à l’emploi.
Ce guide suppose que vous avez une boutique Chariow avec un produit de type Licence créé. Si vous n’en avez pas encore, créez votre produit licence d’abord.
Un paywall par licence restreint l’accès à votre application SaaS (ou à des fonctionnalités spécifiques) jusqu’à ce que l’utilisateur fournisse une clé de licence valide. C’est idéal pour :
Applications de bureau : Applications Electron, logiciels natifs, outils CLI
Applications web : Plateformes SaaS, tableaux de bord admin, outils premium
Applications mobiles : Applications iOS/Android avec fonctionnalités premium
Accès API : Contrôle d’accès API basé sur la validité de la licence
Prompt 1 : Paywall de licence basique (React + Next.js)
Copier
Créer un système de paywall par licence pour mon application Next.js avec ces exigences :1. Créer une route API à /api/validate-license qui : - Accepte les requêtes POST avec { licenseKey: string } - Appelle l'API Chariow : GET https://api.chariow.com/v1/licenses/{licenseKey} - Utilise l'authentification Bearer token avec la variable d'environnement CHARIOW_API_KEY - Retourne { valid: true/false, error?: string, license?: object } - Vérifie les champs is_active et is_expired de la réponse2. Créer un composant LicenseGate qui : - Affiche un formulaire de saisie de clé de licence quand non validé - Stocke la clé de licence valide dans localStorage - Vérifie localStorage au montage pour auto-valider les utilisateurs récurrents - Affiche les enfants uniquement quand la licence est valide - Affiche un état de chargement pendant la validation - Affiche les messages d'erreur pour les licences invalides3. Styliser le formulaire de licence avec Tailwind CSS : - Centrer le formulaire sur la page - Utiliser un style propre et professionnel - Inclure un lien pour acheter une licenceVariable d'environnement nécessaire : CHARIOW_API_KEY (clé API boutique)
Prompt 2 : Paywall de licence avec activation d’appareil
Copier
Étendre le système de paywall par licence avec l'activation d'appareil :1. Générer un identifiant d'appareil unique : - Pour les apps web : combiner user agent + résolution d'écran + fuseau horaire - Hasher le résultat pour créer un ID d'appareil cohérent - Stocker l'ID d'appareil dans localStorage2. Créer le point d'accès /api/activate-license : - Accepte POST avec { licenseKey, deviceId } - Appelle l'API Chariow : POST https://api.chariow.com/v1/licenses/{key}/activate - Corps : { device_identifier: deviceId } - Gérer l'erreur "Limite d'activation atteinte" gracieusement3. Mettre à jour le composant LicenseGate : - Après validation de la licence, appeler le point d'activation - Afficher le nombre d'activations restantes à l'utilisateur - Gérer les erreurs d'activation avec des messages conviviaux4. Ajouter une section "Gérer les appareils" affichant : - Nombre d'activations actuel - Nombre maximum d'activations autorisées - Option pour désactiver l'appareil actuel
Implémenter une licence à fonctionnalités contrôlées où différents niveaux de licence débloquent différentes fonctionnalités :1. Créer un hook useLicense qui : - Valide la licence au chargement de l'app - Retourne { isValid, tier, features, expiresAt } - Le niveau est déterminé par le nom du produit ou les métadonnées de Chariow2. Créer un composant FeatureGate : - Accepte la prop requiredTier (ex : "pro", "enterprise") - Affiche une invite de mise à niveau si le niveau de l'utilisateur est insuffisant - Affiche les enfants si l'exigence de niveau est satisfaite3. Exemple d'utilisation : <FeatureGate requiredTier="pro"> <AdvancedAnalytics /> </FeatureGate>4. Créer une modale de mise à niveau qui : - Affiche le niveau actuel vs requis - Liens vers le checkout Chariow pour le produit de mise à niveau - Inclut une comparaison des fonctionnalités
Prompt 4 : Validation de licence compatible hors ligne
Copier
Ajouter le support hors ligne au système de licence :1. Mettre en cache le résultat de validation de licence localement : - Stocker l'horodatage de validation - Stocker la date d'expiration de la licence - Stocker l'objet licence complet2. Implémenter la logique de validation : - Si en ligne : valider avec l'API Chariow - Si hors ligne : vérifier la validation en cache (valide pendant 7 jours) - Si le cache a expiré : afficher un avertissement hors ligne mais permettre un accès limité3. Ajouter une re-validation périodique : - Re-valider toutes les 24 heures quand en ligne - Mettre à jour le cache lors d'une validation réussie - Gérer les erreurs réseau gracieusement4. Afficher un indicateur de statut de licence : - Vert : validé en ligne aujourd'hui - Jaune : utilisation de la validation en cache - Rouge : cache expiré, connexion nécessaire
Prompt 5 : Implémentation complète pour application Electron
Copier
Créer un système de licence pour une application de bureau Electron :1. Gestionnaire de licence dans le processus principal : - Stocker la licence dans electron-store (chiffré) - Valider au lancement de l'app - Re-valider toutes les 24 heures - Envoyer le statut de validation au renderer via IPC2. Script preload : - Exposer des APIs de licence sécurisées au renderer - licenseAPI.validate(key) - licenseAPI.getStatus() - licenseAPI.activate()3. UI de licence dans le renderer : - Écran de saisie de licence au premier lancement - Statut de licence dans les paramètres - Option "Gérer les activations"4. Identifiant d'appareil : - Utiliser le package machine-id pour un ID d'appareil cohérent - Passer au point d'activation Chariow5. Gestion hors ligne : - Mettre en cache la validation pendant 7 jours - Afficher l'indicateur "Mode hors ligne" - Bloquer l'app après expiration du cache
Intégrer la validation de licence avec l'authentification Supabase :1. Créer une fonction edge Supabase à /validate-license : - Vérifier que l'utilisateur est authentifié - Stocker les licences validées dans une table 'user_licenses' - Lier la licence à l'ID utilisateur2. Schéma de base de données : CREATE TABLE user_licenses ( id UUID PRIMARY KEY, user_id UUID REFERENCES auth.users, license_key TEXT NOT NULL, validated_at TIMESTAMP, expires_at TIMESTAMP, status TEXT );3. Hook React useUserLicense : - Vérifier si l'utilisateur actuel a une licence valide - Synchroniser le statut de licence à la connexion - Gérer les scénarios multi-appareils4. Row Level Security : - Les utilisateurs ne peuvent voir que leurs propres licences - Activer les abonnements realtime pour les mises à jour de statut