Base de connaissances

Vendez l’hébergement Zinn® depuis WHMCS

Installez le module de provisionnement gratuit Zinn Digital® dans WHMCS : la clé API et les sept autorisations requises, l’emplacement où doit être placé le répertoire du module et la raison pour laquelle son nom a de l’importance, les champs de produit et la fonction réelle de chaque bouton de WHMCS.

Le module Zinn Digital® transforme les boutons natifs de WHMCS en véritables actions sur notre plateforme. Une commande provisionne l’hébergement de votre client. L’automatisation des factures impayées de WHMCS le suspend. Marquer la facture comme payée le réactive. Une annulation planifie sa suppression. Et votre client bénéficie d’un bouton Log in to hosting panel dans son espace client qui le connecte directement.

Il est gratuit, sous licence GPL-2.0-or-later, et ne dispose d’aucun accès privilégié à notre plateforme : chaque appel qu’il effectue est un point de terminaison documenté que vous pourriez appeler vous-même avec votre propre clé d’API.

Avant de commencer

Vous avez besoin de deux éléments, et le second en surprend plus d’un.

  1. Un compte revendeur Zinn® avec un programme actif. Inscrivez-vous sur zinndigital.com et activez la revente.
  2. Un plan revendeur avec un quota de sites disponible. Les sites commandés par vos clients sont décomptés de votre plan, vous en avez donc besoin d’un qui dispose d’espace suffisant.

⚠️ Test Connection ne peut pas vous indiquer si une commande va réussir. Il lit votre programme et ne provisionne rien, renvoyant ainsi un compte active sain qui ne peut pourtant encore rien vendre. Si votre première commande échoue avec l’erreur « This organization has no hosting plan, so it cannot host a site yet », c’est exactement ce qui s’est passé — achetez ou étendez votre plan revendeur et passez la commande à nouveau. Le module ne présente aucune anomalie.

1. Créer la clé d’API

Dans votre tableau de bord Zinn®, ouvrez API keys et créez-en une avec exactement ces onze autorisations :

AutorisationPourquoi elle est requise
org.createOuvrir le compte Zinn® de votre client lors de sa première commande.
org.readLire vos comptes clients.
sites.createProvisionner le site.
sites.viewConsulter un service et son utilisation.
sites.deleteRésilier.
reseller.viewLister ce que vous avez vendu, et lire le disque et la bande passante.
reseller.provisionSuspendre, réactiver, connecter un client, définir son plan et modifier son offre.
billing.viewConsulter le coût d’une mise à niveau avant de l’effectuer.
sites.manageVider le cache et effectuer une sauvegarde depuis les boutons.
sites.panel_accessModifier le mot de passe de l’administrateur WordPress.
hosting.php.manageChanger la version de PHP lors d’un surclassement ou d’un déclassement.

⛔ N’accordez pas reseller.manage. Une clé collée dans un panneau de facturation doit pouvoir suspendre un client pour défaut de paiement et le connecter. Elle ne doit pas pouvoir lire ni modifier vos propres identifiants de passerelle de paiement. reseller.provision existe précisément pour vous éviter d’avoir à accorder des permissions plus étendues. ⛔ org.create n’est pas facultatif. Sans cette autorisation, le module peut lire vos comptes mais ne peut pas en ouvrir un ; Test Connection réussit donc, mais la première commande renvoie un code 403. ⛔⛔ Accordez l’intégralité du tableau, et notez que Test Connection ne peut pas vous alerter en cas d’oubli. Il lit votre programme revendeur et ne provisionne rien, il s’affichera donc en vert pour une clé à laquelle il manque l’une de ces autorisations. Ce que vous obtiendrez à la place, c’est une erreur 403 sur l’unique opération couverte par la permission manquante, des mois plus tard, signalée par un client.

2. Installer le module

  1. Téléchargez le module et décompressez-le.
  2. Téléversez le répertoire zinn dans votre installation WHMCS de sorte que le fichier du module se trouve à l’emplacement modules/servers/zinn/zinn.php.

⛔ Le répertoire doit impérativement s’appeler zinn. WHMCS dérive les noms de fonction d’un module de provisionnement à partir du nom de son dossier ; ainsi, le renommer en zinn-whmcs ou zinndigital produit un module que WHMCS liste, vous permet de sélectionner, puis n’appelle jamais — sans générer la moindre erreur. L’archive zip s’extrait déjà sous le bon nom ; veillez simplement à ne pas le modifier.

3. Ajouter le serveur

Dans WHMCS : Configuration → Paramètres système → Serveurs → Ajouter un nouveau serveur.

  • Nom : ce que vous souhaitez, par exemple Zinn Digital®
  • Nom d’hôte : api.zinndigital.com
  • Type : Zinn Digital®
  • Mot de passe : votre clé d’API de l’étape 1

⛔ La clé se renseigne dans le champ Mot de passe, que WHMCS stocke de manière chiffrée. Ne la placez pas dans une option de configuration de produit — celles-ci sont enregistrées en texte clair dans la base de données et visibles par tous les administrateurs, et cet identifiant a le pouvoir de créer et de supprimer les hébergements de vos clients.

Cliquez sur Test Connection. Cela effectue un appel réel et rapporte la réponse de notre plateforme, au lieu de simplement vérifier que les champs sont remplis.

4. Créer le produit

Configuration → Paramètres système → Produits/Services, puis réglez Paramètres du module sur le serveur que vous venez d’ajouter. Les champs sont les suivants :

ChampRequisDescription
Product lineouiLa gamme Zinn® que vous vendez — mainstream (WordPress infogéré), footprint_free, wordpress, linux, cloud, agency, app_hosting, ai_hosting, lms_hosting, managed_database, vector_hosting, zinn_compute, fleet_linux, fleet_enterprise, mail ou reseller.
StackouiL’environnement déployé : wordpress (par défaut), woocommerce, php, static, node, one_click, headless_cms, nextcloud ou owncloud.
ApplicationnonUniquement pour les environnements one_click et headless_cms — l’application à installer. En indiquer une pour tout autre environnement sera refusé, car cet environnement détermine déjà ce qui est installé.
PHP versionnonPar ex. 8.3. Laissez vide pour la version par défaut de la gamme. Une version non proposée par la gamme sera refusée avec la liste de celles prises en charge.
Plan codeouiLe plan Zinn® vendu par ce produit. GET /v1/reseller/prices liste les vôtres. Une commande sans code de plan est refusée — voir l’avertissement ci-dessous.
Billing intervalnonmonthly (par défaut) ou annual — la périodicité de facturation appliquée à votre ligne de gros pour ce client. Ce que vous facturez à votre propre client est défini au niveau du produit WHMCS et demeure inchangé.

⛔⛔ Plan code est obligatoire, et toute commande qui en est dépourvue est délibérément refusée. Jusqu’au 2026-09-01, ce champ était décoratif et ignoré, de sorte que le module commandait des hébergements sans aucun plan associé — avec des conséquences totalement silencieuses. Votre relevé de gros étant généré à partir des abonnements actifs de vos clients, aucune ligne n’apparaissait pour le service et rien ne vous était facturé pendant toute sa durée de fonctionnement ; votre client n’héritait d’aucun quota, si bien qu’aucune limite d’espace disque ou de fichiers ne s’appliquait à son site ; et Change Package n’avait rien à modifier, empêchant ainsi l’exécution d’une montée en gamme vendue. Tout au long de cette période, le site a pourtant été provisionné et a fonctionné de manière impeccable.

Le module refuse désormais la commande, car il ne peut deviner un plan en toute sécurité : une estimation provisionnerait un hébergement sur un plan que vous n’avez pas choisi et dont vous n’avez peut-être pas fixé le tarif, et — contrairement à un refus, immédiatement visible — cela n’apparaîtrait qu’à la réception de la facture, si tant est que vous vous en aperceviez.

Définissez Auto Setup selon votre préférence — le module étant idempotent vis-à-vis de l’identifiant de service WHMCS, une nouvelle tentative de provisionnement renverra le même site au lieu de vous en facturer un second.

Rôle de chaque action WHMCS

Action WHMCSCe qui se produit de notre côté
CreateCrée le compte Zinn® du client (ou réutilise celui existant) et provisionne son site.
SuspendPlace le site en suspension pour défaut de paiement. Le contenu est conservé ; rien n’est supprimé.
UnsuspendLève votre suspension.
TerminatePlanifie la suppression du site, avec un délai de grâce. La date s’affiche dans l’espace client.
Usage updateActualise l’espace disque et la bande passante de chaque service, une fois par jour.
Log in to hosting panelOuvre un lien de connexion à usage unique menant directement au panneau de votre client.
Change PackageMet à niveau ou rétrograde le service. Bascule l’offre, ainsi que la version de PHP si le nouveau produit en spécifie une.
Change PasswordDéfinit le mot de passe de l’administrateur WordPress. Le champ n’apparaît pas sur les environnements dépourvus d’un tel compte.
RenewConfirme que le service existe toujours. L’hébergement Zinn® étant continu, il n’y a pas d’échéance distante à prolonger.
Sync Usage / Purge Cache / Take BackupBoutons présents sur la page du service côté administrateur. Votre client dispose de Purge Cache et Take Backup dans son espace client.
Onglet ServiceStatut, plan, disque, bande passante, suppression planifiée éventuelle, et auteur de la suspension.
ImportListAccounts parcourt toutes les pages, garantissant qu’une importation ne s’interrompe pas silencieusement à la première.

Mises à niveau : qui facture qui

Votre client n’est jamais facturé par Zinn®, que ce soit lors d’une commande ou d’une mise à niveau. Vous le facturez via WHMCS ; nous vous facturons sur votre relevé de gros. Ainsi, un Change Package modifie les droits d’accès de votre client et la ligne de votre prochain relevé sans débiter aucune carte — WHMCS a déjà prélevé l’argent de votre client et calculé son propre prorata.

Second service pour un même client. Sur un même plan, il s’agit d’un site supplémentaire décompté du quota de sites de ce plan, et rien d’autre n’est accordé. Sur un plan différent, l’opération est refusée : remplacer le plan actif laisserait l’un des deux services non facturé. Vendez les deux sur le même plan, ou configurez le client sous une fiche distincte dans WHMCS.

Change Password n’existe que pour WordPress. L’hébergement Zinn® n’a pas de « mot de passe de service » unique — votre client accède à son panneau via le bouton de connexion — et un site php ou static ne possède aucun compte applicatif à modifier. WHMCS masque totalement ce champ au lieu d’en afficher un qui ne peut pas fonctionner.

Trois réponses à ne pas confondre

  • Unsuspend peut répondre par un refus. Cela signifie que le site a été suspendu par notre équipe en charge des abus, et non par vous, et aucun panneau de facturation ne peut lever ce blocage. Le message l’indique clairement ; transmettez-le à votre administrateur plutôt que de renouveler la tentative.
  • Terminate planifie une suppression, mais ne l’exécute pas immédiatement. La date renvoyée correspond à pending_deletion_at et s’affiche dans l’espace client. Affirmer à un client que ses données sont déjà effacées alors que ce n’est pas le cas est pire que de ne rien lui dire.
  • Le disque et la bande passante peuvent être indéterminés, et une valeur indéterminée n’est pas un zéro. Lorsque nous n’avons pas pu effectuer de relevé, le module préserve la valeur actuelle au lieu d’inscrire 0 — sans quoi WHMCS afficherait à votre client une jauge d’utilisation vide et faussement rassurante pour un site dont nous n’avons aucune mesure.

Dépannage

Test Connection réussit et la première commande échoue avec une erreur de permission. Il manque l’autorisation org.create à la clé d’API. Le module doit ouvrir le compte du client avant de pouvoir créer son site.

Une commande échoue en indiquant que l’organisation n’a pas de plan d’hébergement. Votre plan revendeur n’a plus de quota de sites disponible, ou vous n’en possédez pas encore. Consultez la section Avant de commencer plus haut.

Une commande échoue en mentionnant un environnement technique (stack). Le champ Stack du produit est vide ou indique un environnement que nous ne prenons pas en charge. Définissez-le sur wordpress, à moins que vous ne vendiez autre chose.

Les résiliations échouent. Assurez-vous d’utiliser la version 1.0.0 du module ou une version plus récente. Les versions antérieures n’envoyaient pas de confirmation de suppression et chaque résiliation était refusée, maintenant le service actif et facturé.

Un refus qui mentionne un champ. Nos erreurs de validation indiquent le champ et la raison entre parenthèses à la suite du message, par ex. (php_version: 7.2 is not offered on this product line). C’est cette partie qui requiert une action — la phrase qui la précède est volontairement générique.

Vérifier votre téléchargement

Chaque archive est servie sous TLS depuis notre propre nom d’hôte et n’est jamais redirigée vers un hébergeur tiers. Sa somme de contrôle SHA-256 figure à côté du lien de téléchargement sur la page des téléchargements. Vérifiez-la après le téléchargement :

  • macOS ou Linux : shasum -a 256 zinn-whmcs-1.0.0.zip
  • Windows : certutil -hashfile zinn-whmcs-1.0.0.zip SHA256

Vous n’utilisez pas WHMCS ?

Il existe un module HostBill ainsi qu’un client PHP en un seul fichier pour tout autre système, tous deux gratuits et disponibles sur la même page des téléchargements. Chaque point de terminaison utilisé par les modules est documenté dans la référence de l’API.

Les dernières nouveautés du blog

Ce que nous avons écrit sur l’hébergement, le SEO et la gestion de sites à grande échelle.

SEO et création de liens depuis la couche d’hébergement : Le point de vue d’un opérateur en 2026

Comment l’hébergement façonne l’indexation et le jus de lien en 2026 : maintenir les pages indexées, évaluer les domaines expirés avant de les exploiter, créer des liens sans empreinte pour les moteurs de recherche, et un aperçu honnête de ce que l’infrastructure peut et ne peut pas faire pour le SEO.

Lire l’article →

Rendre WordPress rapide et sécurisé : liste de contrôle des performances et des extensions

Une liste de contrôle pratique pour un WordPress rapide et sécurisé : mise en cache au niveau du serveur, cache d’objets par site, la poignée d’extensions utiles, maintien de la pile à jour et pages WooCommerce à ne jamais mettre en cache.

Lire l’article →

Comment choisir un hébergement web infogéré en 2026 : un guide d’achat

Ce qui différencie réellement un bon hébergement infogéré d’une machine bon marché avec panneau de configuration — migrations, sauvegardes, isolation, véritable mise en cache et mise à l’échelle honnête — et comment en juger avant de vous engager.

Lire l’article →

Lire le blog →

Vous avez encore besoin d’aide ?

Le support est inclus dans chaque forfait, le service est ouvert 24 heures par jour et vous pouvez nous écrire dans l’une de nos 58 langues ; nous vous répondons dans la vôtre.

Contacter l’assistance → Tous les articles →