База знань

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

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

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

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

Перед початком

Вам потрібно дві речі, і друга з них часто стає несподіванкою.

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

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

⚠️ Перевірка з'єднання не може визначити, чи буде замовлення успішним. Вона зчитує вашу програму та нічого не створює, тому повідомляє про здоровий 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 не є необов'язковим. Без нього модуль може читати ваші облікові записи, але не може відкрити новий, тому перевірка з'єднання проходить успішно, а перше замовлення повертає 403. ⛔⛔ Надайте всі дозволи з таблиці та зауважте, що перевірка з'єднання не може повідомити, якщо ви цього не зробили. Вона зчитує вашу програму реселлера та нічого не створює, тому зелена для ключа, у якого відсутній будь-який із цих дозволів. Натомість ви отримаєте помилку 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 це поле було декоративним і ніким не читалося, тому модуль замовляв хостинг, який не мав жодного плану взагалі — і всі наслідки цього були непомітними. Ваша оптова виписка формується на основі активних підписок ваших клієнтів, тому для послуги не було рядка і вам нічого не виставлялося в рахунок, доки вона працювала; ваш клієнт не успадкував жодних лімітів, тому до його сайту не застосовувалися квоти диска чи файлів; і Зміна пакета не мала чого змінювати, тому оновлення, яке ви продали, не могло бути виконане. Сайт працював і обслуговувався ідеально весь цей час.

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

Установіть для 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 | Статус, план, диск, трафік, заплановане видалення та інформація про те, хто ініціював блокування. | | Import | ListAccounts читає кожну сторінку, тому імпорт не може непомітно зупинитися на першій із них. |

Оновлення: хто кому виставляє рахунок

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

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

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

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

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

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

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

Виправлення неполадок

Перевірка з'єднання проходить успішно, а перше замовлення завершується помилкою дозволу. У ключі 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.

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

Підтримка включена до кожного тарифного плану та надається рідною мовою.

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