Ibinebenta mo muli ang aming hosting. Ang iyong mga kliyente ay sa iyo: ang iyong mga presyo, ang iyong mga invoice, ang iyong payment provider. Ganito mo pinapagana ang aming platform mula sa kahit ano mang ginagamit mo na — isang billing panel, ang sarili mong WordPress site, o isang script.
Kung ano talaga ang nakikita ng iyong mga kliyente
Bago ang mga mekanismo: hindi kailanman kailangang makita kami ng iyong mga kliyente. Tatlong surface, at ikaw ang pumipili kung alin ang gagamitin mo.
| Surface | Kanino ito |
|---|
| Ang hosting panel, sa sarili mong hostname | Magtakda ng hostname ng panel sa ilalim ng Reselling → Ang iyong brand at magsa-sign in ang iyong mga kliyente sa panel.yourcompany.com gamit ang iyong logo at ang iyong mga kulay. Parehong panel, sa iyong address. |
| Ang sarili mong website | Inilalagay ng WordPress plugin ang paghahanap ng domain at isang one-click sign-in link sa iyong site, at tinatanggap ang order sa pamamagitan ng sarili mong WooCommerce checkout. |
| Ang iyong billing panel | Ang WHMCS o HostBill ang nananatiling front door; nagpo-provision ang module sa likod nito at direktang nagsa-sign in ang button ng client-area patungo sa kanilang hosting. |
⛔ Alinman ang piliin mo, ikaw ang merchant of record para sa iyong mga kliyente: ang iyong mga presyo, ang iyong mga invoice, ang iyong VAT number, ang iyong payment provider. Sisingilin ka namin, minsan sa isang buwan, sa presyong pakyawan (wholesale).
Kapag nakapagtakda ka na ng hostname ng panel, ilagay ito sa field na Address ng panel ng WordPress plugin at wala nang iba pa — awtomatikong susunod dito ang mga sign-in link na ginagawa ng API na ito.
Ang apat na paraan papasok
May apat na paraan papasok, at pareho lang ang ginagawa ng lahat ng ito sa ilalim:
| Para sa |
|---|
| Ang WHMCS module | Isang WHMCS shop |
| Ang HostBill module | Isang HostBill shop |
| Ang WordPress plugin | Pagbebenta mula sa sarili mong WordPress o WooCommerce site |
| Ang API | Anumang iba pa — Blesta, isang in-house na sistema, isang cron script |
1. Kumuha ng API key
Sa iyong dashboard, pumunta sa Mga API key at gumawa nito. Ibigay lamang dito kung ano ang kailangan nito:
| Pahintulot | Bakit |
|---|
org.read | Basahin ang mga account ng iyong kliyente |
sites.create | Mag-provision ng isang site |
sites.view | Basahin ang isang serbisyo |
sites.delete | I-terminate |
reseller.view | Ilista ang iyong mga serbisyo at basahin ang paggamit |
reseller.provision | I-suspend, i-release, at i-sign in ang isang kliyente |
⛔ Huwag bigyan ang isang integrasyon ng reseller.manage. Ang pahintulot na iyon ay nag-e-edit ng listahan ng iyong presyo at ng iyong sariling mga kredensyal ng payment gateway. Umiiral ang reseller.provision para eksaktong hindi ito kailanganin ng isang key na ipinapaskil mo sa isang billing panel o sa isang website.
Minsan lamang ipinapakita ang key. I-store ito kung saan mo iniimbak ang iba mo pang mga kredensyal — huwag kailanman sa isang file na inihahatid ng iyong web server.
2. Gawin ang iyong unang call
curl https://api.zinndigital.com/v1/reseller/services \
-H "Authorization: Bearer zdk_live_…"
Ibinabalik niyan ang bawat serbisyong na-provision mo, isang row bawat site, kasama ang kliyenteng nagmamay-ari nito, ang status nito, at kung magkano ang sinisingil mo para dito. Sa isang bagong account, isa itong walang lamang listahan — na siyang tamang sagot, hindi isang error.
3. Ang buong integrasyon, sa anim na call
KUNG I-CALL
nabayaran ang order POST /v1/orgs minsan bawat CUSTOMER
POST /v1/sites minsan bawat SERVICE
hindi sila nagbayad POST /v1/reseller/services/{siteId}/suspend
nagbayad sila POST /v1/reseller/services/{siteId}/unsuspend
nagkansela sila DELETE /v1/sites/{siteId}
"mag-log in sa host" POST /v1/reseller/services/{siteId}/sso
Dalawang call ang pag-provision, at mahalaga ang mga key:
# 1. ang account ng customer — naka-key sa IYONG customer id
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. ang kanilang site — naka-key sa IYONG service id
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"}'
Dalawang panuntunan na magastos kapag nagkamali ka sa mga ito
- I-key ang account sa iyong CUSTOMER at ang site sa iyong SERVICE. Ang ikalawang order ng isang customer ay dapat mapunta sa account na mayroon na sila. I-key ang dalawa sa serbisyo at ang isang customer ay magkakaroon ng tatlong walang kaugnayang account at tatlong magkakahiwalay na panel.
- Magpadala ng isang
Idempotency-Key sa bawat POST, na binuo mula sa sarili mong id para sa bagay na iyon. Ang bawat billing system ay sumusubok muli — may gateway callback na dumarating nang dalawang beses, muling pinapatakbo ng admin ang isang nabigong provision, nagdo-double-click ang isang customer. Kung walang key, ang ikalawang pagsubok ay gagawa ng ikalawang site at sisingilin ka para dito.
Tatlong sagot na hindi mo dapat gawing dalawa
- Maaaring sumagot ang
unsuspend ng 409. Nangangahulugan iyon na ang aming abuse team ang nagpipigil sa site, hindi ikaw. Ipakita ang mensahe; huwag itong subukang muli.
- **Ang pag-terminate ay nag-iiskedyul ng pagbura, hindi ito nagsasagawa agad.** Bumabalik ang petsa bilang
pending_deletion_at. Ang pagsasabi sa isang customer na wala na ang kanilang data gayong hindi pa pala ay mas masahol pa kaysa sa walang sabihin sa kanila.
- Maaaring maging
null ang disk_used_bytes, at ang null ay hindi zero. Nangangahulugan itong hindi namin nagawang sukatin, hindi na walang nagamit. Laktawan ito — huwag sumulat ng 0 sa sarili mong mga talaan, kundi magpapakita ka sa isang customer ng berdeng usage bar para sa isang site na wala kang datos na nakalap.
4. I-sign in ang isang kliyente
Ang POST /v1/reseller/services/{siteId}/sso ay nagbabalik ng isang single-use na URL na direktang nagpapasok sa iyong kliyente sa kanilang sariling account, na naka-sign in na.
⛔ Gawin ito kapag nag-click sila, huwag kailanman kapag ini-render mo ang page. Ang link ay single-use at nag-e-expire sa loob ng ilang minuto, kaya ang isang link na naisulat sa isang page ay nasusunog sa unang page view at naiiwan sa bawat cache sa pagitan mo at ng browser.
5. Mag-install ng module sa halip
- WHMCS — kopyahin ang module sa
modules/servers/zinn/, magdagdag ng server kung saan ang Password ay ang iyong API key, at itakda ang linya ng produkto sa produkto. Pindutin ang Test Connection: gagawa ito ng totoong call at sasabihin sa iyo kung ano ang sinabi ng platform.
- HostBill — kopyahin sa
includes/modules/Hosting/zinn/ at ikonekta ito sa parehong paraan.
- WordPress — ang Zinn® Reseller Toolkit: paghahanap ng domain, isang sign-in link patungo sa hosting ng iyong mga kliyente, at WooCommerce provisioning kapag nabayaran ang isang order. Open source sa <https://github.com/Zinn-Digital/zinn-reseller-toolkit>, o i-download ito mula sa Mga Plugin sa iyong dashboard.
6. Mag-live na
Suriin ang mga ito bago ka kumuha ng totoong order:
- Pumasa ang pagsubok sa koneksyon sa module, o ang iyong unang
curl ay nagbabalik ng listahan.
- Naitakda ang listahan ng iyong presyo (Reselling → Ang iyong mga presyo).
- Nakakonekta ang iyong payment gateway (Reselling → Mga payment gateway) — binabayaran ka ng iyong mga kliyente, sa pamamagitan ng iyong sariling account.
- Nakalagay ang mga detalye ng iyong kumpanya (Reselling → Ang iyong kumpanya) upang ang mga invoice ng iyong kliyente ay naglalaman ng iyong legal entity at VAT number, hindi ang sa amin.
- Nakapaglagay ka na ng isang totoong order mula simula hanggang dulo at nakitang lumitaw ang site.
Kung nasaan ang lahat ng iba pa
Ang kumpletong sanggunian ng API — bawat endpoint, na binuo mula sa aming detalye, kasama ang pahintulot na kailangan ng bawat isa — ay nasa <https://zinndigital.com/developers/api>.