Trabajo finalizado
Tarea técnica
Здравствуйте, уважаемые разработчики. Нам необходимо разработать систему лицензирования советников для сайта, который мы в данный момент делаем. Я постарался изложить все нюансы ниже, в случае, если ТЗ изложено некорректно, на основе ваших вопросов произведу скорейшие его корректировки.
Необходимо реализовать:
Систему лицензирования продуктов состоящую из блока отправки запроса на сайт из продукта(советники как на mql4 так и на mql5, то есть все должно быть написано на обе платформы), а также серверной части написанной на php. Лицензирование привязываем к номеру счета пользователя. Список активных счетов обновляем раз в сутки. Со стороны сайта обновляем списки активных счетов, добавляем новые и даем советникам ответ - можно ли продукту работать или необходимо деинициализироваться.
Как в целом все должно работать:
Мы делаем сайт, там будут продаваться утилиты. На сайте пользователь покупает наш продукт. При покупке регистрируется личный кабинет. Пользователь скачивает продукт к себе в терминал.
Лицензия привязывается к номеру счета и работает динамически. То есть клиент купивший лицензию на 1 счет может единовременно работать с продуктом только на 1 счете. Раз в сутки номер активного счета сбрасывается и перезаписывается на стороне сервера по запросам от работающих продуктов или инициализирующихся.
При инициализации продукт отправляет запрос на сайт. Сайт должен идентифицировать, что клиент купивший лицензию хочет активировать лицензию на определенный номер аккаунта. Если за день не было активированной лицензии - сайт должен записать номер активного счета и ответить советнику, что можно инициализироваться. Также раз в 6 часов советник должен отправлять запрос на сервер, активен ли в данный момент текущий счет и либо делать его на сервере активным и продолжать работу, либо, если текущий счет активный, просто продолжать работу, либо отключить советник.
В случае, если выбранного счета нет в списке, то нужно проверить наличие активных лицензий для запущенного продукта, если есть лицензия, проверить наличие свободных слотов для активации и если есть возможность, то нужно занять слот.
О лицензиях:
Лицензия привязывается к номеру счета в терминале
Лицензии будут на разное число счетов, которое будет прописано в переменной внутри советника. То есть одна лицензия может быть на три счета, вторая на 5 счетов.
Лицензия на определенное число как демо так и реальных счетов
Раз в сутки выбранные номера счетов сбрасываются. Советник отправляет запрос для проверки, есть ли счет в списке.
Серверная часть также должна быть с комментариями. Весь код должен быть открытым. Необходимо, чтобы алгоритм был как для mql4 так и для mql5 программ.
В случае, если выбранного счета нет в списке, то нужно проверить наличие активных лицензий для запущенного продукта, если есть лицензия, проверить наличие свободных слотов для активации и если есть возможность, то нужно занять слот.
Порядок работы в моем понимании:
1) Отправляем на сервер запрос со следующей информацией:
Логин из лк нашего сайта,
Пароль из лк нашего сайта,
Номер счета терминала,
Название продукта,
Количество лицензий для продукта.
2)На сервере анализируем:
Есть ли пользователь с такими логином и паролем,
Есть ли у этого пользователя купленная лицензия данного продукта,
Есть ли у данного продукта возможность добавить новый счет к списку активных, либо используемый счет уже есть в списке активных либо продукт следует деинициализировать,
Отправляем советнику ответ вида true/false можно ли работать или необходимо отключение продукта.
3)На сервере:
Раз в сутки сбрасываем список активных счетов,
При запросе на добавление нового счета к лицензии советника проверяем можно ли его добавить, добавляем и храним до конца дня.
4)В советнике:
При инициализации отправляем запрос из Пункта 1. Раз в 6 часов отправляем запрос из Пункта 1.
Храним в советнике переменную с числом лицензий для данного файла.
5)Дополнительно:
Необходима возможность вручную отключать выбранные аккаунты, то есть производить аннулирование лицензий в случаях например возврата средств.
Весь код должен корректно работать как для продуктов для mt4 так и для mt5.
Весь код должен быть открытым и содержать комментарии.
Так-как код будет использоваться как мной так и разработчиками сайта, то желательно наличие понятных комментариев и читабельности кода.
Для каждого продукта будет сделано 5 разных версий(3,5,7,10,12 реальных активных аккаунтов + аналогичное число демо аккаунтов). То есть будут как демо так и реальные аккаунты для каждой лицензии.
В целом я описал общий порядок работы того, что нужно получить на выходе, "на пальцах", постольку поскольку не являюсь специалистом ни в данных обработках со стороны