Разработать прототип API сервиса по продаже подписок

Цена договорная
11 сентября 2023, 08:59 • 10 откликов • 64 просмотра
Задача - разработать прототип API сервиса по продаже подписок, а также архитектуру БД, необходимую для хранения информации.


Язык реализации - PHP, СУБД - MySQL/MariaDB


Основные сущности:


* Администратор. Основные атрибуты: Логин, пароль


* Клиент. Основные атрибуты: ID, имя, логин, пароль, email, дата регистрации, баланс счёта;


* Тариф. Основные атрибуты: ID, название, стоимость при оплате за 1, 3, 6 и 12 месяцев, флаг актуальности


* Подписка клиента. Основные атрибуты: ID клиента, ID тарифа, дата+время создания, дата+время окончания, флаг заморозки






Минимальный функционал:


Для администратора:


* Вход в систему (параметры - логин, пароль). Ответ (при успешном входе) должен содержать токен авторизации, который затем добавляется в качестве параметра во все нижеследующие запросы.


* Выход из системы (после этого токен авторизации из предыдущего пункта становится невалидным)


* Получить список существующих тарифов со всеми атрибутами


* Добавить новый тариф (параметры - название, стоимости при оплате за 1/3/6/12 месяцев)


* Изменить флаг актуальности тарифа. На неактуальные тарифы клиенты не могут подписаться, однако существующие подписки продолжают действовать до их окончания.


* Получить список всех клиентов (ID, имя, логин, email, дата регистрации, баланс, общее число подписок, число работающих подписок)


* Получить информацию о клиенте (параметр - ID клиента, результат - вся информация из предыдущего пункта, а также массив с данными обо всех подписках клиента)


* Получить список клиентов, подписанных на заданный тариф, чьи подписки не истекли (но могут быть заморожены). Параметр - ID тарифа.






Для клиента:


* Регистрация нового клиента (параметры - имя, логин, пароль, email)


* Вход в систему (параметры - логин, пароль). Ответ (при успешном входе) должен содержать токен авторизации, который затем добавляется в качестве параметра во все нижеследующие запросы.


* Выход из системы (после этого токен авторизации из предыдущего пункта становится невалидным)


* Пополнение баланса (параметр - токен оплаты, в тестовом задании можно использовать статичные токены для увеличения баланса на 1, 10, 50 и 100 единиц)


* Запрос баланса


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


* Получение списка всех своих подписок


* Получение списка своих работающих подписок (не окончившихся и не замороженных)


* Новая подписка на тариф (параметры - ID тарифа, период оплаты (1, 3, 6 или 12 месяцев)). Выполняется при наличии нужной суммы на балансе (после чего эта сумма списывается).


* Заморозка подписки.


* Разморозка подписки. При разморозке дата окончания продлевается на число полных суток, которые подписка была заморожена.


* Отмена подписки. При отмене на баланс должны возвращаться средства в размере: (уплаченная за подписку сумма)/(число оплаченных дней)*(число полных суток до окончания подписки). В случае, если отменяемая подписка заморожена, расчёт производится так, как если бы она была разморожена непосредственно перед отменой.


* Запрос истории изменений баланса. Информация о каждом изменении должна содержать дату+время, сумму, комментарий о сути операции (оплата с названием тарифа, пополнение, возврат)






Всё взаимодействие с сервисом должно осуществляться посредством передачи JSON-объектов.


Ответ должен всегда содержать строковое поле result со значением OK, если действие проведено успешно, или error, если произошла та или иная ошибка. В случае ошибки ответ также должен содержать строковое поле error с кратким описанием сути ошибки.


Логин и пароль администратора можно задать статически на своё усмотрение.


Система должна также содержать скрипт для развёртывания необходимых таблиц в БД.


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


Приветствуется наличие документации с кратким описанием функций и их параметров.

Отзывы
R50 e1f4a9c20e0d5ef85babee6cf2dd19d0
Заказчик
Отличный программист ,вежливый , пунктуальный,
адекватная цена, рекомендую
1 год назад
R50 efade109121cd8b03f81e20d3aece25e
Фрилансер
Отличный заказчик! Чёткое ТЗ, всегда на связи, оперативные решения различных моментов по ТЗ. Оплата как по часам (изначально договаривались об оплате по частям) и бонус в конце, рекомендую!
1 год назад