Revindeți găzduirea noastră. Clienții dumneavoastră vă aparțin: prețurile dumneavoastră, facturile dumneavoastră, procesatorul dumneavoastră de plăți. Iată cum puteți controla platforma noastră direct din sistemul pe care îl rulați deja — un panou de facturare, propriul site WordPress sau un script.
Ce văd efectiv clienții dumneavoastră
Înainte de detaliile tehnice: clienții dumneavoastră nu trebuie să ne vadă niciodată. Trei interfețe, iar dumneavoastră alegeți pe care o folosiți.
| Interfață | Cui îi aparține |
|---|
| Panoul de găzduire, pe propriul hostname | Setați un hostname pentru panou la Reselling → Your brand, iar clienții dumneavoastră se vor autentifica la panel.yourcompany.com cu sigla și culorile dumneavoastră. Același panou, adresa dumneavoastră. |
| Propriul site web | Modulul de WordPress adaugă pe site-ul dumneavoastră căutarea de domenii și un link de autentificare printr-un clic, preluând comanda prin propria finalizare a comenzii WooCommerce. |
| Panoul dumneavoastră de facturare | WHMCS sau HostBill rămâne punctul principal de acces; modulul alocă resursele în fundal, iar butonul din zona de client îi conectează direct în contul lor de găzduire. |
⛔ Indiferent de opțiunea aleasă, dumneavoastră sunteți comerciantul oficial pentru clienții dumneavoastră: prețurile dumneavoastră, facturile dumneavoastră, codul dumneavoastră de TVA, procesatorul dumneavoastră de plăți. Noi vă facturăm pe dumneavoastră, o singură dată pe lună, la preț de distribuitor.
După ce ați setat un hostname pentru panou, introduceți-l în câmpul Panel address al modulului de WordPress și nicăieri altundeva — linkurile de autentificare generate de acest API îl vor prelua automat.
Cele patru modalități de acces
Există patru modalități de acces și toate realizează același lucru în fundal:
| Pentru |
|---|
| Modulul WHMCS | Un magazin WHMCS |
| Modulul HostBill | Un magazin HostBill |
| Modulul WordPress | Vânzarea direct de pe propriul site WordPress sau WooCommerce |
| API-ul | Orice altceva — Blesta, un sistem intern, un script cron |
1. Obțineți o cheie API
În panoul dumneavoastră de control, mergeți la API keys și creați una. Acordați-i doar permisiunile strict necesare:
| Permisiune | Motiv |
|---|
org.read | Citirea conturilor clienților dumneavoastră |
sites.create | Alocarea unui site |
sites.view | Citirea unui serviciu |
sites.delete | Rezilierea |
reseller.view | Listarea serviciilor dumneavoastră și citirea utilizării |
reseller.provision | Suspendarea, reactivarea și autentificarea unui client |
⛔ Nu acordați unei integrări permisiunea reseller.manage. Această permisiune permite modificarea listei dumneavoastră de prețuri și a propriilor credențiale pentru gateway-ul de plată. reseller.provision există tocmai pentru ca o cheie inserată într-un panou de facturare sau pe un site web să nu aibă nevoie de aceste drepturi.
Cheia este afișată o singură dată. Stocați-o în același loc în care păstrați celelalte credențiale — niciodată într-un fișier distribuit public de serverul dumneavoastră web.
2. Efectuați primul apel
curl https://api.zinndigital.com/v1/reseller/services \
-H "Authorization: Bearer zdk_live_…"
Acesta returnează fiecare serviciu pe care l-ați alocat, câte un rând per site, indicând clientul căruia îi aparține, starea acestuia și tariful pe care îl percepeți. Pentru un cont nou, se returnează o listă goală — ceea ce reprezintă răspunsul corect, nu o eroare.
3. Întreaga integrare, în șase apeluri
CÂND APEL
o comandă este achitată POST /v1/orgs o dată per CUSTOMER
POST /v1/sites o dată per SERVICE
plata nu a fost efectuată POST /v1/reseller/services/{siteId}/suspend
plata a fost efectuată POST /v1/reseller/services/{siteId}/unsuspend
se anulează DELETE /v1/sites/{siteId}
„autentificare în găzduire” POST /v1/reseller/services/{siteId}/sso
Alocarea resurselor implică două apeluri, iar identificatorii sunt esențiali:
# 1. contul clientului — având drept cheie id-ul DUMNEAVOASTRĂ de client
curl -X POST https://api.zinndigital.com/v1/orgs \
-H "Authorization: Bearer zdk_live_…" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: account-4211" \
-d '{"type":"customer","name":"Acme Ltd"}'
# 2. site-ul acestuia — având drept cheie id-ul DUMNEAVOASTRĂ de serviciu
curl -X POST https://api.zinndigital.com/v1/sites \
-H "Authorization: Bearer zdk_live_…" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: service-9915" \
-d '{"org_id":"<from step 1>","product_line":"mainstream","primary_domain":"acme.com"}'
Două reguli care generează costuri dacă sunt aplicate greșit
- Stabiliți cheia contului în funcție de CLIENT și cheia site-ului în funcție de SERVICIU. A doua comandă a unui client trebuie să fie asociată contului pe care acesta îl deține deja. Dacă le asociați pe ambele după serviciu, un singur client va avea trei conturi distincte și trei panouri separate.
- Trimiteți un antet
Idempotency-Key la fiecare cerere POST, generat din propriul id asociat elementului. Fiecare sistem de facturare reîncearcă operațiunile — un callback de gateway sosește de două ori, un administrator repornește o alocare eșuată, un client apasă de două ori pe buton. Fără această cheie, a doua încercare generează un al doilea site, iar acesta vă va fi facturat.
Trei răspunsuri pe care nu trebuie să le confundați
unsuspend poate returna 409. Acest lucru înseamnă că site-ul este blocat de echipa noastră de abuzuri, nu de dumneavoastră. Afișați mesajul; nu reîncercați operațiunea.
- **Rezilierea programează o ștergere, nu o execută instantaneu.** Data este returnată sub forma
pending_deletion_at. Să informați un client că datele sale au fost deja eliminate, când acest lucru nu s-a întâmplat, este mai grav decât să nu îi spuneți nimic.
disk_used_bytes poate fi null, iar null nu înseamnă zero. Acest lucru indică faptul că spațiul nu a putut fi măsurat, nu că nu a fost utilizat nimic. Ignorați-l — nu înregistrați 0 în propriile evidențe, altfel îi veți arăta clientului o bară verde de utilizare pentru un site despre care nu dețineți nicio măsurătoare.
4. Autentificați un client
POST /v1/reseller/services/{siteId}/sso returnează un URL de unică folosință care conectează direct clientul în propriul său cont, gata autentificat.
⛔ Generați-l doar în momentul în care utilizatorul dă clic, niciodată la randarea paginii. Linkul este de unică folosință și expiră în câteva minute; așadar, un link inclus direct în codul paginii este invalidat la prima afișare a acesteia și rămâne salvat în fiecare nivel de memorie cache dintre dumneavoastră și browser.
5. Instalați un modul în schimb
- WHMCS — copiați modulul în
modules/servers/zinn/, adăugați un server la care Password este cheia dumneavoastră API și stabiliți linia de produse asociată produsului. Apăsați pe Test Connection: va trimite un apel real și vă va comunica răspunsul platformei.
- HostBill — copiați în
includes/modules/Hosting/zinn/ și conectați-l în același mod.
- WordPress — Zinn® Reseller Toolkit: căutare de domenii, link de autentificare în găzduirea clienților dumneavoastră și alocare prin WooCommerce la achitarea unei comenzi. Sursă deschisă la <https://github.com/Zinn-Digital/zinn-reseller-toolkit>, sau descărcați-l din secțiunea Plugins din panoul dumneavoastră de control.
6. Lansarea oficială
Verificați următoarele înainte de a prelua o comandă reală:
- Testul de conexiune reușește în modul, sau prima dumneavoastră comandă
curl returnează o listă.
- Lista dumneavoastră de prețuri este configurată (Reselling → Your prices).
- Gateway-ul dumneavoastră de plată este conectat (Reselling → Payment gateways) — clienții vă plătesc dumneavoastră, prin propriul cont.
- Datele companiei dumneavoastră sunt completate (Reselling → Your company), astfel încât facturile emise clienților să conțină entitatea dumneavoastră juridică și codul dumneavoastră de TVA, nu ale noastre.
- Ați plasat o comandă reală cap-coadă și ați confirmat crearea site-ului.
Unde găsiți restul informațiilor
Documentația completă de referință a API-ului — fiecare endpoint, generat direct din specificația noastră, împreună cu permisiunile necesare pentru fiecare — este disponibilă la <https://zinndigital.com/developers/api>.