whmcs.php¶
Модуль интеграции с WHMCS для управления клиентами, счетами, кредитом, отменами заказов и биллинговыми данными серверов.
Методы API¶
| Метод | Действие | Описание |
|---|---|---|
add_contact | добавление контакта | Добавляет нового дополнительного контакта к существующему клиенту WHMCS или создает новый контакт для владельца аккаунта. |
apply_credit | применить кредит к инвойсу | Применяет доступный баланс (кредит) пользователя для оплаты выбранного инвойса. Если сумма кредита больше суммы инвойса, применяется максимально возможная сумма. |
create_addfunds | создание инвойса на пополнение баланса | Создает инвойс в WHMCS для пополнения баланса клиента (Add Funds). Если включена опция подписки, активируется автоматическое продление. |
delete_cancellation_request | удаление запроса на отмену | Удаляет существующий запрос на отмену для конкретного сервера, позволяя восстановить инвойс или сгенерировать новый. |
delete_contact | удаление контакта | Удаляет дополнительный контакт, привязанный к клиенту в WHMCS. |
download_invoice | скачивание инвойса | Возвращает PDF-файл инвойса в формате base64. Параметр viewpdf определяет способ открытия: inline (просмотр) или attachment (скачивание). |
generate_due_invoice | генерация счета на оплату | Генерирует следующий счет для сервера в WHMCS, учитывая текущий цикл оплаты и наличие активных аддонов. Блокируется, если у пользователя есть неоплаченные счета или если сервер находится в процессе апгрейда. |
get_billing_data | получение данных биллинга сервера | Возвращает детальную информацию о биллинге конкретного сервера, включая данные клиента и синхронизированные параметры. |
get_cancellation_requests | получение запросов на отмену | Возвращает список активных запросов на отмену услуг для конкретного сервера или пользователя с фильтрацией по типу и статусу оплаты. |
get_client | получение информации о клиенте | Возвращает подробную информацию о клиенте, включая данные из WHMCS (имя, email, группа), внутренние данные системы и кастомные поля. |
get_clientgroups | получение групп | Возвращает список доступных групп клиентов из WHMCS для указанной локации. |
get_contacts | получение контактов клиента | Возвращает список дополнительных контактов, привязанных к клиенту в WHMCS. Если указан email subaccount, возвращаются только те контакты, которые имеют соответствующие права доступа. |
get_invoice | получение данных инвойса | Возвращает детальную информацию об инвойсе из WHMCS, включая данные клиента и статус оплаты. |
get_invoices | получение списка инвойсов клиента | Возвращает список всех инвойсов, связанных с аккаунтом клиента в WHMCS. |
get_related_invoices | получение связанных инвойсов | Возвращает список всех инвойсов, связанных с конкретным сервером (product_id) в указанной локации WHMCS. |
getcredits | получение баланса (кредитов) | Возвращает информацию о доступных кредитах на аккаунте пользователя в WHMCS. |
getpaymentgw | получение платежных шлюзов | Возвращает список доступных методов оплаты для конкретного инвойса с обработанными ссылками на оплату |
mass_pay | массовая оплата инвойсов | Позволяет произвести массовую оплату нескольких инвойсов одним платежом. Требуется минимум 2 инвойса. |
request_cancellation | запрос на отмену подписки | Отправляет запрос на отмену подписки (bank card subscription) для сервера. Проверяет наличие активных лицензий, статус заказа и связанные инвойсы. |
request_subscription_cancellation | запрос на отмену подписки | Отправляет запрос на отмену банковской подписки для сервера. Проверяет наличие активной подписки, статус оплаты и создает JIRA-тикет для обработки. |
reset_password | сброс пароля | Инициирует процесс сброса пароля. Если reset_token не предоставлен, отправляет ссылку на email. Если токен предоставлен, выполняет проверку 2FA и обновляет пароль. |
transactions | получение транзакций | Возвращает список транзакций пользователя по конкретному инвойсу или ID транзакции |
update_client | обновление данных клиента | Обновляет профиль клиента в WHMCS, включая персональные данные (имя, email), контактную информацию, настройки двухфакторной аутентификации и кастомные поля (custom fields). Поддерживает обновление юридических данных для компаний. |
update_contact | обновление контакта | Обновляет данные дополнительного контакта (имя, фамилия, email, телефон) для существующего клиента в WHMCS. |
whmcs/add_contact¶
Добавляет нового дополнительного контакта к существующему клиенту WHMCS или создает новый контакт для владельца аккаунта.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: add_contact |
| type | ❌ | integer | Тип операции (0 - создание нового контакта) |
| profile_data[firstname] | ✅ | string | Имя контакта |
| profile_data[lastname] | ❌ | string | Фамилия контакта |
| profile_data[email] | ✅ | string | Email контакта (должен быть уникальным) |
| profile_data[password1] | ✅ | string | Пароль для нового контакта |
| profile_data[password2] | ✅ | string | Подтверждение пароля |
| profile_data[phonenumber] | ❌ | string | Номер телефона (проверяется на поддержку SMS) |
| token | ✅ | string | API-токен аутентификации |
Пример запроса
Пример успешного ответа
Примеры ошибок
``` { "fill_required_fields": { "result": -1, "error": "fill_required_fields", "message": "Заполните обязательные поля" }, "email_registered": { "result": -1, "state": "fail", "error": "email_registered" }, "sms_number_not_supported": { "result": -1, "error": "sms_number_not_supported" } }
```
whmcs/apply_credit¶
Применяет доступный баланс (кредит) пользователя для оплаты выбранного инвойса. Если сумма кредита больше суммы инвойса, применяется максимально возможная сумма.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: apply_credit |
| invoice_id | ✅ | int | ID инвойса для оплаты |
| amount | ✅ | float | Сумма кредита для применения |
| token | ✅ | string | API-токен аутентификации |
Пример запроса
Примеры ошибок
``` { "code": -1, "message": "WHMCS ApplyCredit failed: {\"result\":\"error\",\"error\":\"...\"}" }
```
whmcs/create_addfunds¶
Создает инвойс в WHMCS для пополнения баланса клиента (Add Funds). Если включена опция подписки, активируется автоматическое продление.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: create_addfunds |
| amount | ✅ | number | Сумма пополнения. Если не указана, используется значение по умолчанию (минимум 20 для non-subscribe) |
| description | ❌ | string | Описание платежа |
| subscribe | ❌ | boolean | Включить автоматическое продление (recurring) |
| token | ✅ | string | API-токен аутентификации |
Пример запроса
Пример успешного ответа
Примеры ошибок
``` { "code": -1, "message": "minimal payment amount is 20." }
```
whmcs/delete_cancellation_request¶
Удаляет существующий запрос на отмену для конкретного сервера, позволяя восстановить инвойс или сгенерировать новый.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: delete_cancellation_request |
| id | ✅ | integer | ID сервера |
| token | ✅ | string | Токен авторизации |
Пример запроса
Пример успешного ответа
Примеры ошибок
``` { "code": -1, "message": "server $id doesn't have a relid data" }
```
whmcs/delete_contact¶
Удаляет дополнительный контакт, привязанный к клиенту в WHMCS.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: delete_contact |
| token | ✅ | string | Токен авторизации |
| contact_id | ✅ | int | ID контакта для удаления |
Пример запроса
Примеры ошибок
``` { "code": -1, "message": "verification failed, subcontact not found" }
```
whmcs/download_invoice¶
Возвращает PDF-файл инвойса в формате base64. Параметр viewpdf определяет способ открытия: inline (просмотр) или attachment (скачивание).
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: download_invoice |
| invoice_id | ✅ | int | ID инвойса для скачивания |
| proforma_invoice | ❌ | int | Флаг использования проформы-инвойса (0 или 1) |
| viewpdf | ❌ | string | Способ открытия: 1 — inline (просмотр), 0 — attachment (скачивание) |
| token | ✅ | string | API-токен аутентификации |
Пример запроса
Примеры ошибок
``` { "code": -1, "message": "Invalid invoice id or billing location error" }
```
whmcs/generate_due_invoice¶
Генерирует следующий счет для сервера в WHMCS, учитывая текущий цикл оплаты и наличие активных аддонов. Блокируется, если у пользователя есть неоплаченные счета или если сервер находится в процессе апгрейда.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| id | ✅ | int | ID сервера (eq_id) |
| token | ✅ | string | Токен авторизации |
Пример запроса
Пример успешного ответа
Примеры ошибок
``` { "code": -1, "message": "next_invoice_blocked_by_upgrade" }
```
whmcs/get_billing_data¶
Возвращает детальную информацию о биллинге конкретного сервера, включая данные клиента и синхронизированные параметры.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: get_billing_data |
| id | ✅ | int | ID сервера |
| token | ✅ | string | Токен авторизации |
Пример запроса
Примеры ошибок
``` { "code": -1, "message": "invalid request" }
```
whmcs/get_cancellation_requests¶
Возвращает список активных запросов на отмену услуг для конкретного сервера или пользователя с фильтрацией по типу и статусу оплаты.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: get_cancellation_requests |
| id | ❌ | int | ID сервера для получения запросов по конкретному ресурсу. Если не указан, поиск идет по пользователю. |
| period_from | ❌ | string | Дата начала периода (формат Y-m-d) |
| period_to | ❌ | string | Дата окончания периода (формат Y-m-d) |
| cancellation_type | ❌ | string | Тип отмены для фильтрации |
| billing_status | ❌ | string | Статус оплаты (например, Paid, Unpaid) |
| token | ✅ | string | API-token аутентификации |
Пример запроса
Пример успешного ответа
{
"result": "OK",
"message": [
{
"relid": 123,
"date": "2024-01-15",
"reason": "User requested cancellation",
"type": "End of Billing Period",
"name_client": "John Doe",
"company": "Example Corp",
"billing": "whmcs_ru",
"account_id": 456,
"status": "Active",
"due_date": "2024-02-15",
"corporate": "N"
}
]
}
Примеры ошибок
``` { "code": -3, "message": "server $id doesn't have a relid data" }
```
whmcs/get_client¶
Возвращает подробную информацию о клиенте, включая данные из WHMCS (имя, email, группа), внутренние данные системы и кастомные поля.
HTTP-метод: POST|GET
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: get_client |
| token | ✅ | string | Токен авторизации |
| ❌ | string | Email клиента для поиска (используется в функции whmcs_get_client) | |
| full | ❌ | boolean | Флаг получения полных данных (включая пароли и расширенные поля) |
Пример запроса
Пример успешного ответа
{
"result": "OK",
"client": {
"id": 123,
"userid": 456,
"firstname": "John",
"lastname": "Doe",
"email": "user@example.com",
"companyname": "Example Corp",
"countrycode": "US",
"currency_code": "USD",
"groupid": 1,
"status": "Active",
"corporate": 0,
"inn": null,
"contractnum": null,
"twofaenabled": true,
"twofa_method": "totp"
},
"billing_location": "whmcs_itb",
"internal": {
"id": 789,
"email": "user@example.com",
"corporate": 0,
"active_since": "2023-01-15"
},
"groupdata": null
}
Примеры ошибок
``` { "code": -1, "message": "Request failed for client@location: error message" }
```
whmcs/get_clientgroups¶
Возвращает список доступных групп клиентов из WHMCS для указанной локации.
HTTP-метод: POST|GET
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: get_clientgroups |
| token | ✅ | string | Токен авторизации |
Пример запроса
Пример успешного ответа
Примеры ошибок
``` { "code": -1, "message": "Billing error: ..." }
```
whmcs/get_contacts¶
Возвращает список дополнительных контактов, привязанных к клиенту в WHMCS. Если указан email subaccount, возвращаются только те контакты, которые имеют соответствующие права доступа.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: get_contacts |
| token | ✅ | string | Токен авторизации |
| ❌ | string | Email subaccount для фильтрации контактов (если не указан, возвращаются все контакты клиента) |
Пример запроса
Пример успешного ответа
Примеры ошибок
``` { "code": -1, "message": "fail to get contacts list" }
```
whmcs/get_invoice¶
Возвращает детальную информацию об инвойсе из WHMCS, включая данные клиента и статус оплаты.
HTTP-метод: POST|GET
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: get_invoice |
| token | ✅ | string | Токен авторизации |
| invoice_id | ✅ | int | ID инвойса |
| load_client_data | ❌ | int | Загрузить данные клиента (1 - да, 0 - нет) |
Пример запроса
Пример успешного ответа
Примеры ошибок
``` { "code": -1, "message": "invalid invoice id 0 at whmcs_ru" }
```
whmcs/get_invoices¶
Возвращает список всех инвойсов, связанных с аккаунтом клиента в WHMCS.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: get_invoices |
| token | ✅ | string | Токен авторизации |
| clientid | ❌ | integer | ID клиента |
Пример запроса
Пример успешного ответа
Примеры ошибок
``` { "result": "-1", "error": "Invalid client id" }
```
whmcs/get_related_invoices¶
Возвращает список всех инвойсов, связанных с конкретным сервером (product_id) в указанной локации WHMCS.
HTTP-метод: POST|GET
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: get_related_invoices |
| account_id | ❌ | int | ID аккаунта (если не указан id сервера, используется из параметров) |
| token | ✅ | string | Токен авторизации |
| id | ❌ | int | ID сервера (product_id) |
Пример запроса
Пример успешного ответа
Примеры ошибок
``` { "code": -1, "message": "server $id are not linked to the billing" }
```
whmcs/getcredits¶
Возвращает информацию о доступных кредитах на аккаунте пользователя в WHMCS.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: getcredits |
| token | ✅ | string | Токен авторизации |
Пример запроса
Примеры ошибок
``` { "code": -1, "message": "failed to retrive account history at whmcs_location, please contact support" }
```
whmcs/getpaymentgw¶
Возвращает список доступных методов оплаты для конкретного инвойса с обработанными ссылками на оплату
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: getpaymentgw |
| token | ✅ | string | Токен авторизации |
| invoice_id | ✅ | int | ID инвойса |
Пример запроса
Пример успешного ответа
{
"result": "OK",
"methods": {
"paymaster": {
"call": "https://bill.hostkey.com/modules/gateways/paymaster.php?..."
},
"bitpaycheckout": {
"call": "<button class='btn btn-xl ...'>Pay Now</button>"
},
"banktransfer": {
"call": "<span style='text-align:left'><p data-intl='please_wire_funds_in_favor'>Please wire funds in favor of: </p>...</span>"
}
}
}
Примеры ошибок
``` { "code": -1, "message": "failed to retrive payment gw list: error message" }
```
whmcs/mass_pay¶
Позволяет произвести массовую оплату нескольких инвойсов одним платежом. Требуется минимум 2 инвойса.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: mass_pay |
| invoices[] | ✅ | array | Массив ID инвойсов для оплаты. Минимум 2 значения. |
| token | ✅ | string | API-токен аутентификации |
Пример запроса
Примеры ошибок
``` { "code": -1, "message": "mass_pay_requires_2_invoices" }
```
whmcs/request_cancellation¶
Отправляет запрос на отмену подписки (bank card subscription) для сервера. Проверяет наличие активных лицензий, статус заказа и связанные инвойсы.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: request_cancellation |
| id | ✅ | int | ID сервера |
| cancellation_type | ❌ | string | Тип отмены (1 для немедленной) |
| cancellation_reason | ❌ | string | Причина отмены |
| refund | ✅ | float | Сумма возврата |
| currency | ✅ | string | Валюта возврата |
| service_price | ❌ | float | Цена сервиса для расчета |
| refund_message | ✅ | string | Текст сообщения о возврате (EN) |
| refund_message_short | ✅ | string | Краткий текст сообщения о возврате |
| clientid | ✅ | int | ID клиента WHMCS |
| billing | ✅ | string | Локация биллинга (например, whmcs_itb) |
| ✅ | string | Email клиента для уведомления | |
| last_invoice | ✅ | int | ID последнего инвойса |
| prev_invoice_id | ❌ | int | ID предыдущего инвойса для частичного возврата |
| relid | ✅ | int | Account ID (Relid) |
| vat_msg | ❌ | string | Сообщение о налоге/VAT |
| rec_before_tax | ❌ | float | Сумма до налогов |
| total_with_tax | ❌ | float | Итоговая сумма с налогом |
| d_deploy_time | ❌ | string | Дата деплоя (для логов) |
| d_bill_time | ❌ | string | Время биллинга |
| d_reccuring | ❌ | string | Рекуррентный платеж |
| d_period | ❌ | string | Период биллинга |
| cbp_adjusted | ❌ | string | Сообщение о корректировке CBP |
| token | ✅ | string | API-токен аутентификации |
Пример запроса
curl -s "https://invapi.hostkey.ru/whmcs.php" -X POST \
--data "action=request_cancellation" \
--data "id=123" \
--data "refund=50.00" \
--data "currency=USD" \
--data "refund_message=Refund processed successfully" \
--data "refund_message_short=Refunded" \
--data "clientid=456" \
--data "billing=whmcs_itb" \
--data "email=user@example.com" \
--data "last_invoice=789" \
--data "relid=101" \
--data "token=YOUR_API_TOKEN"
Примеры ошибок
``` { "code": -3, "message": "whmcs_immediate_cancellation_no_invoices" }
```
whmcs/request_subscription_cancellation¶
Отправляет запрос на отмену банковской подписки для сервера. Проверяет наличие активной подписки, статус оплаты и создает JIRA-тикет для обработки.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: request_subscription_cancellation |
| id | ✅ | int | ID сервера |
| cancellation_type | ❌ | string | Тип отмены (например, End of Billing Period) |
| cancellation_reason | ❌ | string | Причина отмены |
| token | ✅ | string | API-токен аутентификации |
Пример запроса
Примеры ошибок
``` { "code": -1, "message": "sub_cancel_no_active_subscription" }
```
whmcs/reset_password¶
Инициирует процесс сброса пароля. Если reset_token не предоставлен, отправляет ссылку на email. Если токен предоставлен, выполняет проверку 2FA и обновляет пароль.
HTTP-метод: POST|GET
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: reset_password |
| token | ❌ | string | Токен авторизации API |
| ✅ | string | Email пользователя для сброса пароля | |
| reset_token | ❌ | string | Токен сброса пароля (для завершения процесса) |
| pass | ❌ | string | Новый пароль |
| code | ❌ | string | Код двухфакторной аутентификации (2FA) |
Пример запроса
Пример успешного ответа
Примеры ошибок
``` { "code": -1, "message": "Invalid password reset token, please try again." }
```
whmcs/transactions¶
Возвращает список транзакций пользователя по конкретному инвойсу или ID транзакции
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: transactions |
| transaction_id | ❌ | string | ID конкретной транзакции |
| invoice_id | ❌ | integer | ID инвойса для фильтрации |
| token | ✅ | string | API-токен аутентификации |
Пример запроса
Пример успешного ответа
Примеры ошибок
``` { "code": -1, "message": "failed to retrive transactions - error message" }
```
whmcs/update_client¶
Обновляет профиль клиента в WHMCS, включая персональные данные (имя, email), контактную информацию, настройки двухфакторной аутентификации и кастомные поля (custom fields). Поддерживает обновление юридических данных для компаний.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: update_client |
| token | ✅ | string | Токен авторизации |
| profile_data[client_id] | ✅ | integer | ID клиента в WHMCS |
| profile_data[location] | ✅ | string | Локация биллинга (например, whmcs_ru) |
| profile_data[billing_email] | ❌ | string | Новый адрес электронной почты клиента |
| profile_data[billing_firstname] | ❌ | string | Имя в биллинге |
| profile_data[billing_lastname] | ❌ | string | Фамилия в биллинге |
| profile_data[co_customertype] | ❌ | string | Тип клиента (Individual / Company) |
| profile_data[ips] | ❌ | string | Список IP-адресов для ACL через запятую/пробел |
| profile_data[co_smsnum] | ❌ | string | Номер телефона (с верификацией) |
| profile_data[billing_twofaenabled] | ❌ | boolean | Включение/выключение 2FA в WHMCS |
Пример запроса
Пример успешного ответа
Примеры ошибок
``` { "code": -1, "message": "invalid profile data: first name contain incorrect symbols" }
```
whmcs/update_contact¶
Обновляет данные дополнительного контакта (имя, фамилия, email, телефон) для существующего клиента в WHMCS.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: update_contact |
| params[contact_id] | ✅ | int | ID контакта для обновления |
| params[email] | ✅ | string | Email контакта (используется для верификации) |
| params[firstname] | ✅ | string | Имя контакта |
| params[lastname] | ❌ | string | Фамилия контакта |
| params[phonenumber] | ❌ | string | Номер телефона (проходит верификацию) |
| params[password1] | ❌ | string | Новый пароль 1 |
| params[password2] | ❌ | string | Новый пароль 2 (для смены пароля) |
| token | ✅ | string | API-токен аутентификации |
Пример запроса
Пример успешного ответа
Примеры ошибок
``` { "code": -1, "message": "fill_required_fields" }
```