База знань

Продавайте хостинг Zinn® через WHMCS

Установіть безкоштовний модуль надання ресурсів Zinn Digital® у WHMCS: ключ API та сім дозволів, які йому потрібні, куди має йти каталог модуля і чому важлива його назва, поля продукту, а також що насправді робить кожна кнопка WHMCS.

Модуль Zinn Digital® перетворює власні кнопки WHMCS на реальні дії на нашій платформі. Замовлення підготовлює хостинг вашого клієнта. Автоматизація протермінованих рахунків у WHMCS призупиняє його. Позначення рахунку як оплаченого відновлює його роботу. Скасування планує видалення. А ваш клієнт отримує кнопку Увійти до панелі хостингу в особистому кабінеті, яка виконує безпосередній вхід.

Він безкоштовний, ліцензований за умовами GPL-2.0-or-later і не має жодного привілейованого доступу до нашої платформи: кожен виклик, який він здійснює, є задокументованою кінцевою точкою, яку ви могли б викликати самі за допомогою власного ключа API.

Перш ніж почати

Вам знадобляться дві речі, і на другій люди часто припускаються помилки.

  1. Реселерський акаунт Zinn® з активною програмою. Зареєструйтеся на
  2. zinndigital.com та ввімкніть реселінг.

  3. Реселерський тарифний план із лімітом сайтів. Сайти, які замовляють ваші клієнти, враховуються у ваш
  4. план, тому вам потрібен план із вільним місцем.

⚠️ Test Connection не може повідомити, чи буде замовлення успішним. Він зчитує вашу програму й нічого не підготовлює, тому повідомляє про справний active акаунт, який ще не може нічого продавати. Якщо ваше перше замовлення зазнає невдачі з помилкою "This organization has no hosting plan, so it cannot host a site yet", сталося саме це — придбайте або розширте свій реселерський план і оформіть замовлення знову. З модулем усе гаразд.

1. Створіть ключ API

На панелі керування Zinn® відкрийте API keys і створіть ключ із рівно цими одинадцятьма дозволами:

ДозвілДля чого потрібен
org.createВідкрити акаунт Zinn® вашого клієнта під час його першого замовлення.
org.readЗчитувати акаунти ваших клієнтів.
sites.createПідготувати сайт.
sites.viewЗчитувати послугу та її використання.
sites.deleteПрипинити дію послуги.
reseller.viewПереглядати список проданого та зчитувати дані диска й трафіку.
reseller.provisionПризупиняти, відновлювати, авторизувати клієнта, призначати йому план і змінювати пакет.
billing.viewЗчитувати вартість покращення плану до його виконання.
sites.manageОчищати кеш і створювати резервну копію за допомогою кнопок.
sites.panel_accessЗмінювати пароль адміністратора WordPress.
hosting.php.manageПеремикати версію PHP під час підвищення або зниження тарифу.

⛔ Не надавайте дозвіл reseller.manage. Ключ, вставлений у білінгову панель, повинен мати змогу призупиняти послугу клієнта за несплату та авторизувати його. Він не повинен мати змоги зчитувати й переписувати ваші власні облікові дані платіжного шлюзу. reseller.provision існує якраз для того, щоб вам не довелося надавати ширший дозвіл. ⛔ org.create є обов'язковим. Без нього модуль може читати ваші акаунти, але не може відкрити новий, тому Test Connection проходить успішно, а перше замовлення повертає 403. ⛔⛔ Надайте всі дозволи з таблиці та зауважте, що Test Connection не зможе повідомити, якщо ви цього не зробили. Він зчитує вашу реселерську програму й нічого не підготовлює, тому відображатиме успіх навіть для ключа, у якому відсутній будь-який із цих пунктів. Натомість ви отримаєте помилку 403 під час тієї операції, за яку відповідає пропущений дозвіл, через місяці, від клієнта.

2. Установіть модуль

  1. Завантажте модуль і розпакуйте архів.
  2. Завантажте директорію zinn до вашої інсталяції WHMCS, щоб файл модуля опинився за шляхом
  3. modules/servers/zinn/zinn.php.

⛔ Директорія обов'язково повинна мати назву zinn. WHMCS формує назви функцій модуля надання послуг на основі назви його директорії, тому її перейменування на zinn-whmcs або zinndigital створює модуль, який WHMCS відображає у списку, дозволяє вибрати, але потім ніколи не викликає — без жодних повідомлень про помилки. Архів уже розпаковується з правильною назвою; просто не змінюйте її.

3. Додайте сервер

У WHMCS: Configuration → System Settings → Servers → Add New Server.

  • Name: будь-яке, наприклад Zinn Digital®
  • Hostname: api.zinndigital.com
  • Type: Zinn Digital®
  • Password: ваш ключ API з кроку 1

⛔ Ключ вказується в полі Password, яке WHMCS зберігає в зашифрованому вигляді. Не додавайте його в опції конфігурації продукту — вони зберігаються у базі даних у відкритому тексті та доступні кожному адміністратору, а ці облікові дані можуть створювати й видаляти хостинг ваших клієнтів.

Натисніть Test Connection. Модуль здійснює реальний запит і повертає відповідь нашої платформи, а не просто перевіряє факт заповнення полів.

4. Створіть продукт

Configuration → System Settings → Products/Services, потім установіть у Module Settings сервер, який ви щойно додали. Поля конфігурації:

ПолеОбов'язковеЩо це таке
Product lineтакЛінійка Zinn®, яку ви продаєте — mainstream (керований WordPress), footprint_free, wordpress, linux, cloud, agency, app_hosting, ai_hosting, lms_hosting, managed_database, vector_hosting, zinn_compute, fleet_linux, fleet_enterprise, mail або reseller.
StackтакЩо розгортається: wordpress (за замовчуванням), woocommerce, php, static, node, one_click, headless_cms, nextcloud або owncloud.
ApplicationніТільки для стеків one_click і headless_cms — яку програму встановити. Вказівка для будь-якого іншого стека відхиляється, оскільки цей стек уже визначає, що буде встановлено.
PHP versionнінаприклад 8.3. Залиште порожнім для значення за замовчуванням у цій лінійці. Версія, яку лінійка не підтримує, відхиляється разом із переліком доступних.
Plan codeтакПлан Zinn®, який продає цей продукт. GET /v1/reseller/prices містить перелік ваших планів. Замовлення без нього відхиляється — дивіться попередження нижче.
Billing intervalніmonthly (за замовчуванням) або annual — період, за який формується ваш оптовий рахунок для цього клієнта. Сума, яку ви стягуєте з власного клієнта, налаштовується в продукті WHMCS і залишається незмінною.

⛔⛔ Код плану є обов'язковим, і замовлення без нього навмисно відхиляється. До 2026-09-01 це поле було декоративним і жоден процес його не зчитував, тому модуль замовляв хостинг, який узагалі не мав тарифного плану — і кожен наслідок цього залишався непоміченим. Ваш оптовий звіт формується на основі активних підписок ваших клієнтів, тому окремого рядка для послуги не було і вам не виставлявся рахунок протягом усього часу її роботи; ваш клієнт не отримував жодних лімітів, тому до його сайту не застосовувалися квоти на диск або файли; а Change Package не мав чого змінювати, через що продане вами покращення тарифу неможливо було виконати. Сайт при цьому підготовлювався й функціонував бездоганно.

Тепер модуль натомість відхиляє замовлення, оскільки немає безпечного плану, який він міг би обрати навмання: такий вибір підготував би хостинг на плані, який ви не обирали і для якого могли не встановити ціну, і — на відміну від відмови, яку ви бачите негайно, — це виявилося б лише під час надходження звіту, якщо взагалі було б помічено.

Установіть параметр Auto Setup на власний розсуд — модуль є ідемпотентним щодо ідентифікатора послуги WHMCS, тому повторна спроба підготовки повертає той самий сайт замість виставлення рахунку за другий.

Що робить кожна дія WHMCS

Дія WHMCSЩо відбувається з нашого боку
CreateСтворює акаунт клієнта Zinn® (або використовує вже наявний) і підготовлює його сайт.
SuspendТимчасово блокує сайт через несплату. Контент зберігається; нічого не видаляється.
UnsuspendЗнімає ваше блокування.
TerminateПланує видалення сайту з пільговим періодом. Дата відображається в особистому кабінеті.
Usage updateОновлює дані про диск і трафік для кожної послуги один раз на добу.
Log in to hosting panelВідкриває одноразове посилання для прямого входу до панелі вашого клієнта.
Change PackageПідвищує або знижує тариф послуги. Змінює пакет, а також версію PHP, якщо вона зазначена в новому продукті.
Change PasswordУстановлює пароль адміністратора WordPress. Поле не відображається для стеків, які не мають такого акаунта.
RenewПідтверджує факт існування послуги. Хостинг Zinn® є безперервним, тому сторонній термін дії продовжувати не потрібно.
Sync Usage / Purge Cache / Take BackupКнопки на сторінці керування послугою в панелі адміністратора. Клієнт отримує кнопки Purge Cache і Take Backup у своєму кабінеті.
Service tabСтатус, план, диск, трафік, заплановане видалення та інформація про те, хто наклав блокування.
ImportListAccounts зчитує кожну сторінку, тому імпорт не може непомітно зупинитися на першій із них.

Покращення тарифів: хто з кого стягує кошти

Zinn® ніколи не виставляє рахунки вашому клієнту — ані під час замовлення, ані під час зміни тарифу. Ви виставляєте їм рахунки через WHMCS; ми виставляємо рахунки вам у вашому оптовому звіті. Тому дія Change Package змінює права вашого клієнта та рядок у вашому наступному звіті й не списує кошти з карток — WHMCS уже отримав гроші від вашого клієнта та самостійно розрахував пропорційну вартість.

Друга послуга клієнта. На тому самому плані це ще один сайт у межах ліміту сайтів цього самого плану, і нічого додатково не надається. На іншому плані дія відхиляється: заміна активного плану залишила б одну з двох послуг без оплати. Або продавайте обидві на одному плані, або зареєструйте клієнта як окремий запис користувача у WHMCS.

Change Password існує тільки для WordPress. Хостинг Zinn® не має єдиного "пароля до послуги" — ваш клієнт потрапляє до своєї панелі за допомогою кнопки входу, — а сайт зі стеком php або static не має акаунта програми, для якого можна було б змінити пароль. WHMCS повністю приховує це поле замість того, щоб показувати елемент, який не працюватиме.

Три варіанти відповіді, які не можна зводити до двох

  • Unsuspend може відповісти відмовою. Це означає, що сайт було призупинено нашим
  • відділом боротьби зі зловживаннями, а не вами, і жодна білінгова панель не може зняти це блокування. Повідомлення містить цю інформацію; покажіть його своєму адміністратору замість повторних спроб.

  • Terminate планує видалення, а не виконує його миттєво. Дата повертається у параметрі
  • pending_deletion_at, і вона відображається в особистому кабінеті. Повідомити клієнту, що його дані вже видалено, коли це не так — гірше, ніж не повідомити нічого.

  • Диск і трафік можуть мати статус "невідомо", і "невідомо" — це не нуль. Якщо нам не вдалося
  • отримати показники, модуль залишає значення без змін замість запису 0 — інакше WHMCS відображав би вашому клієнту оманливу порожню смугу використання для сайту, дані щодо якого відсутні.

Усунення несправностей

Test Connection проходить успішно, але перше замовлення зазнає невдачі через помилку доступу. У ключа API відсутній дозвіл org.create. Модуль повинен відкрити акаунт клієнта, перш ніж зможе створити його сайт.

Замовлення зазнає невдачі з повідомленням про те, що організація не має плану хостингу. У вашому реселерському плані вичерпано ліміт сайтів або ви ще не маєте такого плану. Дивіться розділ Перш ніж почати вище.

Замовлення зазнає невдачі зі згадкою стека. Поле Stack у налаштуваннях продукту порожнє або містить значення, яке ми не підтримуємо. Установіть для нього значення wordpress, якщо ви не продаєте щось інше.

Скасування зазнають невдачі. Переконайтеся, що ви використовуєте модуль версії 1.0.0 або новішої. Попередні збірки не надсилали підтвердження видалення, через що кожне припинення послуги відхилялося, залишаючи послугу активною з нарахуванням плати.

Відмова із зазначенням конкретного поля. Наші помилки валідації містять назву поля та причину в дужках після повідомлення, наприклад (php_version: 7.2 is not offered on this product line). Саме ця частина містить інформацію для виправлення — речення перед нею навмисно зроблено загальним.

Перевірка завантаженого файлу

Кожен архів передається через TLS з нашого власного хоста й ніколи не перенаправляється на сторонні ресурси. Його контрольна сума SHA-256 вказана поруч із посиланням на завантаження на сторінці завантажень. Звірте її після завантаження:

  • macOS або Linux: shasum -a 256 zinn-whmcs-1.0.0.zip
  • Windows: certutil -hashfile zinn-whmcs-1.0.0.zip SHA256

Не використовуєте WHMCS?

Ми маємо модуль для HostBill та однофайловий PHP-клієнт для будь-яких інших систем; обидва рішення безкоштовні та розміщені на тій самій сторінці завантажень. Кожна кінцева точка, яку використовують модулі, описана в довіднику API.

Останнє з блогу

Що ми писали про хостинг, SEO та роботу сайтів у великих масштабах.

SEO та лінкбілдінг із рівня хостингу: Погляд оператора 2026 року

Як хостинг впливає на індексацію та передачу ваги посилань (link equity) у 2026 році: підтримка сторінок у пошуковому індексі, перевірка старих доменів перед створенням сайтів, лінкбілдинг без слідів (footprint) та відвертий погляд на те, що інфраструктура може і чого не може зробити для SEO.

Читати допис →

Як зробити WordPress швидким та безпечним: контрольний список оптимізації та плагінів

Практичний контрольний список для швидкого та безпечного WordPress: кешування на рівні сервера, об'єктний кеш для кожного сайту, кілька дійсно вартих плагінів, підтримання стека в актуальному стані та сторінки WooCommerce, які в жодному разі не можна кешувати.

Читати допис →

Як вибрати керований вебхостинг у 2026 році: Посібник для покупця

Що насправді відрізняє якісний керований хостинг від дешевого сервера з панеллю керування — міграції, резервні копії, ізоляція, справжнє кешування та чесне масштабування — і як оцінити його, перш ніж брати на себе зобов'язання.

Читати допис →

Читати блог →

Усе ще потрібна допомога?

Підтримка включена до кожного тарифу, служба працює 24 годин на добу, і ви можете писати нам будь-якою з наших 58 мов — ми відповідаємо вашою.

Звернутися до служби підтримки → Усі статті →