Найдите исполнителя для вашего проекта прямо сейчас!
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.

Техническое задание на разработку сервисов внешнего 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-museums?api_key=PARTNER_API_KEY

Общие требования к статусам ответов и ошибок.

Ошибки возвращаются в виде кода статуса 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 должен логировать все запросы и ошибки.

год назад
guest_1677577685486
год в сервисе
Был
год назад