Перепродажа модулей ISPsystem

Материал из ISPWiki
Перейти к: навигация, поиск

При установке дополнительных модулей COREmanager автоматизирует их покупку, если они являются платными. То, в какой биллинг панель пойдет покупать модуль, зависит от адреса, с которого сервер пришел за лицензией последний раз. Если адрес числится за одним из партнеров, и у этого партнера настроена перепродажа модулей ISPsystem, и заведены соответствующие тарифные планы, пользователю будет предложено ввести регистрационные данные от партнерского биллинга.

В противном случае, цена будет взята из тарифов ISPsystem и пользователю будет предложено зарегистрировать лицензию в биллинге ISPsystem. Это можно сделать как на существующий аккаунт, так и создать новый. Если лицензия уже зарегистрирована, пользователю предложат ввести пароль от биллинга ISPsystem. После этого будет сформирована корзина заказов, куда если лицензия триальная, помимо модуля будет помещена и месячная лицензия на соответствующую панель. Если на счету у пользователя достаточно средств для оплаты заказа, оплата будет произведена автоматически, в противном случае пользователь будет перенаправлен в биллинг для завершения заказа вручную.

После оплаты модуля панель заново загрузит лицензию, в которой должна быть пометка о купленных модулях, и, если она есть, модуль будет установлен.

Настройка биллинга для перепродажи модулей

Для начала необходимо:

  • стать Хостинг Партнером ISPsystem
  • сообщить нам блоки своих IP адресов
  • сообщить нам адрес биллинга, куда необходимо отправлять запросы на покупку модулей

Настройка BILLmanager

Необходимо наличие BILLmanager 5 любой редакции, версии не ниже текущего Stable релиза, или BILLmanager 4 с установленным плагином для продажи модулей через панели 5й версии.

Для BILLmanager 5 для начала продажи модулей достаточно импортировать тарифные планы на модули с my.ispsystem.com и открыть к ним доступ всем клиентам BILLmanager.

Для BILLmanager 4 необходимо выполнение следующих шагов:

  1. Настройка типа продукта с внутренним именем addition
  2. Настройка двух дополнений с внутренними имена license и accountlimit (требуются для некоторых модулей)
  3. Настройка параметра типа продукта в внутренним именем item (используется для указания кода лицензии, для которой заказывается модуль)
  4. Импорт тарифного плана с my.ispsystem.com
  5. Обновление BILLmanager до последней доступной версии
  6. Установка плагина необходимой архитектуры с http://download.ispsystem.com/extras/additionsale/ (процесс описан ниже)
  7. Указание типа модуля в настройках тарифного плана для продажи модуля (поле появляется после установки плагина):
    • Virusdie - модуль VirusDie для ISPmanager Lite
    • VirusDieBusiness - модуль VirusDie для ISPmanager Business
    • CloudLinux - модуль CloudLinux для ISPmanager
    • KernelCare - модуль KernelCare для ISPmanager Lite
    • Softaculous - модуль Softaculous для ISPmanager
    • vmware - модуль VMware vCloud для BILLmanager
    • vmwarevds - модуль VMware vCloud, продажа отдельных VDS для BILLmanager

Для установки плагина, его необходимо:

  • сделать резервную копию файла /usr/local/ispmgr/bin/billmgr, так как оригинальный файл будет заменен плагином. Требуется для открытия публичного доступа к функции pricelist.export
  • скачать с http://download.ispsystem.com/extras/additionsale/ архив модуля нужной архитектуры (представлены архивы для Linux) и распаковать файлы в /usr/local/ispsmgr/. Будет заменен файл /usr/local/ispmgr/bin/billmgr и должно добавить два файла:
    • /usr/local/ispmgr/etc/billmgr_mod_additionsale.xml
    • /usr/local/ispmgr/lib/svradditiondale.so

После этого в возможностях необходимо включить продажу модулей и можно переходить к настройке тарифных планов

Обработка запросов сторонними системами

Для обработки заказа модуля система, по сути, должна эмулировать BILLmanager API. Необходимо реализовать обработку следующих типов запросов:

Получение списка тарифов

<URL биллинга>?func=pricelist.export&itemtype=addition. В ответ мы ожидаем XML документ следующего формата:

<?xml version="1.0" encoding="UTF-8"?>
<doc>
  <pricelist>
    <id>277</id>
    <additionintname>Virusdie</additionintname>
    <price currency="RUB">
      <period cost="913.9286" type="month" length="1">monthly</period>
    </price>
  </pricelist>
</doc>

при построении списка, а в последствии и при покупке используется <period> с type="month" и length="1". additionintname должен соответствовать внутреннему имени модуля.

Последующие шаги зависят от настроек, сделанных для конкретного ресейлера

Автоматический заказ модулей

  • Получение содержимого корзины: <URL биллинга>?authinfo=<имя>:<пароль>&func=backet. В полученном xml проверятся наличие элементов /doc/list[@name='itemlist']/elem. Если таковые будут найдены, то модули будут добавлены в корзину, но панель не будет пытаться автоматически оплатить ее. Пользователь будет перенаправлен в биллинг, для ручного завершения заказа.
  • Размещение заказа в корзине: <URL биллинга>?authinfo=<имя>:<пароль>&func=addition.order.param&item=?&period=?&pricelist=?&sok=ok. где item - id лицензии, period и pricelist - будут взяты из списка тарифов (/doc/pricelist/id и /doc/pricelist/price/period/@length). В ответе ожидается XML:
<doc><billorder.id>1234</billorder.id></doc>
  • Оплата заказа: <URL биллинга>?authinfo=<имя>:<пароль>&func=basket&id=?&sok=ok. Где id - идентификатор, полученный при размещении заказа.
  • Переход в биллинг: <URL биллинга>?authinfo=<имя>:<пароль>&func=session.newkey&key=? key - произвольная случайная последовательность символов. После получения ответа пользователя перенаправляют на адрес: <URL биллинга>?func=auth&username=<имя>&key=?&backlevel=?&backname=?&backurl=?, где key - последовательность из предыдущего вызова, backlevel - уровень доступа пользователя в текущей панели, backname - имя текущей панели, backurl - <URL панели>?startform=plugin

Заказ модулей вручную

Возможна такая настройка партнера, что панель не будет пытаться автоматически заказать требуемый модуль, а будет сразу переходить на сайт партнера (используется тот же URL что и для получения списка тарифов). В этом случае запрос будет иметь следующий вид: <URL биллинга>?module=<имя модуля>&license=<ID лицензии>&ip=<IP лицензии>