Modulul Zinn Digital® transformă butoanele proprii ale WHMCS în acțiuni reale pe platforma noastră. O comandă aprovizionează găzduirea clientului dumneavoastră. Automatizarea WHMCS pentru facturi restante o suspendă. Marcarea facturii ca plătită o reactivează. Anularea programează ștergerea. Iar clientul dumneavoastră primește un buton Autentificare în panoul de găzduire în zona sa de client, care îl conectează direct.
Este gratuit, licențiat GPL-2.0-or-later și nu are o cale privilegiată în platforma noastră: fiecare apel pe care îl efectuează este un endpoint documentat pe care l-ați putea apela dumneavoastră înșivă cu propria cheie API.
Înainte de a începe
Aveți nevoie de două lucruri, iar al doilea îi ia prin surprindere pe mulți.
- Un cont de revânzător Zinn® cu un program activ. Înregistrați-vă la
zinndigital.com și activați revânzarea.
- Un plan de revânzător cu alocare pentru site-uri. Site-urile pe care le comandă clienții dumneavoastră se scad din planul
dumneavoastră, așa că aveți nevoie de unul cu spațiu disponibil.
⚠️ Test Connection nu vă poate spune dacă o comandă va reuși. Acesta vă citește programul și nu aprovizionează nimic, astfel încât raportează un cont active sănătos care nu poate încă să vândă nimic. Dacă prima dumneavoastră comandă eșuează cu „This organization has no hosting plan, so it cannot host a site yet”, exact asta s-a întâmplat — cumpărați sau extindeți planul dumneavoastră de revânzător și plasați comanda din nou. Nu este nicio problemă cu modulul.
1. Creați cheia API
În panoul de control Zinn®, deschideți API keys și creați una cu exact aceste unsprezece permisiuni:
| Permisiune | De ce este necesară |
|---|
org.create | Deschide contul Zinn® al clientului dumneavoastră la prima sa comandă. |
org.read | Citește conturile clienților dumneavoastră. |
sites.create | Aprovizionează site-ul. |
sites.view | Citește un serviciu și utilizarea acestuia. |
sites.delete | Reziliază. |
reseller.view | Listează ceea ce ați vândut și citește discul și lățimea de bandă. |
reseller.provision | Suspendă, reactivează, autentifică un client, îi setează planul și îi modifică pachetul. |
billing.view | Citește cât ar costa un upgrade înainte de a-l efectua. |
sites.manage | Golește memoria cache și generează o copie de rezervă din butoane. |
sites.panel_access | Schimbă parola administratorului WordPress. |
hosting.php.manage | Schimbă versiunea PHP la un upgrade sau downgrade. |
⛔ Nu acordați reseller.manage. O cheie introdusă într-un panou de facturare ar trebui să poată suspenda un client pentru neplată și să îl autentifice. Nu ar trebui să poată citi și suprascrie datele dumneavoastră de conectare la gateway-ul de plată. reseller.provision există pentru a nu fi nevoie să o acordați pe cea mai extinsă. ⛔ org.create nu este opțională. Fără aceasta, modulul vă poate citi conturile, dar nu poate deschide unul, astfel încât Test Connection trece cu succes, iar prima comandă răspunde cu 403. ⛔⛔ Acordați întregul tabel și rețineți că Test Connection nu vă poate spune dacă nu ați făcut-o. Acesta vă citește programul de revânzător și nu aprovizionează nimic, deci este verde pentru o cheie căreia îi lipsește oricare dintre acestea. Ceea ce primiți în schimb este o eroare 403 la singura operațiune pe care permisiunea lipsă o acoperă, luni mai târziu, de la un client.
2. Instalați modulul
- Descărcați modulul și dezarhivați-l.
- Încărcați directorul
zinn în instalarea dumneavoastră WHMCS, astfel încât fișierul modulului să ajungă la
modules/servers/zinn/zinn.php.
⛔ Directorul trebuie să se numească zinn. WHMCS derivă numele funcțiilor unui modul de aprovizionare din numele directorului său, astfel încât redenumirea lui în zinn-whmcs sau zinndigital generează un modul pe care WHMCS îl listează, vă permite să îl selectați și apoi nu îl apelează niciodată — fără nicio eroare nicăieri. Arhiva zip se dezarhivează deja cu numele corect; pur și simplu nu o redenumiți.
3. Adăugați serverul
În WHMCS: Configuration → System Settings → Servers → Add New Server.
- Name: orice, de exemplu
Zinn Digital®
- Hostname:
api.zinndigital.com
- Type:
Zinn Digital®
- Password: cheia dumneavoastră API de la pasul 1
⛔ Cheia se introduce în câmpul Password, pe care WHMCS îl stochează criptat. Nu o introduceți într-o opțiune de configurare a produsului — acelea sunt text simplu în baza de date și vizibile pentru fiecare administrator, iar aceste credențiale pot crea și distruge găzduirea clienților dumneavoastră.
Apăsați Test Connection. Efectuează un apel real și raportează răspunsul platformei noastre, în loc să verifice doar dacă sunt completate câmpurile.
4. Creați produsul
Configuration → System Settings → Products/Services, apoi setați Module Settings la serverul pe care tocmai l-ați adăugat. Câmpurile sunt:
| Câmp | Obligatoriu | Ce reprezintă |
|---|
| Product line | da | Linia Zinn® pe care o vindeți — mainstream (WordPress gestionat), footprint_free, wordpress, linux, cloud, agency, app_hosting, ai_hosting, lms_hosting, managed_database, vector_hosting, zinn_compute, fleet_linux, fleet_enterprise, mail sau reseller. |
| Stack | da | Ce se construiește: wordpress (implicit), woocommerce, php, static, node, one_click, headless_cms, nextcloud sau owncloud. |
| Application | nu | Doar pentru stack-urile one_click și headless_cms — ce aplicație să se instaleze. Menționarea uneia pe orice alt stack este refuzată, deoarece acel stack decide deja ce se instalează. |
| PHP version | nu | de exemplu 8.3. Lăsați gol pentru valoarea implicită a liniei. O versiune pe care linia nu o oferă este refuzată împreună cu lista celor disponibile. |
| Plan code | da | Planul Zinn® pe care îl vinde acest produs. GET /v1/reseller/prices le listează pe ale dumneavoastră. O comandă fără acesta este refuzată — consultați avertismentul de mai jos. |
| Billing interval | nu | monthly (implicit) sau annual — intervalul la care se emite linia dumneavoastră en-gros pentru acest client. Ceea ce facturați propriului client este setat pe produsul WHMCS și nu este afectat. |
⛔⛔ Plan code este obligatoriu, iar o comandă fără acesta este refuzată în mod deliberat. Până la 2026-09-01, câmpul era decorativ și nimic nu îl citea, așa că modulul comanda găzduire care nu avea niciun plan atașat — și fiecare consecință a acestui fapt a fost silențioasă. Extrasul dumneavoastră en-gros este construit din abonamentele active ale clienților dumneavoastră, astfel încât nu exista nicio linie pentru serviciu și nu vi s-a facturat nimic pe toată durata funcționării acestuia; clientul dumneavoastră nu a moștenit nicio alocare, așa că nu a fost aplicată nicio cotă de disc sau de fișiere site-ului său; iar Change Package nu avea ce să modifice, așa că un upgrade pe care l-ați vândut nu a putut fi efectuat. Site-ul a fost aprovizionat și a funcționat impecabil în tot acest timp.
Modulul refuză acum comanda în schimb, deoarece nu există un plan sigur pe care să îl poată ghici: o ghicire ar aproviziona găzduirea pe un plan pe care nu l-ați ales și este posibil să nu îl fi tarifat, și — spre deosebire de un refuz, pe care îl citiți imediat — ar ieși la iveală doar atunci când sosește un extras, dacă ar fi cazul.
Setați Auto Setup după cum preferați — modulul este idempotent pe ID-ul serviciului WHMCS, așa că o reîncercare de aprovizionare returnează același site în loc să vă factureze pentru un al doilea.
Ce face fiecare acțiune WHMCS
| Acțiune WHMCS | Ce se întâmplă de partea noastră |
|---|
| Create | Creează contul Zinn® al clientului (sau îl reutilizează pe cel pe care îl are deja) și îi aprovizionează site-ul. |
| Suspend | Plasează site-ul într-o suspendare pentru neplată. Conținutul este păstrat; nimic nu este șters. |
| Unsuspend | Anulează suspendarea dumneavoastră. |
| Terminate | Programează ștergerea site-ului, cu o perioadă de grație. Data este afișată în zona de client. |
| Usage update | Actualizează spațiul pe disc și lățimea de bandă pentru fiecare serviciu, o dată pe zi. |
| Log in to hosting panel | Deschide un link de autentificare unic, de unică folosință, direct în panoul clientului dumneavoastră. |
| Change Package | Face upgrade sau downgrade serviciului. Modifică pachetul și versiunea PHP dacă noul produs specifică una. |
| Change Password | Setează parola administratorului WordPress. Câmpul nu apare pe stack-urile care nu au un astfel de cont. |
| Renew | Confirmă că serviciul încă există. Găzduirea Zinn® este continuă, deci nu există un termen la distanță de prelungit. |
| Sync Usage / Purge Cache / Take Backup | Butoane pe pagina de administrare a serviciului. Clientul dumneavoastră primește Purge Cache și Take Backup în zona sa de client. |
| Service tab | Stare, plan, disc, lățime de bandă, orice ștergere programată și cine a aplicat o suspendare. |
| Import | ListAccounts citește fiecare pagină, astfel încât un import nu se poate opri silențios la prima. |
Upgrade-uri: cine pe cine facturează
Clientul dumneavoastră nu este niciodată facturat de Zinn®, nici la o comandă, nici la un upgrade. Îl facturați dumneavoastră prin WHMCS; noi vă facturăm pe dumneavoastră, pe extrasul dumneavoastră en-gros. Așadar, o acțiune Change Package modifică drepturile clientului dumneavoastră și linia din următorul dumneavoastră extras, fără a atinge niciun card — WHMCS a încasat deja banii clientului dumneavoastră și a calculat propria proratare.
Al doilea serviciu al unui client. Pe același plan este un alt site din cadrul alocării proprii de site-uri a acelui plan și nu se acordă nimic în plus. Pe un plan diferit este refuzat: înlocuirea planului activ ar lăsa unul dintre cele două servicii nefacturat. Fie le vindeți pe ambele pe același plan, fie configurați clientul ca o înregistrare separată de client în WHMCS.
Change Password există doar pentru WordPress. Găzduirea Zinn® nu are o „parolă de serviciu” unică — clientul dumneavoastră ajunge în panoul său prin butonul de autentificare — iar un site php sau static nu are niciun cont de aplicație de modificat. WHMCS ascunde câmpul complet în loc să afișeze unul care nu poate funcționa.
Trei răspunsuri pe care nu trebuie să le reduceți la două
- Unsuspend poate răspunde cu un refuz. Aceasta înseamnă că site-ul a fost suspendat de echipa noastră
responsabilă cu abuzurile, nu de dumneavoastră, și niciun panou de facturare nu îl poate reactiva. Mesajul precizează acest lucru; arătați-l administratorului dumneavoastră în loc să reîncercați.
- Terminate programează o ștergere, nu o efectuează pe loc. Data este returnată ca
pending_deletion_at, iar zona de client o afișează. Să spuneți unui client că datele sale au dispărut deja când nu este așa este mai rău decât să nu îi spuneți nimic.
- Discul și lățimea de bandă pot fi necunoscute, iar necunoscut nu înseamnă zero. Când nu am putut efectua
o citire, modulul lasă valoarea neschimbată în loc să scrie 0 — altfel WHMCS ar afișa clientului dumneavoastră o bară de utilizare goală, înșelător de liniștitoare, pentru un site de la care nu avem nicio citire.
Depanare
Test Connection trece cu succes și prima comandă eșuează cu o eroare de permisiuni. Cheii API îi lipsește org.create. Modulul trebuie să deschidă contul clientului înainte de a putea să îi creeze site-ul.
O comandă eșuează menționând că organizația nu are un plan de găzduire. Planul dumneavoastră de revânzător nu mai are alocare disponibilă pentru site-uri sau nu dețineți încă unul. Consultați Înainte de a începe de mai sus.
O comandă eșuează menționând un stack. Câmpul Stack de pe produs este gol sau specifică ceva ce noi nu construim. Setați-l la wordpress, cu excepția cazului în care vindeți altceva.
Anulările eșuează. Asigurați-vă că folosiți versiunea de modul 1.0.0 sau o versiune ulterioară. Compilările anterioare nu trimiteau nicio confirmare de ștergere și fiecare reziliere era refuzată, ceea ce lăsa serviciul activ și taxabil.
Un refuz care indică un câmp. Erorile noastre de validare indică câmpul și motivul în paranteze după mesaj, de exemplu (php_version: 7.2 is not offered on this product line). Aceasta este jumătatea acționabilă — propoziția din fața ei este generică în mod deliberat.
Verificați fișierul descărcat
Fiecare arhivă este livrată prin TLS de pe propriul nostru nume de gazdă și nu este redirecționată niciodată către o gazdă terță. Suma sa de control SHA-256 este afișată lângă linkul de descărcare de pe pagina de descărcări. Comparați-o după descărcare:
- macOS sau Linux:
shasum -a 256 zinn-whmcs-1.0.0.zip
- Windows:
certutil -hashfile zinn-whmcs-1.0.0.zip SHA256
Nu folosiți WHMCS?
Există un modul HostBill și un client PHP într-un singur fișier pentru orice altceva, ambele gratuite și ambele pe aceeași pagină de descărcări. Fiecare endpoint pe care îl folosesc modulele se află în referința API.