Connectez votre site Larapen à l’API Envato Marketplace. Vérifiez les codes d’achat des clients, gérez les acheteurs et transformez chaque achat vérifié en clé de licence de l’add-on Licences, qui contrôle l’accès au helpdesk, au forum et à la base de connaissances selon les produits possédés.
Vérification d’Achat
Vérifiez les codes d’achat Envato via l’API officielle. Correspondance automatique de l’identité de l’acheteur.
Connexion OAuth
Les acheteurs lient leur compte Envato via OAuth2. Les achats sont synchronisés automatiquement à l’aide des tokens acheteur.
Contrôle d’Accès
Les achats vérifiés deviennent des clés de licence : l’add-on Licences s’en sert pour restreindre les départements du helpdesk, les catégories du forum et les collections KB.
Gestion des Articles
Importez vos articles Envato, suivez les ventes et liez chaque article au(x) produit(s) de licence qu’il vend.
Cas d’Utilisation
Auteur de Plugin CodeCanyon
Vous vendez un plugin WordPress premium ou un package Laravel sur CodeCanyon. Vous gérez un site de support sur Larapen avec un helpdesk.
- Importez vos articles CodeCanyon dans Larapen.
- Liez chaque article à son produit de licence (fenêtre Produits de licence liés), puis liez ce produit de licence à un département du helpdesk (ex. “Support Plugin”).
- Activez l’option Licences “Exiger une licence active pour ouvrir un ticket” (paramètres HelpDesk) : seuls les clients détenant une clé de licence pour le produit peuvent soumettre des tickets à ce département.
- Les clients connectent leur compte Envato via OAuth et leurs achats sont synchronisés automatiquement.
Auteur ThemeForest avec Forum Communautaire
Vous vendez plusieurs thèmes et souhaitez un forum communautaire restreint par produit.
- Créez une catégorie de forum pour chaque thème.
- Liez chaque article Envato à son produit de licence, et chaque produit de licence à sa catégorie de forum.
- Activez l’option Licences du forum (
licenses_forum_require_purchase, paramètres Forum) : les acheteurs ne peuvent publier que dans les catégories des produits qu’ils possèdent.
Base de Connaissances avec Contenu Premium
Vous avez une base de connaissances avec de la documentation spécifique aux produits qui ne devrait être accessible qu’aux acheteurs.
- Liez les articles Envato aux produits de licence, et les produits de licence aux collections KB.
- Activez l’option Licences “Restreindre la base de connaissances par licence” (paramètres HelpDesk) : les articles de ces collections sont réservés aux acheteurs.
Prérequis
- Larapen CMS v1.0.0 ou ultérieur
- PHP 8.3+
- MySQL 8.0+
- Un token API personnel Envato (voir Créer un Token Envato)
- L’add-on Licences (dépendance requise ; version 1.0.13 ou ultérieure pour Envato 1.0.6+)
- Optionnel : l’add-on HelpDesk et/ou Forum, pour le contrôle d’accès (une fonctionnalité des Licences)
licenses_entity_links) et ne s’applique
que lorsque les add-ons helpdesk et/ou forum sont actifs.
Installation
Étape 1 : Téléverser l’add-on
Dans le panneau d’administration, allez dans Admin → Extensions → Add-ons et cliquez sur le bouton Télécharger un add-on. Sélectionnez le fichier ZIP de l’add-on : le système le décompresse automatiquement et l’add-on apparaît dans la liste des add-ons installés.
Étape 2 : Activer l’add-on
Repérez Intégration Envato Market dans la liste et cliquez sur Activer. Ses migrations, ses seeders (le cas échéant) et ses permissions sont mis en place automatiquement.
Étape 3 : Configurer
Naviguez vers Admin → Envato → Paramètres et saisissez votre token API Envato et votre nom d’utilisateur auteur, puis utilisez le bouton Tester la connexion pour vérifier. Voir Configuration.
Étape 4 : Configurer OAuth (Optionnel)
Pour permettre à vos clients de connecter leur compte Envato via OAuth :
- Enregistrez une application sur build.envato.com.
- Définissez l’URL de callback à
https://yoursite.com/auth/envato/callback. - Dans Admin → Paramètres → Authentification sociale, activez le pilote Envato et saisissez
le
Client IDet leClient Secret.
Code d’achat (clé de licence)
Intégration Envato Market est vendue comme un produit séparé ; elle possède donc son propre code d’achat (clé de licence) — distinct du code d’achat de l’application principale et de celui de chaque autre add-on. Il vous est demandé lorsque vous activez Intégration Envato Market dans Panneau d’administration → Add-ons.
Nos produits sont vendus sur trois plateformes. La façon dont vous recevez un code d’achat dépend de l’endroit où vous avez acheté le produit.
| Plateforme / Marketplace | Comment vous obtenez le code d’achat | Où le retrouver |
|---|---|---|
| Boutique bedigit.com Achat sur le site (Boutique) |
Généré automatiquement lorsque la commande est payée, puis envoyé par email — soit dans un email de licence dédié, soit dans l’email de confirmation de commande. | Mon compte → Mes licences sur bedigit.com |
| Gumroad | Créé dès que Gumroad nous notifie la vente, puis envoyé dans un email séparé, en plus du reçu Gumroad. | L’email de licence, votre Bibliothèque Gumroad et Mon compte → Mes licences sur bedigit.com |
| Envato Market CodeCanyon |
Délivré par Envato, et non par nous, et jamais envoyé par email : vous le téléchargez vous-même depuis votre compte Envato. | Compte Envato → Downloads → License certificate & purchase code |
1. Boutique bedigit.com (achat sur le site)
- Dès que le statut de paiement de la commande passe à Payée, une clé de licence est générée automatiquement pour chaque article sous licence de la commande (une clé par unité achetée — l’achat de 3 unités donne 3 clés distinctes).
- Elle est envoyée par email à l’adresse utilisée pour la commande, soit dans un email de licence dédié, soit dans l’email de confirmation de commande. Vérifiez votre boîte de réception et votre dossier spam / courrier indésirable.
- La clé reste disponible dans votre compte sous Mon compte → Mes licences. Les clés sont masquées dans la liste ; ouvrez la page de détail de la licence pour révéler et copier la clé complète, voir les domaines sur lesquels elle est activée, et désactiver un domaine pour libérer un emplacement d’activation.
- La facture correspondante se trouve sous Mon compte → Mes commandes.
2. Gumroad
- Un achat sur Gumroad génère deux emails distincts : le reçu Gumroad (envoyé par Gumroad, donnant accès aux fichiers) et un email de clé de licence (envoyé par bedigit.com) qui contient votre code d’achat.
- L’email de clé de licence est généré dès que Gumroad nous notifie la vente ; il arrive donc normalement quelques secondes après le paiement. Ici aussi, vérifiez votre boîte de réception et votre dossier spam / courrier indésirable.
- Lorsque le produit Gumroad utilise la fonctionnalité de clé de licence propre à Gumroad, la même clé apparaît aussi dans votre reçu Gumroad et sous Bibliothèque → votre achat sur gumroad.com.
- Utilisez la même adresse email sur bedigit.com que sur Gumroad : vos clés sont alors liées automatiquement à votre compte et listées sous Mon compte → Mes licences, même si vous vous inscrivez après l’achat. Vous pouvez aussi ajouter manuellement une clé Gumroad depuis Mon compte → Mes licences Gumroad.
3. Envato Market (CodeCanyon)
- Les codes d’achat Envato sont émis et délivrés par Envato Market, jamais envoyés par email par nos soins — il n’y a donc rien à chercher dans votre dossier spam : vous récupérez le code depuis votre compte Envato.
- Connectez-vous à votre compte Envato / CodeCanyon, ouvrez la page Downloads, trouvez l’article et choisissez License certificate & purchase code dans le menu déroulant Download. Le code figure dans ce certificat.
- Un code d’achat Envato ressemble à
12345678-90ab-cdef-1234-567890abcdef(8-4-4-4-12 caractères). Il ne change jamais, et le renouvellement du support de l’article n’en génère pas de nouveau. - Article officiel Envato : Where Is My Purchase Code?
Configuration
Tous les paramètres sont gérés dans Admin → Envato → Paramètres (stockés dans la table settings, groupe envato).
| Paramètre | Description | Défaut |
|---|---|---|
envato_api_token |
Token API personnel Envato pour les appels API au niveau auteur (vérifier les ventes, importer les articles). | (vide) |
envato_author_username |
Votre nom d’utilisateur Envato Marketplace. | (vide) |
envato_require_email_match |
Lorsqu’activé, l’email Envato de l’acheteur doit correspondre à l’email de son compte sur le site pour que la vérification d’achat réussisse. | false |
envato_link_multiple_products |
Autoriser la liaison d’un article Envato à plusieurs produits de licence (packs). Désactivé : la fenêtre Produits de licence liés n’accepte qu’un seul produit. | false |
envato_license_sync_queued |
Exécuter la synchronisation Licences → Envato (les enregistrements client et article créés lorsqu’une clé est vérifiée via l’add-on Licences) dans la file d’attente au lieu d’en ligne. | false |
envato_helpdesk_require_purchase,
envato_forum_require_purchase et envato_kb_restrict_by_purchase n’existent plus.
La restriction se configure dans l’add-on Licences : licenses_helpdesk_require_purchase et
licenses_kb_restrict_by_purchase (paramètres HelpDesk) et licenses_forum_require_purchase (paramètres Forum).
L’acceptation des codes d’achat Envato comme clés de licence est gérée par le paramètre Licences
licenses_envato_marketplace_enabled (Licences → Paramètres → Places de marché).
Variables d’Environnement
Configuration OAuth (Auth Sociale)
Le OAuth Envato est configuré via les paramètres d’Auth Sociale du noyau, et non directement par l’add-on :
social_auth_envato_enabled: Activer/désactiver le driver OAuth Envatosocial_auth_envato_client_id: Client ID OAuth de build.envato.comsocial_auth_envato_client_secret: Client Secret OAuth
Créer un Token Envato
- Allez sur build.envato.com/create-token.
- Donnez-lui un nom descriptif (ex. “Site Support Larapen”).
- Activez ces permissions :
- View and search Envato sites
- View the user’s Envato Account username
- View the user’s email address
- View the user’s account profile details
- View the user’s items’ sales history
- Copiez le token généré et collez-le dans Admin → Envato → Paramètres.
author/sale échouera.
Admin : Paramètres
La page des paramètres (Envato → Paramètres) est organisée en onglets :
Configuration API
- Token Personnel : champ mot de passe masqué avec bouton afficher/masquer.
- Nom d’utilisateur auteur : votre nom d’utilisateur Envato Marketplace.
- Bouton Tester la connexion : appel AJAX qui teste le token en temps réel (fonctionne avec les valeurs non enregistrées saisies dans le formulaire). Renvoie le nom d’utilisateur résolu en cas de succès.
État des Dépendances
Indique si l’add-on Licences requis est actif, avec un avertissement lorsqu’il ne l’est pas.
Options de Vérification
- Exiger la correspondance des emails : lorsqu’activé, l’email Envato de l’acheteur doit correspondre à l’email de son compte sur le site.
Synchronisation Licences
Affichée tant que l’add-on Licences est actif :
- Autoriser plusieurs produits de licence par article (
envato_link_multiple_products) : désactivé par défaut, de sorte qu’un article est lié à un seul produit de licence et que la fenêtre Produits de licence liés le remplace lorsqu’un autre est choisi. - Exécuter la synchronisation en arrière-plan (
envato_license_sync_queued) : lorsqu’une clé est vérifiée via l’add-on Licences avec le marketplace Envato, les enregistrements client et article correspondants sont créés ici ; n’activez cette option qu’avec un worker de file d’attente en cours d’exécution.
Admin : Articles
La page Articles (Envato → Articles) gère votre catalogue local d’articles Envato Marketplace.
Liste des Articles
Un tableau trié et paginé (20 par page) affichant :
- Miniature : icône de l’article depuis Envato
- Nom & ID Envato
- Site marketplace (ex. codecanyon, themeforest)
- Prix (formaté depuis les centimes)
- Nombre de ventes
- Liens : à combien de produits de licence cet article est lié ; les produits liés sont également affichés sous forme de badges sous le nom de l’article
- Dernière synchronisation
Actions par article : Voir, Gérer les liens (ouvre la fenêtre Produits de licence liés, où un produit de licence peut aussi être créé depuis l’article — voir Produit de Licence), Supprimer. Suppression en masse avec sélection par cases à cocher. Filtres : recherche (nom ou ID Envato), site marketplace, liés / non liés, avec / sans achats.
Importation d’Articles
Cliquez sur Importer depuis Envato pour lancer une importation séquentielle pilotée par JavaScript :
- L’interface envoie
POST admin/envato/items/import?page=1. - Le serveur récupère une page (jusqu’à 10 articles) depuis le point de terminaison Envato
author/sales. - Pour chaque nouvel article (pas encore en base), il appelle
getCatalogItem()pour obtenir les détails complets. - Une barre de progression se met à jour en temps réel affichant : nouveaux articles importés, articles ignorés (doublons), pages traitées.
- Si
hasMore = true, le JS demande automatiquement la page suivante.
Détail de l’Article & Synchronisation
La page de détail de l’article (Envato → Articles → {article}) affiche :
- Carte d’info de l’article : miniature, nom, ID Envato, marketplace, auteur, prix, nombre de ventes, note, lien “Voir sur Envato”
- Les badges Produits de licence liés sous le nom de l’article (lorsque l’add-on Licences est actif) — voir Produit de Licence
- Bouton Synchroniser : re-récupère l’article depuis l’API catalogue Envato et met à jour tous les champs
- Formulaire Ajouter un code d’achat : l’admin peut ajouter manuellement un code d’achat connu pour cet article
- Tableau des achats : tous les achats vérifiés pour cet article, affichant le nom d’utilisateur de l’acheteur, l’utilisateur lié du site, l’email, le code d’achat (complet, visible par l’admin), le type de licence, le montant, la date de vente
- Barre latérale Lié à : les produits de licence auxquels cet article est lié (les inactifs sont signalés), avec un bouton Modifier qui ouvre la fenêtre Produits de licence liés
Créer un Produit de Licence depuis un Article
Lorsque l’add-on Licences est actif, la fenêtre Produits de licence liés d’un article comporte un bouton Créer un produit de licence. C’est l’équivalent, article par article, de l’importation en masse Importer depuis le module Envato de l’add-on Licences — utilisez-le pour transformer un seul article en produit de licence à la demande, sans relancer toute l’importation.
- Un clic crée un produit de licence depuis l’article (nom, description et métadonnées telles que le marketplace, l’auteur, le prix et le nombre de ventes), lie l’article à ce produit et le sélectionne dans la fenêtre. Si l’article possède déjà un produit de licence, ce produit est actualisé à la place, de sorte qu’aucun doublon n’est créé.
- Le SKU du produit est son propre identifiant et n’est pas l’ID de l’article Envato : l’ID de l’article est conservé dans la
fiche Envato de l’article (
licenses_product_marketplace), qui est ce qui identifie le produit pour les codes d’achat Envato. - L’importation d’articles sur cette page crée également les produits de licence correspondants (lorsque le marketplace Envato est activé dans les paramètres des Licences).
Admin : Produits de Licence Liés
Un article Envato est lié au(x) produit(s) de licence qu’il vend. Les produits de licence sont la seule chose à laquelle un article peut être lié : les départements du helpdesk, les collections KB et les catégories du forum sont liés à des produits de licence dans l’add-on Licences, jamais à des articles Envato.
Édition des Liens
- Ouvrez la fenêtre Produits de licence liés depuis l’icône de lien d’une ligne d’article sur Envato → Articles, ou depuis le
bouton Modifier de la carte Lié à de la page de l’article (permission
envato.links.edit). Il n’y a plus de page de liens séparée : l’ancienne page/admin/envato/linksa été retirée en 1.0.5. - La fenêtre utilise le sélecteur partagé Produits de licence (recherchable, avec le slug / SKU / la version sur chaque ligne).
Un produit par article par défaut ; plusieurs lorsque
envato_link_multiple_productsest activé. - Créer un produit de licence (affiché avec la permission
licenses.products.createoulicenses.products.edit) crée le produit depuis l’article en un clic et le sélectionne. - L’enregistrement remplace les liens de l’article par les produits sélectionnés.
licenses_product_marketplace de l’add-on Licences (external_id = l’ID de l’article Envato, listing_id = envato_items.id).
L’ancienne table envato_item_links est supprimée par la mise à jour 1.0.6 après que ses lignes y ont été copiées.
Le même enregistrement est affiché dans la section Envato du formulaire du produit de licence (Licences → Produits).
Admin : Clients
La page Clients (Envato → Clients) fournit une vue agrégée de tous les acheteurs.
Liste des Clients
Les achats sont regroupés par buyer_username, affichant :
- Nom d’utilisateur Envato
- Compte site lié (le cas échéant)
- Nombre d’achats & Nombre d’articles
- Total dépensé
- Statut du support (badge actif/expiré)
- Date du dernier achat
Recherchable par nom d’utilisateur acheteur, email acheteur, ou nom/email de l’utilisateur lié.
Détail du Client
Cliquez sur une ligne client pour voir son historique d’achats complet :
- Barre latérale : nom d’utilisateur, email, compte site lié avec bouton “Révoquer le lien”, grille de statistiques (achats, articles, total dépensé, nombre vérifié), alerte de statut de support
- Tableau des achats : miniature de l’article, nom de l’article, code d’achat, type de licence, montant, date de vente, badge d’expiration du support
Révocation d’un Lien
L’action Révoquer le lien :
- Supprime tous les enregistrements
envato_user_purchasesde l’acheteur - Efface les données OAuth Envato de l’utilisateur (
provider,provider_id,provider_token, etc.) - L’utilisateur perd immédiatement l’accès à toutes les fonctionnalités conditionnées par l’achat
Comptes Liés
La page Comptes liés (Envato → Comptes liés) affiche tous les utilisateurs du site qui ont connecté leur compte Envato via OAuth.
- Utilisateur du site : avatar, nom, email
- Badge Nom d’utilisateur Envato
- Nombre d’achats
- Date de liaison
Actions par ligne :
- Synchroniser les achats (AJAX) : appelle le point de terminaison Envato
buyer/purchasesen utilisant le token OAuth stocké de l’utilisateur et importe tous les nouveaux achats. Met à jour le badge de comptage en ligne. - Voir les achats : navigue vers la page de détail du client
- Révoquer le lien : déconnecte le compte Envato et supprime tous les achats
Flux OAuth
L’intégration OAuth Envato utilise Laravel Socialite et est gérée par le SocialAuthController du noyau.
Pour les Nouveaux Utilisateurs (Connexion/Inscription)
- L’utilisateur clique sur “Se connecter avec Envato” sur la page de connexion.
- Redirigé vers la page d’autorisation OAuth d’Envato.
- Après approbation, Envato redirige vers
/auth/envato/callback. - Le système trouve ou crée un compte utilisateur (correspondance par nom d’utilisateur Envato, puis par email).
- Les tokens OAuth (
provider_token,provider_refresh_token,provider_token_expires_at) sont stockés dans la tableusers. - Tous les achats Envato de l’utilisateur sont automatiquement synchronisés via
syncUserPurchases(). - L’utilisateur est connecté et redirigé.
Pour les Utilisateurs Existants (Liaison de Compte)
- L’utilisateur authentifié clique sur “Connecter le compte Envato” sur la page Mes Achats.
- Redirigé vers OAuth Envato.
- Après approbation, le callback lie le compte Envato à l’utilisateur existant.
- Revalidation : Tous les achats existants appartenant à un autre acheteur Envato sont supprimés.
- Synchronisation : Tous les nouveaux achats du compte de l’acheteur sont importés.
- L’utilisateur est redirigé vers la page Mes Achats avec un message récapitulatif.
Rafraîchissement du Token
La méthode EnvatoApiClient::getBuyerPurchases() vérifie automatiquement l’expiration du token.
Si le token est expiré (ou expire dans les 5 minutes), elle appelle refreshUserToken()
qui utilise le refresh token stocké pour obtenir un nouveau token d’accès depuis l’API Envato.
Le nouveau token est enregistré dans la base de données de manière transparente.
Mes Achats
La page d’achats front-end est disponible à /{locale}/envato/purchases (authentification requise).
URL & Routes
| Méthode | URL | Nom de Route | Description |
|---|---|---|---|
| GET | /{locale}/envato/purchases |
envato.purchases.localized |
Page Mes Achats |
| POST | /{locale}/envato/purchases/add |
envato.purchases.store.localized |
Ajouter un code d’achat |
| DELETE | /{locale}/envato/purchases/disconnect |
envato.purchases.disconnect.localized |
Déconnecter le compte Envato |
| POST | /{locale}/envato/purchases/{id}/register-as-license |
envato.purchases.register-as-license.localized |
Enregistrer un achat vérifié comme clé de licence (add-on Licences, JSON) |
| DELETE | /{locale}/envato/purchases/{id} |
envato.purchases.destroy.localized |
Supprimer un achat spécifique |
Des variantes non localisées (sans {locale}) sont également enregistrées.
Mise en Page
Mise en page responsive à trois colonnes (col-lg-8 + col-lg-4) :
Contenu Principal
- Non connecté : Une carte stylée “Connectez votre compte Envato” avec un bouton de connexion vert Envato. Affiche un avertissement si OAuth est désactivé dans les paramètres.
- Connecté : Un badge “Connecté en tant que {nom d’utilisateur}” avec un bouton Déconnexion.
- Formulaire Ajouter un code d’achat : champ texte pour le code d’achat (format UUID) + bouton soumettre. Affiché uniquement lorsque le compte Envato de l’utilisateur est connecté.
- Liste des Achats vérifiés : chaque achat affiche : miniature de l’article, nom, code d’achat masqué, type de licence, date d’expiration du support, date de vérification et un bouton Supprimer.
Barre Latérale
- Carte Statut du compte Envato (badge connecté/non-connecté, action connecter/déconnecter)
- Carte Besoin d’assistance ? avec lien helpdesk (affichée uniquement si l’add-on HelpDesk est actif)
- Liste de conseils
Déconnexion
Lorsqu’un utilisateur déconnecte son compte Envato :
- Tous ses enregistrements
envato_user_purchasessont supprimés. - Les colonnes
provider,provider_id,provider_token,provider_refresh_token,provider_token_expires_atetprovider_avatarde la tableuserssont mises à null. - Ils perdent immédiatement l’accès à toutes les fonctionnalités conditionnées par l’achat.
Flux de Validation d’Achat
Lorsqu’un utilisateur soumet un code d’achat (via la page Mes Achats), le système suit ce flux de validation :
- Vérifier la base locale : ce code d’achat est-il déjà dans
envato_user_purchases? Si oui, vérifier la propriété :- Si le code appartient à l’utilisateur actuel : renvoyer “déjà ajouté”.
- Si le code appartient à un autre utilisateur : renvoyer l’erreur
already_used.
- Vérifier via l’API Envato : appeler
author/sale?code={code}en utilisant le token personnel de l’auteur. - Trouver ou créer l’article : faire correspondre le
item.idde la réponse à un enregistrement localenvato_items. Si non trouvé, créer automatiquement l’article à partir de la réponse API. - Vérification d’identité de l’acheteur : vérifier que l’utilisateur est le véritable acheteur en utilisant cette priorité :
- Correspondance OAuth Envato :
provider = 'envato'ETprovider_id = buyer_username(plus fiable) - Correspondance de nom : le nom de l’utilisateur correspond au nom d’utilisateur de l’acheteur
- Correspondance du préfixe email : le préfixe email correspond au nom d’utilisateur de l’acheteur
- Correspondance OAuth Envato :
- Créer l’enregistrement d’achat : insérer dans
envato_user_purchasesavec les données de vérification. - Enregistrement automatique de licence : si l’add-on Licences est actif, créer automatiquement un enregistrement
LicenseKey(voir Intégration Licences).
Statuts de Validation
| Statut | Description |
|---|---|
valid |
Code d’achat vérifié et ajouté avec succès. |
invalid |
Code d’achat non trouvé sur Envato ou n’appartient pas à l’auteur configuré. |
already_used |
Le code d’achat est déjà enregistré par un autre utilisateur sur ce site. |
email_mismatch |
La correspondance d’email est requise mais l’email de l’acheteur ne correspond pas à l’email de l’utilisateur. |
item_mismatch |
Le code d’achat est valide mais appartient à un article différent de celui attendu. |
api_error |
Une erreur s’est produite lors de la communication avec l’API Envato (erreur réseau, token invalide, etc.). |
Contrôle d’Accès : Restriction par Achat
Le contrôle d’accès est une fonctionnalité de l’add-on Licences (depuis Envato 1.0.2). Le rôle de l’add-on Envato est de transformer les achats
vérifiés en clés de licence ; il ne lie plus les articles aux entités du helpdesk, du forum ou de la KB, et son ancienne classe
EnvatoPurchaseValidator, son binding envato.access.checker et son point de terminaison items-for-entity ont disparu.
Fonctionnement de la Restriction
- Un admin lie chaque article Envato à son produit de licence (Produits de licence liés).
- Un admin lie les produits de licence aux départements du helpdesk, aux collections KB ou aux catégories du forum (stockés dans la table
licenses_entity_linksdes Licences), depuis les pages d’administration HelpDesk et Forum. - Un admin active l’option Licences correspondante :
licenses_helpdesk_require_purchase,licenses_kb_restrict_by_purchaseoulicenses_forum_require_purchase. - Lorsqu’un acheteur ajoute un code d’achat (ou en vérifie un via l’API Licences), l’add-on Envato enregistre une clé de licence pour le produit de licence de l’article (voir Intégration de l’add-on Licences).
- Les add-ons helpdesk / forum demandent à l’add-on Licences (
LicensesAccessService) si l’utilisateur détient une clé de licence active pour un produit lié à l’entité.
Intégration HelpDesk
Lorsque licenses_helpdesk_require_purchase est activé (paramètres HelpDesk), un département lié à des produits de licence n’accepte les tickets
que des utilisateurs détenant une clé de licence pour l’un d’eux. Le formulaire de ticket renvoie vers la page Mes Achats afin que les acheteurs puissent ajouter leur
code d’achat Envato. Les admins voient aussi les achats Envato du client dans la barre latérale du ticket.
Intégration Forum
Lorsque licenses_forum_require_purchase est activé (paramètres Forum), les fils de discussion et les réponses dans une catégorie liée à des produits de licence sont
réservés aux utilisateurs détenant une clé de licence pour l’un d’eux — quel que soit le marketplace d’où provient la clé (Envato, Gumroad, Boutique ou manuelle).
Intégration Base de Connaissances
Lorsque licenses_kb_restrict_by_purchase est activé (paramètres HelpDesk), une collection KB liée à des produits de licence n’est lisible que par les
utilisateurs détenant une clé de licence pour l’un d’eux : les visiteurs sont envoyés vers la page de connexion, et les utilisateurs connectés sans clé vers leur
page Mes licences, où ils peuvent en enregistrer une.
Intégration de l’add-on Licences
Lorsque les add-ons Envato et Licences sont tous deux actifs et que le marketplace Envato est activé dans
Licences → Paramètres → Places de marché (licenses_envato_marketplace_enabled), l’intégration est bidirectionnelle.
Envato → Licences (Création Automatique de Clé)
Lorsqu’un achat Envato vérifié est créé, une clé de licence est automatiquement enregistrée :
- Vérifie si l’add-on Licences est actif.
- Vérifie si une clé de licence avec ce code d’achat existe déjà (ignore le cas échéant).
- Résout le
LicenseProductdans cet ordre : le ou les produits actifs auxquels l’article est lié (Produits de licence liés) → tout produit possédant une fiche Envato pour cet ID d’article → un produit dont le slug ou l’alias de slug correspond au nom de l’article → le premier produit actif → un nouveau produit, qui est immédiatement référencé sous l’article afin que la prochaine vente se résolve par le lien. - Mappe le type de licence Envato : “Extended License” →
extended, tous les autres →standard. - Crée une clé de licence avec
marketplace = 'envato', le code d’achat comme clé, etexpires_at = null(les licences Envato sont perpétuelles).
Articles Envato → Synchronisation Produits Licences
Lorsque le marketplace Envato est activé dans les paramètres des Licences :
- Importation : L’importation d’articles Envato sur Admin → Envato → Articles crée automatiquement les produits de licence
correspondants et enregistre chaque article comme fiche Envato du produit (
licenses_product_marketplace). L’ID de l’article Envato n’est pas écrit dans le SKU ni dans les métadonnées du produit ; un article déjà référencé conserve son produit. - Suppression : La suppression d’articles Envato supprime également le produit de licence référencé sous l’ID Envato de l’article, ainsi que les fiches de l’article.
Licences → Envato (Vérification par Marketplace)
Lorsqu’un code d’achat est vérifié via l’API Licences (GET /api/licenses/verify) et n’est pas trouvé localement,
le marketplace Envato le vérifie automatiquement auprès de l’API Envato. Si elle est valide, la clé est créée pour les recherches futures, sur le produit de licence auquel l’article est lié.
L’article et l’achat sont ensuite répercutés dans les pages Articles et Clients d’Envato (voir envato_license_sync_queued).
Si l’add-on Envato est actif, son client API est utilisé pour la vérification. Sinon, l’add-on Licences effectue des appels HTTP directs vers l’API Envato.
Ce que l’API Licences accepte comme product
Une application cliente envoie le paramètre product à côté du code d’achat sur GET /api/licenses/verify. L’add-on Licences accepte plusieurs
identifiants du même produit, et l’ID de l’article Envato en est un — via la fiche de l’article, pas via le SKU :
| Ce que le client envoie | Ce qui se passe |
|---|---|
| Le SKU du produit de licence | Accepté en premier. C’est ce que les applications clientes actuelles envoient avant tout le reste (clé de manifeste sku). |
| L’un de ses alias de slug | Accepté ensuite. Un alias peut être partagé par plusieurs produits, de sorte qu’une clé de l’un ou l’autre se vérifie. |
| L’ID de l’article Envato | Accepté lorsque l’article est référencé sous ce produit de licence (voir Produits de licence liés). C’est le
marketplace_item_ids.envato du manifeste. Si le produit n’a pas de fiche Envato pour cet ID, rien ne correspond et la réponse est
“License key does not belong to this product.” |
| Son slug (nom de répertoire) | Accepté en dernier, ce qui correspond à ce que les anciennes applications clientes envoient. |
Aucun product |
La vérification du produit est ignorée : la clé se vérifie dès lors qu’elle existe, qu’elle est active et que sa limite d’activation le permet. La réponse nomme tout de même le véritable produit. |
item_id= au lieu de product=. Sur GET /api/licenses/verify, ce paramètre est
ignoré, de sorte que l’appel se comporte comme la dernière ligne ci-dessus : vérifié, mais sur aucun produit particulier. Il n’est lu que par le
point de terminaison de vérification legacy des Licences (dont le chemin est envato.php par défaut, celui que ces clients appellent déjà), qui résout l’ID de l’article
vers son produit de licence via la fiche Envato et le vérifie alors bien. La correspondance est exacte : sensible à la casse et sans suppression des espaces.
L’ordre complet que le serveur essaie, ainsi que les identifiants des autres marketplaces, sont documentés dans la documentation de l’add-on Licences (Comment l’API reconnaît un produit).
Mise à Jour
Il y a deux façons de mettre à jour cet add-on : via le panneau d’administration (recommandé) ou en remplaçant manuellement les fichiers.
Méthode 1 : Téléversement via le panneau d’administration (recommandée)
- Téléchargez le dernier fichier
.zipde cet add-on. - Allez dans Panneau d’administration → Add-ons et cliquez sur le bouton Téléverser.
- Sélectionnez ou glissez le fichier
.zipdans la zone de téléversement. - Une invite de confirmation affichera les numéros de version actuelle et nouvelle. Cliquez sur Remplacer pour continuer.
- Allez dans Panneau d’administration → Mise à jour du système (
/admin/update) pour appliquer les migrations de base de données en attente.
Méthode 2 : Remplacement manuel des fichiers
Étape 1 : Remplacer les Fichiers
Remplacez le répertoire de l’add-on par la nouvelle version.
Étape 2 : Exécuter les Migrations
php artisan migrate
Les migrations en attente ne s’exécutent qu’une seule fois : la commande peut être relancée sans risque.
Étape 3 : Vider les Caches
php artisan config:clear
php artisan route:clear
php artisan view:clear
Étape 4 : Vérifier
Visitez Envato → Paramètres et cliquez sur Tester la connexion pour confirmer que le token API fonctionne toujours.
licenses_product_marketplace
des Licences et supprime envato_item_links ; tant que les tables des Licences sont absentes, il saute cette étape et conserve la table jusqu’à ce que la mise à jour des Licences ait été exécutée.
Désinstallation
Éteindre un add-on sans rien perdre, c’est le désactiver : allez dans Panneau d’administration → Add-ons, trouvez Envato Market Integration et cliquez sur Désactiver.
- Ses routes, ses vues, ses entrées de menu d’administration et ses permissions cessent d’être enregistrées, et ses pages publiques ne répondent plus.
- Ses tables de base de données et toutes les données qu’elles contiennent sont conservées, et ses fichiers restent dans
extensions/addons/envato/. Rien n’est supprimé. - Le code d’achat enregistré lors de l’activation est conservé lui aussi : réactiver l’add-on ne le redemande pas.
- La désactivation est refusée tant qu’un autre add-on actif dépend de celui-ci : désactivez d’abord cet add-on.
Cliquez sur Activer sur la même carte pour le rallumer. Les migrations en attente sont rejouées, les assets republiés, et l’add-on reprend exactement là où il s’était arrêté.
Suppression
La suppression est définitive et détruit les données de l’add-on. Le bouton Supprimer n’apparaît que sur un add-on désactivé : la suppression se fait donc toujours en deux temps :
- Désactivez Envato Market Integration (voir Désinstallation).
- Cliquez sur Supprimer sur sa carte et confirmez la demande.
Le panneau d’administration, en une seule passe :
- exécute le hook de désinstallation de l’add-on, s’il en fournit un, tant que son code est encore sur le disque ;
- révoque les permissions déclarées dans son
addon.json; - annule ses migrations — ce qui supprime ses tables de base de données et toutes les lignes qu’elles contiennent — et purge ses entrées de la table
migrations, afin qu’une réinstallation ultérieure reparte de zéro ; - supprime ses assets publiés :
public/addons/envato/,public/vendor/envato/etstorage/app/public/addons/envato/; - supprime le dossier de l’add-on
extensions/addons/envato/; - supprime sa ligne dans la table
addons(le code d’achat enregistré disparaît avec elle) et vide le cache de l’application.
La suppression est refusée, avec un message explicatif et avant toute destruction, lorsque l’add-on est encore actif, lorsqu’un autre add-on actif en dépend, ou lorsque l’utilisateur du serveur web (PHP) ne peut pas supprimer extensions/addons/envato/. Dans ce dernier cas, donnez à cet utilisateur le droit d’écriture sur le dossier et sur son parent, puis réessayez.
Supprimer le dossier en FTP ou en SSH n’est pas équivalent : les tables de l’add-on, ses entrées dans la table migrations et sa ligne addons restent en place, et sa carte reste dans la liste. Utilisez plutôt Supprimer dans le panneau d’administration.
Dépannage
Le Test de Connexion échoue : “Could not connect to Envato API”
Vérifiez que :
- Le token API est correct et n’a pas été révoqué.
- Le token possède les permissions requises (notamment “View sales history”).
- Votre serveur peut atteindre
api.envato.com(pas de pare-feu bloquant le HTTPS sortant).
L’importation ne trouve aucun article
L’importation utilise le point de terminaison author/sales, qui ne renvoie que les articles que vous avez vendus.
Si vous avez un nouvel article avec zéro vente, il n’apparaîtra pas dans l’importation. Vous pouvez ajouter manuellement des articles
dans la base de données ou attendre la première vente.
La vérification du code d’achat échoue : “Invalid purchase code”
- Assurez-vous que le code d’achat est un UUID valide (36 caractères, tirets inclus).
- Vérifiez que le code appartient à l’un de vos articles (le point de terminaison
author/salene renvoie que les ventes de l’auteur configuré). - Vérifiez que
envato_author_usernameest correctement défini dans les paramètres.
L’utilisateur ne peut pas connecter son compte Envato
- Assurez-vous que le driver OAuth Envato est activé dans Admin → Paramètres → Authentification sociale.
- Vérifiez que le
Client IDet leClient Secretsont définis. - L’URL de rappel chez Envato doit correspondre exactement à
https://yoursite.com/auth/envato/callback.
Les achats ne se synchronisent pas après la connexion OAuth
- Le token OAuth a peut-être expiré. Essayez de déconnecter et reconnecter.
- Vérifiez que les colonnes
provider_tokenetprovider_refresh_tokenexistent dans la tableusers(exécutezphp artisan migratesi la migration n’a pas été exécutée). - Vérifiez les logs du serveur pour les erreurs de l’API Envato pendant le processus de synchronisation.
La restriction par achat ne fonctionne pas : les utilisateurs accèdent sans achat
- La restriction est une fonctionnalité des Licences : assurez-vous que l’option Licences concernée est activée (
licenses_helpdesk_require_purchase,licenses_forum_require_purchaseoulicenses_kb_restrict_by_purchase). - Assurez-vous qu’au moins un produit de licence est lié à l’entité (
licenses_entity_links). Les entités sans produit lié sont toujours non restreintes. - Assurez-vous que l’article Envato est lié à ce produit de licence (Produits de licence liés) ; sinon la clé de l’acheteur est enregistrée sur un autre produit.
Clé de licence enregistrée sur le mauvais produit
- Un achat est enregistré sur le produit de licence auquel l’article est lié. Ouvrez l’article, vérifiez sa carte Lié à et corrigez le lien.
- Sans lien, le produit est deviné (slug ou alias du nom de l’article, puis le premier produit actif) — liez toujours vos articles.
- Exécutez
php artisan licenses:doctor: il signale les liens pointant vers un article ou un produit supprimé (orphan_link), les produits importés depuis Envato mais liés à aucun de ses articles (source_without_link) et les articles liés dont le titre diffère (title_mismatch).
Les liens d’articles ont disparu après la mise à jour
- Envato 1.0.6 copie les lignes
envato_item_linksrestantes dans la tablelicenses_product_marketplacedes Licences, puis supprime la table. Mettez d’abord à jour l’add-on Licences en 1.0.13 : sa mise à jour copie également les liens, et la migration Envato saute la copie (et conserve la table) tant que les tables des Licences n’existent pas. - Si Envato a été mis à jour en premier, mettez à jour les Licences, puis relancez les mises à jour en attente depuis Admin → Mise à jour du système afin que la migration Envato puisse s’achever.
Non-correspondance d’identité de l’acheteur : achat rejeté malgré un code valide
Le système essaie de faire correspondre l’acheteur à l’utilisateur authentifié via trois méthodes (dans l’ordre) :
- Correspondance OAuth Envato (provider_id = nom d’utilisateur acheteur) : plus fiable
- Correspondance de nom
- Correspondance du préfixe email
Si aucune ne correspond, l’achat est rejeté. Solution : faites connecter le compte Envato de l’utilisateur via OAuth d’abord, puis ajoutez le code d’achat. La correspondance OAuth est définitive.
La création automatique de licence ne fonctionne pas
- Assurez-vous que l’add-on Licences est installé et actif.
- Vérifiez que la classe
Addons\Licenses\Services\LicenseKeyServiceexiste. - Vérifiez que le marketplace Envato est activé dans Licences → Paramètres → Places de marché (
licenses_envato_marketplace_enabled) pour les vérifications via l’API Licences et les importations d’articles. - Vérifiez les logs du serveur pour les avertissements pendant le processus d’enregistrement automatique.
- Si une clé de licence avec le même code d’achat existe déjà, la création automatique est ignorée (par conception).
Intégration Envato Market v1.0.0 : fait partie de la plateforme CMS Larapen.
© BeDigit. Tous droits réservés.