Haddii aad maamusho WHMCS, isticmaal module-ka WHMCS beddelkeeda — boggani waxa uu u gaar yahay wax kasta oo kale. Waxaa jira laba ikhtiyaar, labaduba waa bilaash labadubana waa GPL-2.0-or-later.
HostBill
Module martigelinta ah oo leh isla lixda tallaabo ee midka WHMCS.
- Soo deji oo kala bixi.
- Geli galka
zinn gudaha includes/modules/Hosting/ si faylashu u galaan includes/modules/Hosting/zinn/class.zinn.php iyo includes/modules/Hosting/zinn/ZinnHostBillClient.php.
- Settings → Modules → Hosting, fur Zinn Digital®, oo ku dar xiriir:
- API address:
https://api.zinndigital.com
- API key: furahaaga API ee Zinn® (goob
password ah, sidaas darteed HostBill waxa uu ku kaydiyaa isagoo sir ah)
- Xagga alaabta deji Product line (tusaale
mainstream), Stack (wordpress marka caadiga ah), iyo ikhtiyaar ahaan Application iyo PHP version.
- Riix Test connection.
⛔ Ha beddelin magaca galka zinn. Qaybta wax soo qaada ee HostBill waxay fasalka ay raadinayso ka soo dheegataa magaca galka, sidaas darteed magac-beddelku wuxuu keenayaa module uu koontaroolku liis gareeyo balse aan marnaba la wicin.
Wax kasta oo kale — macmiilka PHP
Hal fayl, ma laha waxyaabo ku tiirsan, ma laha malo-awaal koontarool. Ku rid ZinnProvisioning.php kaydkaaga koodhka oo wac lix hab.
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));
Miyaanad qorayn PHP? Isla wicitaanadaas waxay ku jiraan tixraaca API waxaanad kaga samayn kartaa wax kasta.
Furaha API
Toddobo oggolaansho, wax intaas ka badanna ma jiraan: org.create, org.read, sites.create, sites.view, sites.delete, reseller.view, reseller.provision.
⛔ Ma aha reseller.manage. Fure aad ku dhejiso koontaroolka qaansheegta waa inuu awoodaa inuu u hakiyo macmiilka lacag-bixin la'aan dartiis ugana saxiixo gudaha; ma aha inuu awoodo inuu dib u qoro xogtaada marin-bixinta.
Labada xeer ee keena kharash marka la jabiyo
- Ku xidh akoonka CUSTOMER-kaaga, goobtana ku xidh SERVICE-kaaga. Dalabka labaad ee macmiilka waa inuu galaa akoonka uu hore u lahaa. Haddii labadaba lagu xidho adeegga, hal macmiil wuxuu ku dambaynayaa saddex akoon oo aan xidhiidh lahayn iyo saddex koontarool oo kala duwan.
- Soo dir furaha idempotency abuuris kasta, kaas oo laga soo dheegtay id-gaaga u gaarka ah shayga. Nidaam kasta oo qaansheegtu dib ayuu wax u isku dayaa — jawaabta marinka ayaa laba jeer timaadda, maamulaha ayaa dib u socodsiiya adeeg-bixin fashilantay, macmiilka ayaa laba jeer gujiya. La'aantiis isku-dayga labaad wuxuu abuuraa degel labaad waxaana lagugu dallacayaa kharashkeeda. Labada module iyo macmiilka PHP labaduba adiga ayay kuu qabtaan tan; haddii aad si toos ah u wacayso API-ga, dir
Idempotency-Key.
Saddex goobood oo ay fududahay in laga tago
Middani mid kasta waxay jebisaa ficil dhan, mana jirto mid u soo baxda wax aan ahayn khalad ansaxin — marka laga reebo tan koowaad, oo u soo baxda sida waxba gabi ahaanba:
- ⛔⛔ Macmiilka waa in la geliyaa qorshe KA HOR inta aan goobtooda koowaad la diyaarinin, iyadoo la adeegsanayo
POST /v1/reseller/clients/{orgId}/plan, oo subscription_id-keedana loo gudbiyo POST /v1/sites. Tani waa midda aan lahayn wax khalad ah oo la akhriyo. Akoon macmiil oo cusub ma haysto wax rukumasho ah oo POST /v1/sites ma laha goob qorshe, sidaas darteed goob la diyaariyay iyadoon midna lahayn waxay sidataa qorshe la'aan gabi ahaanba: bayaankaaga jumladlaha waxaa laga dhisaa rukumashooyinka tooska ah ee macmiishaada, sidaas darteed wax khad ah lama soo saaro oo Zinn® waxba kaama qaado inta martigelintu socoto; macmiilkaagu ma dhaxlo wax gunnooyin ah, sidaas darteed wax kooto ah laguma dabaqo goobtooda; sidoo kale ma jirto wax kor-u-qaadis ahi beddeli karto. Dalabku wuxuu soo celiyaa 201, goobtuna way diyaarsantaa, si fiicanna way u shaqaysaa. Waxba dhinacna kama soo sheegaan arrintaas.
Isku xigxiga ayaa muhiim ah: POST /v1/sites waxay diiwaangelisaa rukumasho kasta oo jirta xilliga ay shaqaynayso, sidaas darteed qorshe la sameeyo gadaashii dib uguma xidhmo si dambe.
POST /v1/sites waxay u baahan tahay stack_type. Haddii aad ka tagto ma jiro dalab guulaysan kara.
- **
DELETE /v1/sites/{siteId} waxay u baahan tahay qaab-dhismeedka `{"confirm_domain": "<the site's own
domain>"}** — xaqiijin la qoray, sababtoo ah tani waa falka wax burburiya. Haddii aad ka tagto ma jirto wax joojin ah oo guulaysan karta, markaa adeeggu wuu sii soconayaa adigana lacag ayaa lagugu sii dalacayaa. Dib uga akhri goobta magaceeda GET /v1/reseller/services/{siteId}` halkii aad ka isticmaali lahayd diiwaankaaga gaarka ah: waxaa la barbar-dhigaa goobta magaceeda koowaad ee gaarka ah ee waligeed lama barbar-dhigo naanaysta.
Akhri dhammaan khaladka, ma aha oo kaliya jumladda
Farriinta diidmada hubinta ujeedo ahaan waa mid guud — "The request was well-formed but failed validation." — sababtoo ah qaybta wax laga qaban karo waxay ku jirtaa details, taas oo magacawda goobta iyo sababta. Labada qaybood iyo macmiilka PHP labaduba waxay ku daraan farriinta ay tusaan maamulahaaga. Haddii aad adiguba wacaysid API-ga, akhri error.details; qoraallada qaarkood waxay wataan qiime madhan halkii ay noqon lahaayeen jumlad, taas oo ah sida max_sites: 0 ay kuu soo gaadho marka qorshahaaga dib-u-iibiyuhu aanu meel lahayn.
Ka hor dalabkaaga koowaad
Goobaha ay macmiishaadu iibsadaan waxay ka go'ayaan gunnada goobta ee qorshahaaga dib-u-iibiyaha adigay kugu socotaa, markaa waxaad u baahan tahay qorshe boos ku jiro. Tijaabada xidhiidhku ma ogaan karto tan — waxay akhridaa barnaamijkaaga waxbana ma diyaariso — sidaas darteed waxay soo sheegaysaa akoon caafimaad qaba oo aan wali wax iibin karin. Dalab la gudbiyo iyadoon wax gunno ahi jirin waa la diidayaa iyadoo la raacinayo farriin si sax ah taas sheegaysa.
Xaqiiji soo-dejintaada
Labada kayd waxa looga adeegaa TLS xagga magaca martigeliyaha ee aanaga noo gaarka ah, waligoodna meel kale looma weeciyo, iyadoo jeegagooda SHA-256 lagu daabacay dhinaca xidhiidhiyayaasha soo-dejinta ee ku yaalla bogga soo-dejinta.