Tudásbázis

Értékesítsen Zinn® webtárhelyet a HostBill, a Blesta vagy a saját rendszere segítségével

Értékesítsen Zinn® tárhelyet a HostBill, a Blesta vagy a saját rendszere segítségével: az ingyenes HostBill modul, az egyfájlos PHP kliens, a két szabály, amelynek megszegése pénzbe kerül, és a két kérelemmező, amelyet könnyű kihagyni.

Ha WHMCS-t használ, használja inkább a WHMCS-modult – ez az oldal minden másra vonatkozik. Két lehetőség áll rendelkezésre, mindkettő ingyenes és mindkettő GPL-2.0-or-later licencű.

HostBill

Egy tárhelymodul, amely ugyanazt a hat műveletet tartalmazza, mint a WHMCS-modul.

  1. Töltse le, majd csomagolja ki.
  2. Töltse fel a zinn könyvtárat a includes/modules/Hosting/ mappába, hogy a fájlok a includes/modules/Hosting/zinn/class.zinn.php és a includes/modules/Hosting/zinn/ZinnHostBillClient.php helyre kerüljenek.
  3. Settings → Modules → Hosting, aktiválja a Zinn Digital® modult, majd adjon hozzá egy kapcsolatot:
  • API address: https://api.zinndigital.com
  • API key: az Ön Zinn® API-kulcsa (ez egy password mező, így a HostBill titkosítva tárolja)
  1. A terméknél állítsa be a Product line (pl. mainstream), a Stack (alapértelmezetten wordpress), valamint opcionálisan az Application és a PHP version értékét.
  2. Nyomja meg a Test connection gombot.

⛔ Ne nevezze át a zinn könyvtárat. A HostBill betöltője a könyvtár nevéből vezeti le a keresett osztályt, így az átnevezés olyan modult eredményez, amelyet a vezérlőpult kilistáz, de soha nem hív meg.

Minden más – a PHP-kliens

Egyetlen fájl, nincsenek függőségek, nincsenek vezérlőpulttal kapcsolatos feltételezések. Helyezze el a ZinnProvisioning.php fájlt a saját kódjában, és hívjon meg hat metódust.

require_once 'ZinnProvisioning.php';

$zinn = new ZinnProvisioning(getenv('ZINN_API_KEY'));

// When an order is paid — once per CUSTOMER, then once per SERVICE:
$orgId  = $zinn->account('customer-4211', 'Acme Ltd');
$siteId = $zinn->provision('service-9915', $orgId, 'acme.com', 'mainstream', 'wordpress');
// Store $orgId against your customer and $siteId against your service.

$zinn->suspend($siteId, 'INV-2026-114 unpaid');   // an invoice goes unpaid
$zinn->unsuspend($siteId);                        // they pay
$zinn->terminate($siteId);                        // they cancel — schedules a deletion

// When they click "log in to my hosting" — mint it on the CLICK, never on page render:
header('Location: ' . $zinn->signInLink($siteId));

Nem PHP-ban fejleszt? Ugyanezek a hívások megtalálhatók az API-referenciában, és bármilyen nyelvből meghívhatók.

Az API-kulcs

Hét jogosultság, és semmi több: org.create, org.read, sites.create, sites.view, sites.delete, reseller.view, reseller.provision.

⛔ Nem a reseller.manage. Egy számlázási felületre bemásolt kulcsnak képesnek kell lennie felfüggeszteni egy ügyfelet nemfizetés miatt, és bejelentkeztetni őt; de nem szabad engedélyezni számára a saját fizetési átjáró hitelesítő adatainak átírását.

A két szabály, amely pénzbe kerül, ha megszegik őket

  1. A fiókot az ÜGYFÉLHEZ, a webhelyet pedig a SZOLGÁLTATÁSHOZ rendelje kulcsként. Az ügyfél második megrendelésének a már meglévő fiókjába kell kerülnie. Ha mindkettőt a szolgáltatáshoz rendeli kulcsként, egyetlen ügyfél három egymástól független fiókkal és három különálló vezérlőpulttal fog rendelkezni.
  2. Minden létrehozáskor küldjön egy idempotencia-kulcsot, amelyet a saját azonosítójából képez az adott elemhez. Minden számlázási rendszer újrapróbálkozik – egy fizetési átjáró visszahívása kétszer érkezik meg, egy adminisztrátor újra lefuttat egy sikertelen kiosztást, egy ügyfél duplán kattint. Enélkül a második kísérlet egy második webhelyet hoz létre, és ezt kiszámlázzák Önnek. Mindkét modul és a PHP-kliens automatikusan elvégzi ezt Ön helyett; ha közvetlenül hívja az API-t, küldje el a(z) Idempotency-Key fejlécet.

Három mező, amelyet könnyű kihagyni

Mindegyik egy teljes műveletet tesz működésképtelenné, és egyik sem jelenik meg másként, mint érvényesítési hibaként – kivéve az elsőt, amely egyáltalán semmilyen módon nem jelenik meg:

  • ⛔⛔ Az ügyfelet egy díjcsomaghoz KELL rendelni, MIELŐTT az első webhelyét üzembe helyeznék, a POST /v1/reseller/clients/{orgId}/plan használatával, a hozzá tartozó subscription_id értéket pedig átadva a POST /v1/sites kérésnek. Ennél az esetnél nincs hibaüzenet, amit le lehetne olvasni. Egy új ügyfélfiók nem tartalmaz előfizetést, és a POST /v1/sites nem rendelkezik terv mezővel, így az anélkül kiépített webhelyhez egyáltalán nem tartozik csomag: az Ön nagykereskedelmi elszámolása az ügyfelei aktív előfizetései alapján készül, így nem jön létre tétel, és a Zinn® semmit sem számláz Önnek, amíg a tárhely működik; az ügyfele nem örököl kereteket, így nem vonatkozik kvóta a webhelyére; és nincs semmi, amit egy frissítés módosíthatna. A megrendelés 201-es választ ad, a webhely létrejön, és kifogástalanul működik. Egyik végpont sem jelez semmit ebből.

A sorrend számít: a POST /v1/sites azt az előfizetést rögzíti, amely a futásának pillanatában létezik, így az utólag beállított csomag nem kapcsolódik visszamenőlegesen.

  • A POST /v1/sites megköveteli a stack_type meglétét. Hagyja el, és egyetlen megrendelés sem lesz sikeres.
  • A DELETE /v1/sites/{siteId} egy {"confirm_domain": "<the site's own domain>"} törzset igényel — egy begépelt megerősítést, mivel ez a destruktív művelet. Hagyja el, és egyetlen lemondás sem lesz sikeres, így a szolgáltatás tovább működik, és Önnek továbbra is számlázzák azt. A saját nyilvántartása helyett a GET /v1/reseller/services/{siteId} végpontról olvassa vissza a domaint: a rendszer a webhely saját elsődleges domainjéhez hasonlítja, soha nem egy alias névhez.

Olvassa el a teljes hibát, ne csak a mondatot

Az érvényesítés elutasítási üzenete szándékosan általános — "The request was well-formed but failed validation." —, mivel a cselekvésre alkalmas rész a details mezőben van, amely megnevezi a mezőt és az okot. Mindkét modul és a PHP-kliens is hozzáfűzi azt az adminisztrátornak megjelenített üzenethez. Ha Ön közvetlenül hívja az API-t, olvassa el az error.details mezőt; egyes bejegyzések egy teljes mondat helyett csak egy puszta értéket tartalmaznak, így jut el Önhöz a max_sites: 0, amikor a viszonteladói csomagjában nincs több hely.

Az első megrendelése előtt

Az ügyfelei által vásárolt webhelyek beleszámítanak az Ön viszonteladói csomagjának webhelykeretébe, ezért olyan csomagra van szüksége, amelyben van még hely. Egy kapcsolati teszt ezt nem képes észlelni — beolvassa az Ön programját, de nem helyez üzembe semmit —, így egy olyan működő fiókot jelez, amelyből még nem lehet értékesíteni. A keret nélkül leadott megrendelést a rendszer elutasítja egy pontosan ezt leíró üzenettel.

Ellenőrizze a letöltését

Mindkét archívumot TLS-en keresztül, a saját hosztnevünkről szolgáljuk ki, soha nem irányítjuk át máshová, és a SHA-256 ellenőrző összegeik a letöltési linkek mellett találhatók a letöltési oldalon.

Legfrissebb a blogról

Amit a tárhelyszolgáltatásról, a SEO-ról és a webhelyek nagy léptékű működtetéséről írtunk.

SEO és linképítés a tárhelyréteg felől: Egy üzemeltető szemszöge 2026-ban

Hogyan alakítja a tárhely az indexelést és a linkértéket 2026-ban: az oldalak indexben tartása, a korosodott domainek ellenőrzése a tartalomépítés előtt, linképítés keresőmotoros lábnyom nélkül, és őszinte áttekintés arról, hogy az infrastruktúra mit tehet és mit nem tehet meg a SEO-ért.

Bejegyzés elolvasása →

A WordPress gyorsabbá és biztonságosabbá tétele: Teljesítmény- és bővítmény-ellenőrzőlista

Gyakorlati ellenőrzőlista a gyors és biztonságos WordPress-hez: kiszolgálószintű gyorsítótárazás, webhelyenkénti objektum-gyorsítótár, a maroknyi futtatásra érdemes bővítmény, a technológiai verem naprakészen tartása és a WooCommerce-oldalak, amelyeket soha nem szabad gyorsítótárazni.

Bejegyzés elolvasása →

Hogyan válasszunk menedzselt webtárhelyet 2026-ban: Útmutató vásárlóknak

Mi különbözteti meg valójában a jó menedzselt tárhelyet egy olcsó, vezérlőpulttal ellátott doboztól — migrációk, biztonsági mentések, elszigetelés, valódi gyorsítótárazás és őszinte skálázhatóság — és hogyan ítélheti meg, mielőtt elkötelezné magát.

Bejegyzés elolvasása →

Olvassa el a blogot →

Még mindig elakadt?

A támogatás minden csomag része, az ügyfélszolgálat a nap 24 órájában rendelkezésre áll, és a 58 támogatott nyelvünk bármelyikén írhat nekünk – mi a ön nyelvén válaszolunk.

Kapcsolatfelvétel az ügyfélszolgálattal → Összes cikk →