SHM billing system
Last updated
Was this helpful?
Last updated
Was this helpful?
Представляю Вашему вниманию универсальную биллинговую систему, которая позволяет легко и просто автоматизировать оказание IT сервисов.
SHM хорошо подходит для оказания разовых и периодических услуг, таких как:
Услуги хостинга
Услуги по продаже сервисов, таких как VPN
Интернет услуги и услуги связи с безлимитными (пакетными) тарифами
Ядро (API)
Web интерфейс для администраторов системы
Web интерфейс для клиентов
Для оказания услуг необходимо:
Подготовить Ваш сервер, на котором планируете оказывать услуги
Установить SHM на Ваш сервер (можно на любой виртуальный сервер)
Настроить SHM с помощью Web интерфейса администратора либо через API
Подключить платежную систему для приема платежей от ваших клиентов
Когда клиент заказал и оплатил услугу, биллинг SHM инициирует событие «CREATE». Мы можем привязать к нему следующую команду:
Где:
«vpn_create.sh» — скрипт, заранее написанный, для создания услуг на сервере и принимающий в качестве аргумента идентификатор услуги.
{{ us.id }} — шаблон. SHM заменит это выражение на реальный и уникальный идентификатор услуги пользователя.
{{ us.gen_store_pass }} — шаблон со специальной функцией, которая вернет сгенерированный пароль и сохранит его в БД, в настройки услуги пользователя, для возможности предоставления его клиенту.
SHM выберет доступный сервер из списка и выполнит на нём эту команду, например с помощью транспорта SSH. В случае, если команда будет успешна, услуга будет считаться оказанной, а её статус будет установлен в значение: ACTIVE. А в случае ошибки (например если сервер не доступен), SHM предпримет дальнейшие попытки выполнения этой команды через некоторое время.
Аналогичным образом, мы можем привязать команды и к другим событиям: («BLOCK», «REMOVE» и т.п.)
Если мы хотим оказывать услуги Виртуального хостинга, то под «Тарифом» мы подразумеваем сразу несколько услуг, такие как: «Хостинг сайтов», «Хостинг почты» и «Хостинг БД». В этом случае, мы создаем сразу 4 услуги, где родительская услуга это «Тариф». Привязываем соответствующие отдельные команды для дочерних услуг. Это можно представить в виде дерева:
«Тариф» (100р./мес.)
Услуги будут обработаны (созданы) снизу вверх. т.е. сначала команды выполняются для дочерних услуг, затем для родительской. Услуги могут располагаться на разных серверах.
Такой подход позволяет оказать несколько услуг с единым платежом и привязать к родительской услуге команду для email уведомления об успешно созданном (или удаленном) тарифе.
Практически во всех таблицах БД есть поле settings
, куда можно сохранять произвольные данные в формате JSON. Для некоторых услуг, таких как «Виртуальный сервер (VPS)», обычно сохраняют такие параметры как CPU
и RAM
. Каталог услуг хранится в таблице services
. Следующий пример позволит создать услугу VPS с дополнительными параметрами, сохраненными в услуге:
Дополнительно, есть возможность сохранять произвольные, многострочные данные, причем в момент выполнения скриптов на серверах. Например, когда мы оказываем услугу VPN, нам необходимо куда-то сохранить сгенерированный ключ VPN, для последующей передачи его клиенту. Это можно сделать с помощью следующего шаблона скрипта:
Получить сохраненный ключ клиент сможет с помощью ссылки вида:
Биллинг SHM представляет из себя готовую систему, с Web интерфейсом администратора, клиента и API (backend).
Отслеживает статус выполнения команд на серверах, с поддержкой Retry и логированием вывода команд (pipeline), по аналогии с GitLab CI.
Поддерживает неограниченное кол-во серверов. Позволяет объединять сервера в группы.
Работает в контейнерах (Docker). Легко инсталлировать, поддерживать и обновлять. Поддержка Kubernetes.
API
Код SHM обширно покрыт unit тестами, что позволяет избегать ошибок при разработке
Работа с БД осуществляется в транзакционном режиме, что позволяет оставаться системе атомарной.
Легко делать резервные копии системы (бэкапы)
… и многое другое
SHM находится в активной разработке. Множество идей ещё предстоит реализовать.
p.s. в самое ближайшее время, в качестве примера, я планирую написать подробную статью/инструкцию по запуску сервиса продажи VPN на основе SHM.
SHM на своём сервере очень просто. Поддерживается Docker и Kubernetes.
Биллинговая система позволяет , списывать средства за оказанные услуги, возвращать средства за преждевременно завершенные услуг, прогноз оплаты услуг и многое другое. Каждое такое действие называется: «». К событиям можно привязывать команды, которые могут быть выполнены на ваших серверах. Способ доставки команд на сервера называется: «» (SSH, HTTP, MAIL…).
Биллинг SHM поддерживает различные .
С помощью SHM умеет формировать и email уведомления, и целые скрипты.
Больше информации можно получить на документации и в группе .
OpenSource (), в разработке с 2016 года.
Различные режимы
Гибкое построение команд () и привязка их к
Располагается на отдельном, независимом сервере. Общается с серверами безопасно, посредством ""
Документация:
Поддержка в группе Telegram: