Когда вместо BILLmanager используется другая биллинговая система или скрипт, автоматизировать перепродажу модулей возможно доработав эту систему.
При покупке модуля из панели управления, например, ISPmanager, отправляются запросы в стороннюю систему, которая для обработки заказа должна эмулировать BILLmanager API.
Существует два варианта настройки взаимодействия со сторонней системой:
- Автоматический заказ модулей. Панель управления отправляет системе все запросы, необходимые для автоматического заказа и оплаты модуля. Здесь и далее под панелью управления подразумевается программный продукт, где клиент покупает модуль, например: ISPmanager.
- Ручной заказ модулей. Панель управления не будет пытаться автоматически заказать модуль. Вместо этого, будет выполняться переход на сайт партнёра (URL, записанный в файл лицензии).
Сообщите выбранный способ перепродажи менеджерам компании ISPsystem, они выполнят соответствующую настройку на стороне BILLmanager ISPsystem.
Автоматический заказ модулей
Для автоматического заказа модулей необходимо реализовать обработку функций:
Получение списка тарифных планов
Панель управления, через которую выполняется покупка модулей, запрашивает у биллинговой системы список платных модулей и их стоимость.
<URL системы>?authinfo=user:passwd&func=pricelist.export&itemtype=addition&out=xml
В ответ ожидается XML-документ формата:
<doc>
<pricelist>
<id>277</id>
<additionintname>Virusdie</additionintname>
<price currency="RUB">
<period cost="913.9286" type="month" length="1">monthly</period>
</price>
</pricelist>
</doc>
id — идентификатор тарифа модуля.
additionintname — название модуля. Может принимать значения:
- Virusdie — модуль VirusDie для ISPmanager Lite;
- VirusDieBusiness — модуль VirusDie для ISPmanager Business;
- Revisium — модуль Revisium для ISPmanager;
- CloudLinux — модуль CloudLinux для ISPmanager;
- KernelCare — модуль KernelCare для ISPmanager Lite;
- Softaculous — модуль Softaculous для ISPmanager;
- DDoSGUARD — модуль DDoSGUARD для ISPmanager.
price — стоимость за период. При покупке и загрузки цены всегда используется <period> с type="month" и length="1".
Получение содержимого корзины
<URL системы>?authinfo=user:passwd&func=backet
В ответ ожидается XML документ, где проверятся наличие элементов "/doc/list[@name='itemlist']/elem". При их наличии в XML модули будут добавлены в корзину, но панель управления не будет пытаться автоматически оплатить товары. Пользователь будет перенаправлен в систему для ручного завершения заказа.
Размещение заказа в корзине
<URL системы>?authinfo=user:passwd&func=addition.order.param&item=234256&period=1&pricelist=2345&sok=ok
item — код (id) лицензии, для которой покупается модуль.
period и pricelist — берутся из списка тарифов (/doc/pricelist/id и /doc/pricelist/price/period/@length).
В ответе ожидается XML:
<doc>
<billorder.id>1234</billorder.id>
</doc>
Оплата заказа
<URL системы>?authinfo=user:passwd&func=basket&id=23445&sok=ok
Переход в систему
<URL системы>?authinfo=user:passwd&func=session.newkey&key=vjJJNF3IDS2as
После получения ответа клиент перенаправляется на адрес:
<URL системы>?func=auth&username=<имя>&key=vjJJNF3IDS2as&backlevel=?&backname=?&backurl=?
key — последовательность из предыдущего вызова.
backlevel — уровень доступа пользователя в текущей панели.
backname — имя текущей панели управления.
backurl — <URL панели управления>?startform=plugin.
Ручной заказ модулей
Для ручного заказ модулей необходимо реализовать получение списка тарифных планов. Это необходимо для получения стоимости модулей.
При покупке модуля панель управления будет перенаправлять клиента на сайт партнёра. Для этого формируется запрос вида:
<URL системы>?module=<имя модуля>&license=<ID лицензии>&ip=<IP лицензии>