Разработка сервисов внешнего api и встраиваемого виджета для сайта
500 руб. за проект
Техническое задание на разработку сервисов внешнего api и встраиваемого виджета для сайта продажи билетов в музеи
# 1. Цель
Цель – разработать внешнее api для сайта avangard-travel.com; c его использованием разработать встраиваемый на другие веб-сайты функциональный блок покупки билетов (веб-виджет).
# 2. Описание сервисов
Внешнее api - модуль получения запросов от внешних источников с авторизацией и аутентификацией запросов. Для осуществления аутентификации и разделения прав доступов необходим механизм учета и выдачи / обновления / отзыва api ключей. (Интерфейс учета внешний приложений)
Виджет является клиентом для подачи заявки с веб-страницы на которую он был добавлен.
Продажа билетов через виджет принадлежит конкретному агенту avangard-travel, чьи учетные данные интерфейса (fid и api_key) передаются в ссылке. Соответсвенно, за эти продажи агент получает вознаграждение. Информация о сущностях необходимых для заказа должна передаваться посредством внешнего api.
fid и api_key - механизм идентификации приложения и авторизации клиента сервером
*Веб-виджет является частным случаем внешнего приложения/клиента который получает данные путем запросов на внешнее api с использованием выданного на него api_key*
## 2.1. Функционал внешнего api
Внешнее api подразумевает возможность:
- передачи внешнему ресурсу информации о сущностях системы необходимых для создания заказа: объекты продажи, билеты, цены, статическая информация об объектах (график работы, контакты, описание, информация как использовать билет, фото и т.д.) и т.д.
- передачу информации о ценах на билеты с учетом добавленного процента стоимости, который устанавливается в интерфейсе учета внешних приложений
- создания заказа во внутреней системе avangard-travel.com путем получения внешнего запроса
- передачу сгенерированных билетов
- проведения оплаты
## 2.2. Функционал виджета
По наполнению виджет должен отображать:
- форму создания заказа близкую / аналогичную к сайту avangard-travel.com: выбор объекта, даты, времени, кол-ва билетов, доп. услуг и тд
- Должен отображать цены на виды билетов с учетом добавленного процента закрепленного за агентом в интерфейсе учета внешних приложений
- Должен отображать статическую информацию об объекте (график, контакты, описание, как использовать билет и тд)
Виджет должен позволять продавать билеты как в отдельный музей, так и во все музеи в городе или все музеи платформы. Для этого должна быть возможность выбрать один из трех вариантов использования:
- для всех музеев в городе
- для всех музеев платформы
- только для выбранного музея
## 2.3. Требования к веб-виджету
Добавление виджета на сторонний сайт должно происходить путем встраивания js скрипта.
## 2.4. Требования к внешнему api
### 2.4.1. Общие требования к типу запросов:
- Все методы API с типом запроса GET для поддержки jsonp. Запрос авторизуется на сервере при помощи ключа API из кабинета учета внешних приложений в параметре входящего запроса api_key:
Пример запроса:
https://avangard-travel.com/api/v1/partner_api/get...
Общие требования к статусам ответов и ошибок.
Ошибки возвращаются в виде кода статуса HTTP и тела ответа.
Например ошибка валидации входящих данных, HTTP code 422, тело ответа:
{
"error": [{
"code": 1422,
"title": "ошибка входящих данных",
"message": "вы не ввели ФИО клиента"
}]
}
"error": [...]
может содержать более одного элемента в массиве, в случае, если в одном запросе несколько разных ошибок.
### 2.4.2. Схема оплаты заказа
1. Переадресация пользователя на платежную страницу (модульбанк), после выбора им билетов для покупки билетов.
2. Возможна вторая схема оплаты - Предусматривает проведение оплаты непосредственно внутри системы партнера и выписывание билета через API.(Под вопросом)
# 3. Стек технологий
django 2.1.2
postgresql
celery
# 4. Требования к дизайну
Дизайн встраимового виджета для заказа билетов можно сделать приближенным к сайту avangard-travel.com
# 5. Дополнительные требования
- API должен обрабатывать все запросы асинхронно.
- Для обработки запросов должен использоваться язык программирования Python и фреймворк Django.
- Для хранения данных используйте реляционную базу данных PostgreSQL.
- Все запросы должны быть защищены от атак XSS, SQL Injection и других уязвимостей.
- API должен поддерживать кеширование для улучшения производительности.
- Документация API должна быть предоставлена в формате Swagger.
- API должен логировать все запросы и ошибки.
# 1. Цель
Цель – разработать внешнее api для сайта avangard-travel.com; c его использованием разработать встраиваемый на другие веб-сайты функциональный блок покупки билетов (веб-виджет).
# 2. Описание сервисов
Внешнее api - модуль получения запросов от внешних источников с авторизацией и аутентификацией запросов. Для осуществления аутентификации и разделения прав доступов необходим механизм учета и выдачи / обновления / отзыва api ключей. (Интерфейс учета внешний приложений)
Виджет является клиентом для подачи заявки с веб-страницы на которую он был добавлен.
Продажа билетов через виджет принадлежит конкретному агенту avangard-travel, чьи учетные данные интерфейса (fid и api_key) передаются в ссылке. Соответсвенно, за эти продажи агент получает вознаграждение. Информация о сущностях необходимых для заказа должна передаваться посредством внешнего api.
fid и api_key - механизм идентификации приложения и авторизации клиента сервером
*Веб-виджет является частным случаем внешнего приложения/клиента который получает данные путем запросов на внешнее api с использованием выданного на него api_key*
## 2.1. Функционал внешнего api
Внешнее api подразумевает возможность:
- передачи внешнему ресурсу информации о сущностях системы необходимых для создания заказа: объекты продажи, билеты, цены, статическая информация об объектах (график работы, контакты, описание, информация как использовать билет, фото и т.д.) и т.д.
- передачу информации о ценах на билеты с учетом добавленного процента стоимости, который устанавливается в интерфейсе учета внешних приложений
- создания заказа во внутреней системе avangard-travel.com путем получения внешнего запроса
- передачу сгенерированных билетов
- проведения оплаты
## 2.2. Функционал виджета
По наполнению виджет должен отображать:
- форму создания заказа близкую / аналогичную к сайту avangard-travel.com: выбор объекта, даты, времени, кол-ва билетов, доп. услуг и тд
- Должен отображать цены на виды билетов с учетом добавленного процента закрепленного за агентом в интерфейсе учета внешних приложений
- Должен отображать статическую информацию об объекте (график, контакты, описание, как использовать билет и тд)
Виджет должен позволять продавать билеты как в отдельный музей, так и во все музеи в городе или все музеи платформы. Для этого должна быть возможность выбрать один из трех вариантов использования:
- для всех музеев в городе
- для всех музеев платформы
- только для выбранного музея
## 2.3. Требования к веб-виджету
Добавление виджета на сторонний сайт должно происходить путем встраивания js скрипта.
## 2.4. Требования к внешнему api
### 2.4.1. Общие требования к типу запросов:
- Все методы API с типом запроса GET для поддержки jsonp. Запрос авторизуется на сервере при помощи ключа API из кабинета учета внешних приложений в параметре входящего запроса api_key:
Пример запроса:
https://avangard-travel.com/api/v1/partner_api/get...
Общие требования к статусам ответов и ошибок.
Ошибки возвращаются в виде кода статуса HTTP и тела ответа.
Например ошибка валидации входящих данных, HTTP code 422, тело ответа:
{
"error": [{
"code": 1422,
"title": "ошибка входящих данных",
"message": "вы не ввели ФИО клиента"
}]
}
"error": [...]
может содержать более одного элемента в массиве, в случае, если в одном запросе несколько разных ошибок.
### 2.4.2. Схема оплаты заказа
1. Переадресация пользователя на платежную страницу (модульбанк), после выбора им билетов для покупки билетов.
2. Возможна вторая схема оплаты - Предусматривает проведение оплаты непосредственно внутри системы партнера и выписывание билета через API.(Под вопросом)
# 3. Стек технологий
django 2.1.2
postgresql
celery
# 4. Требования к дизайну
Дизайн встраимового виджета для заказа билетов можно сделать приближенным к сайту avangard-travel.com
# 5. Дополнительные требования
- API должен обрабатывать все запросы асинхронно.
- Для обработки запросов должен использоваться язык программирования Python и фреймворк Django.
- Для хранения данных используйте реляционную базу данных PostgreSQL.
- Все запросы должны быть защищены от атак XSS, SQL Injection и других уязвимостей.
- API должен поддерживать кеширование для улучшения производительности.
- Документация API должна быть предоставлена в формате Swagger.
- API должен логировать все запросы и ошибки.
В заказе есть исполнитель
При переводе заказа из архивного в актуальный, текущий исполнитель будет снят с задачи.
Выберите тип сделки
С безопасной сделкой вы всегда сможете вернуть средства, если что-то пойдет не так. С простой сделкой вы самостоятельно договариваетесь с исполнителем об оплате и берете на себя решение конфликтов.