Разработать прототип 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
Заказчик
Отличный программист ,вежливый , пунктуальный,
адекватная цена, рекомендую
10 месяцев назад
R50 efade109121cd8b03f81e20d3aece25e
Фрилансер
Отличный заказчик! Чёткое ТЗ, всегда на связи, оперативные решения различных моментов по ТЗ. Оплата как по часам (изначально договаривались об оплате по частям) и бонус в конце, рекомендую!
10 месяцев назад