ПРОТОКОЛ БИЛЕТНОЙ СИСТЕМЫ
Версия 12.12.2018
ОПИСАНИЕ
ОБЩАЯ СХЕМА ИСПОЛЬЗОВАНИЯ ПРОТОКОЛА
ВИД ОТВЕТА
АВТОРИЗАЦИЯ (command = AUTH)
СОЗДАНИЕ ПОЛЬЗОВАТЕЛЯ (command = CREATE_USER)*
ПОЛУЧЕНИЕ СПИСКА ГОРОДОВ (command = GET_CITIES)
ПОЛУЧЕНИЯ СПИСКА ТИПОВ МЕСТ ПРОВЕДЕНИЯ (command = GET_VENUE_TYPES)
ПОЛУЧЕНИЕ СПИСКА МЕСТ ПРОВЕДЕНИЯ (command = GET_VENUES)
ПОЛУЧЕНИЕ СПИСКА МЕРОПРИЯТИЙ (command = GET_ALL_ACTIONS)*
ПОЛУЧЕНИЕ СПИСКА МЕРОПРИЯТИЙ (command = GET_ACTIONS_V2)
ПОЛУЧЕНИЕ ИНФОРМАЦИИ О МЕРОПРИЯТИИ, РАСШИРЕННЫЙ МЕТОД (command = GET_ACTION_EXT)
ПОЛУЧЕНИЕ СПИСКА МЕСТ ПО ID СЕАНСА (command = GET_SEAT_LIST)
БРОНИРОВАНИЕ МЕСТ В СХЕМЕ ЗАЛА С РАЗМЕЩЕНИЕМ (command = RESERVATION)
БРОНИРОВАНИЕ МЕСТ В СХЕМЕ ЗАЛА БЕЗ РАЗМЕЩЕНИЯ (command = RESERVATION)
РАЗБРОНИРОВАНИЕ МЕСТА (command = RESERVATION)
ПОЛУЧЕНИЕ СПИСКА ЗАБРОНИРОВАННЫХ МЕСТ (command = GET_CART)
СОЗДАНИЕ ЗАКАЗА (command = CREATE_ORDER)
СОЗДАНИЕ ЗАКАЗА (command = CREATE_ORDER_EXT)*
ОТМЕНА ЗАКАЗА (command = CANCEL_ORDER)*
ОПЛАТА ЗАКАЗА (command = PAY_ORDER)*
ПОЛУЧЕНИЕ ЗАКАЗОВ ПОЛЬЗОВАТЕЛЯ (command = GET_ORDERS)
ПОЛУЧЕНИЕ ЗАКАЗОВ ПОЛЬЗОВАТЕЛЯ (command = GET_ORDERS_EXT)
ПОЛУЧЕНИЕ СПИСКА СЕАНСОВ, ПО КОТОРЫМ БЫЛИ КУПЛЕНЫ БИЛЕТЫ (command = GET_ACTION_EVENTS_GROUPED_BY_TICKETS)
ПОЛУЧЕНИЕ КУПЛЕННЫХ БИЛЕТОВ ПО ID ПРЕДСТАВЛЕНИЯ (command = GET_TICKETS_BY_ACTION_EVENT)
ПОЛУЧЕНИЕ ШАБЛОНА БИЛЕТА В ФОРМАТЕ SVG
ПОЛУЧЕНИЕ КУПЛЕННЫХ БИЛЕТОВ ПО ID ЗАКАЗА (command = GET_TICKETS_BY_ORDER)
ПОЛУЧЕНИЕ ИНФОРМАЦИИ ПО ПРОДАННЫМ БИЛЕТАМ ЗА КОНКРЕТНЫЙ ДЕНЬ (command = GET_TICKETS_BY_DAY)
ПОЛУЧЕНИЕ ИНФОРМАЦИИ О ПОЛЬЗОВАТЕЛЕ (command = GET_USER_INFO)
ОТПРАВКА БИЛЕТОВ НА ПОЧТУ (command = SEND_TICKETS_TO_EMAIL)
УДАЛЕНИЕ (command = DELETE)
ПОЛУЧЕНИЕ ИНФОРМАЦИИ О ЗАКАЗЕ (command = GET_ORDER_INFO)
ПОЛУЧЕНИЕ ПОЧТЫ (command = GET_EMAIL)
ОТПРАВКА GCM ТОКЕНА НА СЕРВЕР (command = SET_PUSH_TOKEN)
ПОЛУЧИТЬ НОВОСТИ (command = GET_NEWS)
ПРОВЕРКА КДП (command = CHECK_KDP)
ПОЛУЧЕНИЕ ДАННЫХ ДЛЯ ФИЛЬТРА (command = GET_FILTER)
ПРИВЯЗКА ПОЧТЫ (command = BIND_EMAIL)
ПОДТВЕРЖДЕНИЕ ПОЧТЫ (command = CONFIRM_EMAIL)
ПОЛУЧЕНИЕ КАРТ (МЭК) (command = GET_MECS)
ВОЗВРАТ БИЛЕТОВ (command = REFUND_TICKETS)*
СТАТУС ЗАКАЗА
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 09.05.2016
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 20.05.2016
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 15.06.2016
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 22.06.2016
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 23.06.2016
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 08.07.2016
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 22.07.2016
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 16.08.2016
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 02.09.2016
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 25.10.2016
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 25.11.2016
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 15.12.2016
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 27.12.2016
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 04.02.2017
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 05.05.2017
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 18.05.2017
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 08.06.2017
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 06.07.2017
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 13.07.2017
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 22.07.2017
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 09.08.2017
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 23.08.2017
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 02.10.2017
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 18.02.2018
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 01.03.2018
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 12.03.2018
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 19.08.2018
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 16.10.2018
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 06.12.2018
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 12.12.2018
Для взаимодействия осуществляются HTTPS POST запросы в формате JSON в кодировке UTF-8. Ответ возвращается в формате JSON в кодировке UTF-8.
URL тестовой зоны https://api.bil24.pro:1240/json
URL реальной зоны https://api.bil24.pro/json
Типы полей:
число int - целое значение в диапазоне от -2 147 483 648 до 2 147 483 647
число Uint - целое беззнаковое значение в диапазоне от 0 до 2 147 483 647
число long - целое значение в диапазоне от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807
число Ulong - целое беззнаковое значение в диапазоне от 0 до 9 223 372 036 854 775 807
число cur - вещественное значение, содержащее до 2 знаков после точки, например 134.66
boolean - литерал принимающий значения true или false
строка - строковое значение неограниченной длины
ОБЩАЯ СХЕМА ИСПОЛЬЗОВАНИЯ ПРОТОКОЛА
Команды протокола делятся на сессионные и несессионные.
Список несессионных команд:
1. GET_FILTER
2. GET_CITIES
3. GET_VENUE_TYPES
4. GET_VENUES
5. GET_ALL_ACTIONS
6. GET_ACTIONS_V2
7. GET_ACTION_EXT
8. GET_SEAT_LIST
9. GET_TICKETS_BY_DAY
Нет необходимости выполнять команду AUTH раньше какой-либо из перечисленных команд. Для их выполнения не нужен идентификатор сессии (sessionId).
Для выполнения сессионных команд нужно иметь sessionId. Получить его первоначально нужно с помощью команды AUTH (для билетных систем CREATE_USER). Полученные данные пользователя рекомендуется сохранить и использовать повторно.
Сессия пользователя определяется sessionId и действует бессрочно.
В общем случае, sessionId понадобится перед командой BIND_EMAIL (RESERVATION для билетных систем).
На все запросы возвращается результат в формате JSON:
{
"resultCode": 0,
"description": "OK"
"command": "COMMAND"
…………………………
}
Поле | Тип | Обязательность | Описание |
resultCode | число int | Обязательное | Результат запроса |
description | строка | Обязательное | Описание |
command | строка | Обязательное | Команда, переданная в запросе |
Данные поля присутствуют в каждом ответе.
Если resultCode не равен 0, то поле description содержит описание ошибки.
Значения поля resultCode:
Значение | Описание |
-1 |
Непредвиденная ошибка (ошибка протокола, ошибка передачи данных, прочие ошибки...), описание смотреть в поле description |
0 |
Результат команды успешен |
1 |
Неверные идентификаторы сессии (userId или sessionId) |
Сообщения для пользователя |
|
101 | Стандартное сообщение. |
102 | Почта не привязана. Проверять при запросах RESERVATION. |
Поле | Тип | Обязательность | Описание |
fid | число Ulong | Обязательное | идентификатор интерфейса (frontend id) |
token |
строка |
Обязательное |
токен интерфейса |
Описание: авторизация пользователя. Для интерфейса Билетная система вместо данного метода необходимо использовать метод CREATE_USER.
Поля запроса:
Поле | Тип | Обязательность | Описание |
command | строка | Обязательное | AUTH |
userId | число Ulong | Обязательное, если есть sessionId | id пользователя в БС |
sessionId | строка | Обязательное, если есть userId | id сессии пользователя |
Состав полей ответа:
Поле | Тип | Обязательность | Описание |
userId | число Ulong | Обязательное | id пользователя в БС |
sessionId | строка | Обязательное | id сессии пользователя |
frontendType | число Uint | Обязательное | тип интерфейса |
Данные для запроса брать из cookies, если ранее уже выполнялся данный запрос. Если запрос выполняется первый раз, то userId и sessionId в запросе не передавать.
Пример запроса:
{
"userId": 1,
"sessionId": "b1581ac148e0796b176a8bc4e7b773ad",
"command": "AUTH",
"fid": 1,
"token": "f8fcf07a4ea5c7979780"
}
Пример ответа:
{
"userId": 1,
"sessionId": "b1581ac148e0796b176a8bc4e7b773ad",
"command": "AUTH",
"frontendType": 2,
"resultCode": 0,
"description": "OK"
}
После получения ответа, сохранить данные и использовать в запросах, где необходимы эти поля.
СОЗДАНИЕ ПОЛЬЗОВАТЕЛЯ (command = CREATE_USER)*
Описание: метод создает нового пользователя, который в дальнейшем может использоваться для бронирования мест, создания и оплаты заказа и получения билетов.
Используется вместо метода AUTH для интерфейса Билетная система.
*только для интерфейса Билетная система
Поля запроса:
Поле | Тип | Обязательность | Описание |
command | строка | Обязательное | CREATE_USER |
Состав полей ответа:
Поле | Тип | Обязательность | Описание |
userId | число Ulong | Обязательное | id пользователя в БС |
sessionId | строка | Обязательное | id сессии пользователя |
Пример запроса:
{
"command": "CREATE_USER",
"fid": 1,
"token": "f8fcf07a4ea5c7979780"
}
Пример ответа:
{
"userId": 1,
"sessionId": "b1581ac148e0796b176a8bc4e7b773ad",
"command": "CREATE_USER",
"resultCode": 0,
"description": "OK"
}
После получения ответа, сохранить данные и использовать в запросах, где необходимы эти поля.
ПОЛУЧЕНИЕ СПИСКА ГОРОДОВ (command = GET_CITIES)
Описание: получение списка всех городов, присутствующих в системе. Для получения списка только тех городов, в которых есть актуальные события, необходимо использовать метод GET_FILTER.
Использование метода GET_FILTER является предпочтительным.
Поля запроса:
Поле | Тип | Обязательность | Описание |
command | строка | Обязательное | GET_CITIES |
Состав полей ответа:
Поле | Тип | Обязательность | Описание |
cityList | массив | Обязательное | список городов |
cityList:
Поле | Тип | Обязательность | Описание |
cityId | число Ulong | Обязательное | id города в БС |
cityName | строка | Обязательное | наименование города в БС |
Пример запроса:
{
"command": "GET_CITIES",
"fid": 1,
"token": "f8fcf07a4ea5c7979780"
}
Пример ответа:
{
"cityList": [
{
"cityId": 1,
"cityName": "Сочи"
},
{
"cityId": 2,
"cityName": "Краснодар"
}
],
"command": "GET_CITIES",
"resultCode": 0,
"description": "OK"
}
ПОЛУЧЕНИЯ СПИСКА ТИПОВ МЕСТ ПРОВЕДЕНИЯ (command = GET_VENUE_TYPES)
Описание: получение списка всех типов мест проведения, присутствующих в системе.
Поля запроса:
Поле | Тип | Обязательность | Описание |
command | строка | Обязательное | GET_VENUE_TYPES |
Состав полей ответа:
Поле | Тип | Обязательность | Описание |
venueTypeList | массив | Обязательное | список типов мест проведения |
venueTypeList:
Поле | Тип | Обязательность | Описание |
venueTypeId | число Uint | Обязательное | id типа места проведения |
venueTypeName | строка | Обязательное | наименование типа места проведения |
ПОЛУЧЕНИЕ СПИСКА МЕСТ ПРОВЕДЕНИЯ (command = GET_VENUES)
Описание: получение списка всех мест проведения, присутствующих в системе. Для получения актуальных мест проведения, необходимо использовать метод GET_FILTER.
Поля запроса:
Поле | Тип | Обязательность | Описание |
command | строка | Обязательное | GET_VENUES |
cityId | число Ulong | Обязательное | id города в БС |
venueTypeId | число Uint | Необязательное | Тип мест проведения, если не указан, в ответе будут все места проведения в городе |
Состав полей ответа:
Поле | Тип | Обязательность | Описание |
venueList | массив | Обязательное | список мест проведения |
venueList:
Поле | Тип | Обязательность | Описание |
venueId | число Ulong | Обязательное | id места проведения |
venueName | строка | Обязательное | наименование места проведения |
venueTypeId | число Uint | Обязательное | id типа места проведения |
venueTypeName | строка | Обязательное | наименование типа места проведения |
address | строка | Обязательное | адрес места проведения |
geoLat | строка (##.######) | Обязательное | широта места проведения |
geoLon | строка (##.######) | Обязательное | долгота места проведения |
imageUrl | строка | Обязательное | ссылка на изображение места проведения |
description | строка | Обязательное | описание места проведения |
ПОЛУЧЕНИЕ СПИСКА МЕРОПРИЯТИЙ (command = GET_ALL_ACTIONS)*
Описание: метод возвращает все данные метода GET_FILTER, плюс список всех доступных мероприятий.
Позволяет одним запросом получить всю необходимую информацию для Билетных систем.*Только для интерфейса Билетная система
Поля запроса:
Поле | Тип | Обязательность | Описание |
command | строка | Обязательное | GET_ALL_ACTIONS |
Состав полей ответа:
Поле | Тип | Обязательность | Описание |
cityList | массив | Обязательное | список городов |
kindList | массив | Обязательное | список видов |
actionList | массив | Обязательное | список мероприятий |
cityList:
Поле | Тип | Обязательность | Описание |
cityId | число Ulong | Обязательное | id города |
cityName | строка | Обязательное | название города |
venueList | массив | Обязательное | список мест проведений |
venueList:
Поле | Тип | Обязательность | Описание |
venueId | число Ulong | Обязательное | id места проведения |
venueName | строка | Обязательное | наименование места проведения |
kindList:
Поле | Тип | Обязательность | Описание |
kindId | число Uint | Обязательное | id вида |
kindName | строка | Обязательное | наименование вида |
actionList:
Поле | Тип | Обязательность | Описание |
actionId | число Ulong | Обязательное | id представления |
actionName | строка | Обязательное | краткое наименование представления |
fullActionName | строка | Обязательное | полное наименование представления |
kindId | число Uint | Обязательное | id вида |
kindName | строка | Обязательное | наименование вида |
organizerId | число Ulong | Обязательное | id организатора |
organizerName | строка | Обязательное | название организатора |
legalOwner | строка | Обязательное | название устроителя |
duration | число Uint | Обязательное | продолжительность представления в минутах |
posterName | строка | Обязательное | название постера |
description | строка | Обязательное | описание |
smallPosterUrl | строка | Обязательное | url постера (320 x 335) |
bigPosterUrl | строка | Обязательное | url постера (640 x 670) |
bookletUrl | строка | Необязательное | url буклета представления |
kdp* | boolean | Обязательное | true - у представления есть КДП |
rating | число Uint | Обязательное | рейтинг от 0 до 10 |
age | строка | Обязательное | возрастное ограничение |
actionEventList | массив | Обязательное | список сеансов |
actionEventList:
Поле | Тип | Обязательность | Описание |
actionEventId | число Ulong | Обязательное | id сеанса |
day | строка | Обязательное | дата проведения сеанса в формате dd.MM.yyyy |
time | строка | Обязательное | время проведения сеанса в формате HH:mm |
cityId | число Ulong | Обязательное | id города |
venueId | число Ulong | Обязательное | id места проведения |
seatingPlanId | число Ulong | Обязательное | id схемы зала |
seatingPlanName | строка | Обязательное | название схемы зала |
placementUrl | строка | Необязательное | ссылка на схему зала. Если поле отсутствует, схема зала без размещения |
eTicket | boolean | Обязательное | false - МЭБ на контроле представления не принимается |
fullNameRequired | boolean | Обязательное | если true, при создании заказа параметр fullName (полное имя покупателя) является обязательным |
categoryLimitList | массив | Обязательное | список категорий, сгруппированных по лимитам (категории без размещения) |
categoryLimitList:
Поле | Тип | Обязательность | Описание |
remainder | число Uint | Необязательное | Общее ограничение мест по списку категорий. Если параметр отсутствует, смотрим availability |
categoryList | массив | Обязательное | список категорий, объединенных одним лимитом |
categoryList:
Поле | Тип | Обязательность | Описание |
categoryPriceId | число Ulong | Обязательное | id ценовой категории |
categoryPriceName | строка | Обязательное | наименование ценовой категории |
price | число cur | Обязательное | стоимость ценовой категории |
availability | число int | Обязательное | количество доступных мест в категории |
ПОЛУЧЕНИЕ СПИСКА МЕРОПРИЯТИЙ (command = GET_ACTIONS_V2)
Описание: метод возвращает список представлений по городу.
Поля запроса:
Поле | Тип | Обязательность | Описание |
command | строка | Обязательное | GET_ACTIONS_V2 |
cityId | число Ulong | Обязательное | id города |
Состав полей ответа:
Поле | Тип | Обязательность | Описание |
actionList | массив | Обязательное | список мероприятий |
actionList:
Поле | Тип | Обязательность | Описание |
actionId | число Ulong | Обязательное | id представления |
actionName | строка | Обязательное | краткое наименование представления |
fullActionName | строка | Обязательное | полное наименование представления |
duration | число Uint | Обязательное | продолжительность представления в минутах |
kindId | число Uint | Обязательное | id вида |
kindName | строка | Обязательное | наименование вида |
posterName | строка | Обязательное | название постера |
smallPosterUrl | строка | Обязательное | url постера (320 х 335) |
bigPosterUrl | строка | Обязательное | url постера (640 х 670) |
minSum | число cur | Обязательное | минимальная стоимость сеанса |
firstEventDate | строка | Обязательное | первая дата сеанса |
lastEventDate | строка | Обязательное | последняя дата сеанса |
rating | число Uint | Обязательное | рейтинг от 0 до 10 |
kdp | boolean | Обязательное | true - у представления есть КДП* |
cityId | число Ulong | Обязательное | id города, переданный в запросе |
cityName | строка | Обязательное | наименование города |
actionEventTime | строка | Необязательное | формат HH:mm поле присутствует, если сеанс идет в одно и тоже время |
venueMap | объект | Обязательное | список мест проведений. key - venueId, value - venueName |
* КДП (код доступа к представлению - временное решение).
Перед открытием схемы зала или нажатием кнопки забронировать (в схеме зала без размещения) пользователь должен ввести КДП (метод для проверки КДП - CHECK_KDP)
Пример запроса:
{
"cityId": 1,
"command": "GET_ACTIONS_V2"
"fid": 1,
"token": "f8fcf07a4ea5c7979780"
}
Пример ответа:
{
"actionList": [
{
"actionId": 193,
"actionName": "Любовь Успенская",
"fullActionName": "Королева городского романса",
"duration": 120,
"kindId": 0,
"kindName": "События",
"posterName": "Название постера",
"smallPosterUrl": "https://api.bil24.pro:1240/image?type=smallPoster&actionId=193&hash=gznpw8zi9rog7k7e923ko32ap",
"bigPosterUrl": "https://api.bil24.pro:1240/image?type=bigPoster&actionId=193&hash=hwyb7h53x926q0tiiopdgjpp0",
"minSum": 1500,
"firstEventDate": "27.05.2016",
"lastEventDate": "27.05.2016",
"rating": 10,
"kdp": false,
"cityId": 1,
"cityName": "Сочи",
"actionEventTime": "19:30",
"venueMap": {
"1": "Зимний театр"
}
},
{
"actionId": 219,
"actionName": "Кармен",
"fullActionName": "Ледовый мюзикл",
"duration": 180,
"kindId": 0,
"kindName": "События",
"posterName": "Название постера",
"smallPosterUrl": "https://api.bil24.pro:1240/image?type=smallPoster&actionId=219&hash=sc8zn3tgamlvtpdjbgprv3dy2",
"bigPosterUrl": "https://api.bil24.pro:1240/image?type=bigPoster&actionId=219&hash=qwejy8em5q5clku76dyxshd58",
"minSum": 1000,
"firstEventDate": "10.06.2016",
"lastEventDate": "02.10.2016",
"rating": 10,
"kdp": false,
"cityId": 1,
"cityName": "Сочи",
"actionEventTime": "18:30",
"venueMap": {
"7": "ЛД \"Айсберг\""
}
}
],
"command": "GET_ACTIONS_V2",
"resultCode": 0,
"description": "OK"
}
ПОЛУЧЕНИЕ ИНФОРМАЦИИ О МЕРОПРИЯТИИ, РАСШИРЕННЫЙ МЕТОД (command = GET_ACTION_EXT)
Описание: метод возвращает информацию о представлении в конкретном городе, места где оно проводится и сеансы
Поля запроса:
Поле | Тип | Обязательность | Описание |
command | строка | Обязательное | GET_ACTION_EXT |
cityId | число Ulong | Обязательное | id города |
actionId | число Ulong | Обязательное | id представления |
userId* | число Ulong | Необязательное | id пользователя |
* userId - на схеме зала будут окрашены места данного пользователя
Состав полей ответа:
Поле | Тип | Обязательность | Описание |
action | объект | Обязательное | представление |
action:
Поле | Тип | Обязательность | Описание |
actionId | число Ulong | Обязательное | id представления |
actionName | строка | Обязательное | краткое наименование представления |
fullActionName | строка | Обязательное | полное наименование представления |
kindId | число Uint | Обязательное | id вида |
kindName | строка | Обязательное | наименование вида |
cityId | число Ulong | Обязательное | id города |
cityName | строка | Обязательное | название города |
organizerId | число Ulong | Обязательное | id организатора |
organizerName | строка | Обязательное | название организатора |
legalOwner | строка | Обязательное | название устроителя |
posterName | строка | Обязательное | название постера |
duration | число Uint | Обязательное | продолжительность представления в минутах |
description | строка | Обязательное | описание |
smallPosterUrl | строка | Обязательное | url постера (320 x 335) |
bigPosterUrl | строка | Обязательное | url постера (640 x 670) |
bookletUrl | строка | Необязательное | url буклета представления |
kdp* | boolean | Обязательное | true - у представления есть КДП |
rating | число Uint | Обязательное | рейтинг от 0 до 10 |
age | строка | Обязательное | возрастное ограничение |
venueList | массив | Обязательное | список мест проведений |
*kdp - Код доступа к представлению (КДП). Если параметр равен true, то забронировать места можно только если ввести КДП
venueList:
Поле | Тип | Обязательность | Описание |
venueId | число Ulong | Обязательное | id места проведения |
venueName | строка | Обязательное | наименование места проведения |
address | строка | Обязательное | адрес места проведения |
geoLat | строка (##.######) | Обязательное | широта места проведения |
geoLon | строка (##.######) | Обязательное | долгота места проведения |
imageUrl | строка | Обязательное | ссылка на изображение места проведения |
description | строка | Обязательное | описание места проведения |
cityPass | boolean | Обязательное | true - место проведение, где действуют скидки и преференции |
actionEventList | массив | Обязательное | список сеансов |
actionEventList:
Поле | Тип | Обязательность | Описание |
actionEventId | число Ulong | Обязательное | id сеанса |
day | строка | Обязательное | дата проведения сеанса в формате dd.MM.yyyy |
time | строка | Обязательное | время проведения сеанса в формате HH:mm |
seatingPlanId | число Ulong | Обязательное | id схемы зала |
seatingPlanName | строка | Обязательное | название схемы зала |
placementUrl | строка | Необязательное | ссылка на схему зала. если поле отсутствует, схема зала без размещения |
eTicket | boolean | Обязательное | false - МЭБ на контроле представления не принимается |
categoryLimitList | массив | Обязательное | список категорий, сгруппированных по лимитам (категории без размещения) |
Существует 3 вида схем:
1. Только без размещения. placementUrl будет отсутствовать, смотрим categoryLimitList.
2. Только с размещением. Смотрим placementUrl, categoryLimitList будет пустой.
3. Комбинированная. Смотрим placementUrl и categoryLimitList.
categoryLimitList:
Поле | Тип | Обязательность | Описание |
remainder | число Uint | Необязательное | Общее ограничение мест по списку категорий. Если параметр отсутствует, смотрим availability |
categoryList | массив | Обязательное | список категорий, объединенные одним лимитом |
categoryList:
Поле | Тип | Обязательность | Описание |
categoryPriceId | число Ulong | Обязательное | id ценовой категории |
categoryPriceName | строка | Обязательное | наименование ценовой категории |
price | число cur | Обязательное | стоимость ценовой категории |
availability* | число int | Обязательное | количество доступных мест в категории |
*availability - количество доступных мест в категории. Если remainder отсутствует, то ориентируемся на availability. Если remainder присутствует, то нужно внимательно использовать эти параметры.
К примеру общее ограничение remainder на 3 категории может быть 100, но и в каждой категории availability также может быть 100.
Список сеансов actionEventList возвращается в отсортированном виде по дате проведения.
Пример запроса:
{
"cityId": 1,
"actionId": 80,
"userId": 1269,
"command": "GET_ACTION_EXT",
"fid": 1,
"token": "f8fcf07a4ea5c7979780"
}
Пример ответа:
{
"action": {
"actionId": 193,
"actionName": "Любовь Успенская",
"fullActionName": "Королева городского романса",
"kindId": 0,
"kindName": "События",
"cityId": 1,
"cityName": "Сочи",
"duration": 120,
"posterName": "Королева городского романса",
"description": ""Настоящая Любовь"",
"smallPosterUrl": "https://api.bil24.pro:1240/image?type=smallPoster&actionId=193&hash=gznpw8zi9rog7k7e923ko32ap",
"bigPosterUrl": "https://api.bil24.pro:1240/image?type=bigPoster&actionId=193&hash=hwyb7h53x926q0tiiopdgjpp0",
"rating": 10,
"kdp": false,
"venueList": [
{
"venueId": 1,
"venueName": "Зимний театр",
"address": "г. Сочи, ул. Театральная, 2",
"geoLat": "43.572313",
"geoLon": "39.730626",
"imageUrl": "https://api.bil24.pro:1240/image?type=venue&id=1&hash=rrre3fih28k8n68kmjwkdhe91",
"description": "У каждого города есть своя "визитная карточка".",
"actionEventList": [
{
"actionEventId": 681,
"day": "27.05.2016",
"time": "19:30",
"placementUrl": "https://api.bil24.pro:1240/image?type=seatingPlan&userId=21173&actionEventId=681",
"eTicket": true,
"categoryLimitList": []
}
]
}
]
},
"command": "GET_ACTION_EXT",
"resultCode": 0,
"description": "OK"
}
ПОЛУЧЕНИЕ СПИСКА МЕСТ ПО ID СЕАНСА (command = GET_SEAT_LIST)
Поля запроса:
Поле | Тип | Обязательность | Описание |
command | строка | Обязательное | GET_SEAT_LIST |
actionEventId | число Ulong | Обязательное | id сеанса |
availableOnly | boolean | Необязательное | если присутствует и равно true, метод вернет только доступные для продажи места |
Состав полей ответа:
Поле | Тип | Обязательность | Описание |
actionEventId | число Ulong | Обязательное | id сеанса |
availableOnly | boolean | Обязательное | если равно true, в ответе только доступные для продажи места |
categoryList | массив | Обязательное | список ценовых категорий |
seatList | массив | Обязательное | список мест |
categoryList:
Поле | Тип | Обязательность | Описание |
categoryPriceId | число Ulong | Обязательное | id ценовой категории |
categoryPriceName | строка | Обязательное | название ценовой категории |
price | число cur | Обязательное | номинальная стоимость |
availability | число int | Обязательное | количество доступных мест в категории |
seatList:
Поле | Тип | Обязательность | Описание |
seatId | число Ulong | Обязательное | id места |
categoryPriceId | число Ulong | Обязательное | id ценовой категории |
price | число cur | Обязательное | номинальная стоимость |
placement | boolean | Обязательное | если true, место имеет координаты |
location | объект | Обязательное, если placement = true | координаты места |
available | boolean | Обязательное | если true, место доступно к продаже |
location:
Поле | Тип | Обязательность | Описание |
sector | строка | Обязательное | сектор |
row | строка | Обязательное | ряд |
number | строка | Обязательное | место |
БРОНИРОВАНИЕ МЕСТ В СХЕМЕ ЗАЛА С РАЗМЕЩЕНИЕМ (command = RESERVATION)
Описание: бронирование мест в схеме зала с размещением. Перед созданием заказа необходимо забронировать хотя бы одно место.
При получении ошибки в ответе гарантируется, что ни одно место из списка не было забронировано (транзакционные свойства бронирования).
Если список мест содержит ранее успешно забронированные места, они исключаются из списка.
Все места в списке должны принадлежать одному сеансу.
Поля запроса:
Поле | Тип | Обязательность | Описание |
command | строка | Обязательное | RESERVATION |
userId | число Ulong | Обязательное | id пользователя в БС |
sessionId | строка | Обязательное | id сессии пользователя |
seatList | массив | Обязательное | список id мест для брони |
kdp | число int | Необязательное | код доступа к представлению (КДП) |
type | строка | Обязательное | RESERVE_BY_PLACE |
Состав полей ответа:
Поле | Тип | Обязательность | Описание |
type | строка | Обязательное | RESERVE_BY_PLACE |
seatList | массив | Обязательное | Список всех забронированных мест пользователя |
cartTimeout | число Uint | Обязательное | Время жизни брони в секундах, через которое вся бронь пользователя снимется |
seatList:
Поле | Тип | Обязательность | Описание |
seatId | число Ulong | Обязательное | id места |
categoryPriceId | число Ulong | Обязательное | id ценовой категории |
price | число cur | Обязательное | номинальная стоимость |
placement | boolean | Обязательное | если true, место имеет координаты |
location | объект | Обязательное, если placement = true | координаты места |
available | boolean | Обязательное | true |
location:
Поле | Тип | Обязательность | Описание |
sector | строка | Обязательное | сектор |
row | строка | Обязательное | ряд |
number | строка | Обязательное | место |
Пример запроса:
{
"type": "RESERVE_BY_PLACE",
"seatList": [
100
],
"userId": 1,
"sessionId": "b1581ac148e0796b176a8bc4e7b773ad",
"command": "RESERVATION",
"fid": 1,
"token": "f8fcf07a4ea5c7979780"
}
Пример ответа:
{
"type": "RESERVE_BY_PLACE",
"command": "RESERVATION",
"resultCode": 0,
"description": "OK"
}
БРОНИРОВАНИЕ МЕСТ В СХЕМЕ ЗАЛА БЕЗ РАЗМЕЩЕНИЯ (command = RESERVATION)
Описание: бронирование мест в схеме зала без размещения. Перед созданием заказа необходимо забронировать хотя бы одно место.
При получении ошибки в ответе гарантируется, что ни одно место из списка не было забронировано (транзакционные свойства бронирования).
Бронирование производится указанием ценовой категории и количества мест в данной категории.
При одновременном бронировании мест в нескольких ценовых категориях, все ценовые категории должны принадлежать одному сеансу.
Ценовые категории должны быть без размещения, в противном случае необходимо использовать метод бронирования мест в схеме зала с размещением.
Поля запроса:
Поле | Тип | Обязательность | Описание |
command | строка | Обязательное | RESERVATION |
userId | число Ulong | Обязательное | id пользователя |
sessionId | строка | Обязательное | id сессии пользователя |
categoryQuantityMap | массив | Обязательное | key - id категории, value - кол-во мест для брони |
kdp | число int | Необязательное | код доступа к представлению (КДП) |
type | строка | Обязательное | RESERVE |
Состав полей ответа:
Поле | Тип | Обязательность | Описание |
type | строка | Обязательное | RESERVE |
seatList | массив | Обязательное | Список всех забронированных мест пользователя |
cartTimeout | число Uint | Обязательное | Время жизни брони в секундах, через которое вся бронь пользователя снимется |
seatList:
Поле | Тип | Обязательность | Описание |
seatId | число Ulong | Обязательное | id места |
categoryPriceId | число Ulong | Обязательное | id ценовой категории |
price | число cur | Обязательное | номинальная стоимость |
placement | boolean | Обязательное | если true, место имеет координаты |
location | объект | Обязательное, если placement = true | координаты места |
available | boolean | Обязательное | true |
location:
Поле | Тип | Обязательность | Описание |
sector | строка | Обязательное | сектор |
row | строка | Обязательное | ряд |
number | строка | Обязательное | место |
Пример запроса:
{
"type": "RESERVE",
"categoryQuantityMap": {
"1072": 1
},
"userId": 139,
"sessionId": "8f91a3ae4d43f7250537a13c4c4745ea",
"command": "RESERVATION",
"fid": 1,
"token": "f8fcf07a4ea5c7979780",
"kdp": 123
}
Пример ответа:
{
"type": "RESERVE",
"command": "RESERVATION",
"resultCode": 0,
"description": "OK"
}
РАЗБРОНИРОВАНИЕ МЕСТА (command = RESERVATION)
Поля запроса:
Поле | Тип | Обязательность | Описание |
command | строка | Обязательное | RESERVATION |
userId | число Ulong | Обязательное | id пользователя |
sessionId | строка | Обязательное | id сессии пользователя |
actionEventId | число Ulong | Необязательное | id сеанса, используется для type = UN_RESERVE_ALL |
seatList | массив | Обязательное, если type = UN_RESERVE | список id мест |
type | строка | Обязательное | UN_RESERVE, UN_RESERVE_ALL |
Состав полей ответа:
Поле | Тип | Обязательность | Описание |
type | строка | Обязательное | type, переданный в запросе |
seatList | массив | Обязательное | Список всех забронированных мест пользователя |
cartTimeout | число Uint | Обязательное | Время жизни брони в секундах, через которое вся бронь пользователя снимется |
seatList:
Поле | Тип | Обязательность | Описание |
seatId | число Ulong | Обязательное | id места |
categoryPriceId | число Ulong | Обязательное | id ценовой категории |
price | число cur | Обязательное | номинальная стоимость |
placement | boolean | Обязательное | если true, место имеет координаты |
location | объект | Обязательное, если placement = true | координаты места |
available | boolean | Обязательное | true |
location:
Поле | Тип | Обязательность | Описание |
sector | строка | Обязательное | сектор |
row | строка | Обязательное | ряд |
number | строка | Обязательное | место |
Пример 1. запроса снятия брони со всех мест:
{
"type": "UN_RESERVE_ALL",
"userId": 1,
"sessionId": "b1581ac148e0796b176a8bc4e7b773ad",
"command": "RESERVATION",
"fid": 1,
"token": "f8fcf07a4ea5c7979780"
}
Пример 2. запроса снятия брони со всех мест конкретного сеанса:
{
"type": "UN_RESERVE_ALL",
"userId": 1,
"sessionId": "b1581ac148e0796b176a8bc4e7b773ad",
"actionEventId": 5,
"command": "RESERVATION"
}
Пример 3. запроса снятия брони со списка мест:
{
"type": "UN_RESERVE",
"seatList": [
4790
],
"userId": 1,
"sessionId": "b1581ac148e0796b176a8bc4e7b773ad",
"command": "RESERVATION",
"fid": 1,
"token": "f8fcf07a4ea5c7979780"
}
Пример ответа:
{
"command": "RESERVATION",
"type": "UN_RESERVE",
"resultCode": 0,
"description": "OK"
}
ПОЛУЧЕНИЕ СПИСКА ЗАБРОНИРОВАННЫХ МЕСТ (command = GET_CART)
Описание: метод возвращает места, забронированные пользователем, сгруппированные по сеансам.
Поля запроса:
Поле | Тип | Обязательность | Описание |
command | строка | Обязательное | GET_CART |
userId | число Ulong | Обязательное | id пользователя |
sessionId | строка | Обязательное | id сессии пользователя |
rawCoordinates | boolean | Необязательное | если присутствует и равно true, то в ответе поля sector, row, number будут иметь стандартные значения (как везде). Рекомендуется всегда передавать true |
Состав полей ответа:
Поле | Тип | Обязательность | Описание |
totalSum | число cur | Обязательное | Общая сумма бронирования |
time | число Uint | Обязательное | Время жизни брони в секундах, через которое вся бронь пользователя снимется |
totalServiceCharge | число cur | Обязательное | сервисный сбор в корзине |
actionEventList | массив | Обязательное | список сеансов, на которые забронированы места |
actionEventList:
Поле | Тип | Обязательность | Описание |
actionEventId | число Ulong | Обязательное | id сеанса |
day | строка | Обязательное | дата проведения сеанса в формате dd.MM.yyyy |
time | строка | Обязательное | время проведения сеанса в формате HH:mm |
actionId | число Ulong | Обязательное | id представления |
actionName | строка | Обязательное | краткое наименование представления |
fullActionName | строка | Обязательное | полное наименование представления |
smallPosterUrl | строка | Обязательное | url постера (320 х 335) |
bigPosterUrl | строка | Обязательное | url постера (640 х 670) |
cityId | число Ulong | Обязательное | id города |
cityName | строка | Обязательное | наименование города |
venueId | число Ulong | Обязательное | id места проведения |
venueName | строка | Обязательное | наименование места проведения |
seatList | массив | Обязательное | список забронированных мест |
serviceCharge | число cur | Обязательное | сервисный сбор по сеансу |
seatList:
Поле | Тип | Обязательность | Описание |
seatId | число Ulong | Обязательное | id забронированного места |
categoryPriceName | строка | Обязательное | наименование ценовой категории места |
sector* | строка | Необязательное | сектор |
row* | строка | Необязательное | ряд |
number* | строка | Необязательное | место |
price | число cur | Обязательное | стоимость |
serviceCharge | число cur | Обязательное | сервисный сбор по месту |
*Если схема зала местовая, то поля sector, row, number будут присутствовать в ответе.
Пример запроса:
{
"userId": 1,
"sessionId": "ce91f8ec80d1ddb2abf03d02470cc8b2",
"command": "GET_CART",
"fid": 1,
"token": "f8fcf07a4ea5c7979780"
}
Пример ответа:
{
"time": 588,
"totalSum": 1200,
"totalServiceCharge": 0,
"actionEventList": [
{
"actionEventId": 344,
"day": "02.06.2016",
"time": "18:00",
"actionName": "SOPRANO ШОУ",
"fullActionName": "Михаил Турецкий представляет вечер любви",
"smallPosterUrl": "https://api.bil24.pro:1240/image?type=smallPoster&actionId=80&hash=r9qfi771jid3pf0or7vxc8xrb",
"bigPosterUrl": "https://api.bil24.pro:1240/image?type=bigPoster&actionId=80&hash=m3b37t9tynyes52fxx7zw6gdl",
"cityId": 1,
"cityName": "Сочи",
"venueId": 10,
"venueName": "Зимний театр",
"serviceCharge": 0,
"seatList": [
{
"seatId": 524692,
"categoryPriceName": "Шестая",
"price": 600,
"sector": "Сектор Партер",
"row": "Ряд 9",
"number": "Место 11",
"serviceCharge": 0
},
{
"seatId": 524691,
"categoryPriceName": "Шестая",
"price": 600,
"sector": "Сектор Партер",
"row": "Ряд 9",
"number": "Место 10",
"serviceCharge": 0
}
]
}
],
"command": "GET_CART",
"resultCode": 0,
"description": "OK"
}
СОЗДАНИЕ ЗАКАЗА (command = CREATE_ORDER)
Описание: cоздание заказа из забронированных мест. Для интерфейса Билетная система вместо данного метода необходимо использовать метод CREATE_ORDER_EXT.
Поля запроса:
Поле | Тип | Обязательность | Описание |
command | строка | Обязательное | CREATE_ORDER |
userId | число Ulong | Обязательное | id пользователя в БС |
sessionId | строка | Обязательное | id сессии пользователя |
строка | Необязательное | почта, на которую надо отправить билеты после успешной оплаты (ТОЛЬКО ДЛЯ КАССЫ и ПРИГЛАСИТЕЛЬНЫХ) |
|
phone | строка | Необязательное | номер телефона покупателя (ТОЛЬКО ДЛЯ КАССЫ и ПРИГЛАСИТЕЛЬНЫХ) |
fullName | строка | Необязательное | Полное имя покупателя, которое отобразится на билете |
successUrl | строка | Обязательное | редирект на successUrl после успешной оплаты |
failUrl | строка | Обязательное | редирект на failUrl после НЕуспешной оплаты |
discount | число cur | Необязательное | скидка в % (ТОЛЬКО ДЛЯ КАСС И ПРИГЛАСИТЕЛЬНЫХ) |
serviceCharge | число cur | Необязательное | сервисный сбор в % (ТОЛЬКО ДЛЯ КАСС) |
Состав полей ответа:
Поле | Тип | Обязательность | Описание |
formUrl | строка | Обязательное | ссылка для оплаты |
orderId | число Ulong | Обязательное | id заказа |
statusExtStr | строка | Обязательное | статус заказа |
statusExtInt | число int | Обязательное | статус заказа |
Пример запроса:
{
"userId": 1,
"sessionId": "b1581ac148e0796b176a8bc4e7b773ad",
"successUrl": "https://site.ru/success.php",
"failUrl": "https://site.ru/fail.php",
"command": "CREATE_ORDER",
"fid": 1,
"token": "f8fcf07a4ea5c7979780"
}
Пример ответа:
{
"formUrl": "https://test.paymentgate.ru/testpayment/merchants/bil24/mobile_payment_ru.html?mdOrder=b8bb4b76-3a73-4816-92d4-954aa7d01e&pageView=MOBILE",
"statusExtStr": "NEW",
"statusExtInt": 0,
"command": "CREATE_ORDER",
"resultCode": 0,
"description": "OK"
}
СОЗДАНИЕ ЗАКАЗА (command = CREATE_ORDER_EXT)*
Описание: Создание заказа из забронированных мест. Используется вместо метода CREATE_ORDER для интерфейса Билетная система. После создания заказ принимает статус NEW.
*только для интерфейса Билетная система
Поля запроса:
Поле | Тип | Обязательность | Описание |
command | строка | Обязательное | CREATE_ORDER_EXT |
userId | число Ulong | Обязательное | id пользователя в БС |
sessionId | строка | Обязательное | id сессии пользователя |
longReservation | boolean | Необязательное | true - долговременное бронирование |
строка | Необязательное | почта, на которую надо отправить билеты после успешной оплаты |
|
phone | строка | Необязательное | номер телефона покупателя |
fullName | строка | Необязательное | полное имя покупателя, которое отобразится на билете |
Состав полей ответа:
Поле | Тип | Обязательность | Описание |
orderId | число Ulong | Обязательное | id заказа |
discount | число cur | Обязательное | скидка в рублях |
serviceCharge | число cur | Обязательное | сервисный сбор (СС) в рублях |
sum | число cur | Обязательное | сумма заказа, номинал, без учета скидки и СС |
totalSum | число cur | Обязательное | общая сумма |
quantity | число Uint | Обязательное | количество билетов в заказе |
orderTimeout | число PInt | Обязательное | квремя жизни заказа в минутах |
Пример запроса:
{
"userId": 1,
"sessionId": "b1581ac148e0796b176a8bc4e7b773ad",
"command": "CREATE_ORDER_EXT",
"fid": 1,
"token": "f8fcf07a4ea5c7979780"
}
Пример ответа:
{
"orderId": 64,
"discount": 10,
"serviceCharge": 99,
"sum": 1000,
"totalSum": 1089,
"quantity": 5,
"command": "CREATE_ORDER_EXT",
"resultCode": 0,
"description": "OK"
}
ОТМЕНА ЗАКАЗА (command = CANCEL_ORDER)*
Описание: отмена ранее созданного заказа. Отменить можно только заказ со статусом NEW. В результате запроса заказ примет статус CANCELLING или CANCELLED. При попытке отменить заказ не со статусом NEW, ошибки не произойдет, статус заказа не изменится, а в ответе придет актуальный статус заказа.
Когда статус заказа примет значение CANCELLED, места, входящие в заказ, станут свободными.
*только для интерфейса Билетная система
Поля запроса:
Поле | Тип | Обязательность | Описание |
command | строка | Обязательное | CANCEL_ORDER |
userId | число Ulong | Обязательное | id пользователя в БС |
sessionId | строка | Обязательное | id сессии пользователя |
orderId | число Ulong | Обязательное | id заказа |
Состав полей ответа:
Поле | Тип | Обязательность | Описание |
orderId | число Ulong | Обязательное | id заказа |
statusExtStr | строка | Обязательное | статус заказа |
statusExtInt | число int | Обязательное | статус заказа |
Пример запроса:
{
"orderId": 64,
"userId": 1,
"sessionId": "b1581ac148e0796b176a8bc4e7b773ad",
"command": "CANCEL_ORDER",
"fid": 1,
"token": "f8fcf07a4ea5c7979780"
}
Пример ответа:
{
"orderId": 64,
"statusExtStr": "CANCELLED",
"statusExtInt": -2,
"command": "CANCEL_ORDER",
"resultCode": 0,
"description": "OK"
}
ОПЛАТА ЗАКАЗА (command = PAY_ORDER)*
Описание: оплата ранее созданного заказа. Оплатить можно только заказ со статусом NEW.
В результате запроса заказ примет статус PROCESSING или PAID.
При попытке оплатить заказ не со статусом NEW, ошибки не произойдет, статус заказа не изменится, а в ответе придет актуальный статус заказа.
*только для интерфейса Билетная система
Поля запроса:
Поле | Тип | Обязательность | Описание |
command | строка | Обязательное | PAY_ORDER |
userId | число Ulong | Обязательное | id пользователя в БС |
sessionId | строка | Обязательное | id сессии пользователя |
orderId | число Ulong | Обязательное | id заказа |
Состав полей ответа:
Поле | Тип | Обязательность | Описание |
orderId | число Ulong | Обязательное | id заказа |
statusExtStr | строка | Обязательное | статус заказа |
statusExtInt | число int | Обязательное | статус заказа |
Пример запроса:
{
"orderId": 64,
"userId": 1,
"sessionId": "b1581ac148e0796b176a8bc4e7b773ad",
"command": "PAY_ORDER",
"fid": 1,
"token": "f8fcf07a4ea5c7979780"
}
Пример ответа:
{
"orderId": 64,
"statusExtStr": "PAID",
"statusExtInt": 2,
"command": "PAY_ORDER",
"resultCode": 0,
"description": "OK"
}
ПОЛУЧЕНИЕ ЗАКАЗОВ ПОЛЬЗОВАТЕЛЯ (command = GET_ORDERS)
Поля запроса:
Поле | Тип | Обязательность | Описание |
command | строка | Обязательное | GET_ORDERS |
userId | число Ulong | Обязательное | id пользователя в БС |
sessionId | строка | Обязательное | id сессии пользователя |
Состав полей ответа:
Поле | Тип | Обязательность | Описание |
orderList | массив | Обязательное | список заказов |
orderList:
Поле | Тип | Обязательность | Описание |
orderId | число Ulong | Обязательное | id заказа в БС |
date | строка | Обязательное | дата создания заказа в формате datePattern |
datePattern | строка | Обязательное | формат даты |
discount | число cur | Обязательное | скидка в рублях |
serviceCharge | число cur | Обязательное | сервисный сбор в рублях |
sum | число cur | Обязательное | сумма заказа |
quantity | число Uint | Обязательное | количество билетов в заказе |
userMessage | строка | Обязательное | сообщение пользователю от банка |
statusExtStr | строка | Обязательное | статус заказа |
statusExtInt | число int | Обязательное | статус заказа |
formUrl | строка | Необязательное | ссылка для оплаты |
Пример запроса:
{
"userId": 1,
"sessionId": "b1581ac148e0796b176a8bc4e7b773ad",
"command": "GET_ORDERS",
"fid": 1,
"token": "f8fcf07a4ea5c7979780"
}
Пример ответа:
{
"orderList": [
{
"orderId": 64,
"date": "06.08.2015 18:48",
"datePattern": "dd.MM.yyyy HH:mm",
"discount": 0,
"serviceCharge": 0,
"sum": 600,
"quantity": 4,
"statusExtStr": "PAID",
"statusExtInt": 2,
"formUrl": "https://test.paymentgate.ru/testpayment/merchants/bil24/mobile_payment_ru.html?mdOrder=2a2637b4-3d2b-44c4-b29f-4c3b39d17722&pageView=MOBILE",
}
],
"command": "GET_ORDERS",
"resultCode": 0,
"description": "OK"
}
ПОЛУЧЕНИЕ ЗАКАЗОВ ПОЛЬЗОВАТЕЛЯ (command = GET_ORDERS_EXT)
Поля запроса:
Поле | Тип | Обязательность | Описание |
command | строка | Обязательное | GET_ORDERS_EXT |
userId | число Ulong | Обязательное | id пользователя в БС |
sessionId | строка | Обязательное | id сессии пользователя |
fromDate | строка | Обязательное | дата в формате dd.MM.yyyy HH:mm:ss |
rawCoordinates | boolean | Необязательное | если присутствует и равно true, то в ответе поля sector, row, number, categoryName будут иметь стандартные значения (как везде). Рекомендуется всегда передавать true |
Состав полей ответа:
Поле | Тип | Обязательность | Описание |
orderList | массив | Обязательное | список заказов |
orderDatePattern | строка | Обязательное | формат даты заказа |
ticketDatePattern | строка | Обязательное | формат даты билета |
orderList:
Поле | Тип | Обязательность | Описание |
orderId | число Ulong | Обязательное | id заказа в БС |
date | строка | Обязательное | дата создания заказа в формате orderDatePattern |
discount | число cur | Обязательное | скидка в рублях |
serviceCharge | число cur | Обязательное | сервисный сбор в рублях |
sum | число cur | Обязательное | сумма заказа |
quantity | число Uint | Обязательное | количество билетов в заказе |
ticketList | массив | Обязательное | список билетов |
statusExtStr | строка | Обязательное | статус заказа |
statusExtInt | число int | Обязательное | статус заказа |
Пример запроса:
{
"fromDate": "01.01.2016 00:00:00",
"userId": 1,
"sessionId": "sessionId",
"command": "GET_ORDERS_EXT",
"fid": 1,
"token": "f8fcf07a4ea5c7979780"
}
Пример ответа:
{
"orderDatePattern": "dd.MM.yyyy HH:mm:ss",
"ticketDatePattern": "dd.MM.yyyy HH:mm",
"orderList": [
{
"orderId": 3037,
"date": "12.12.2016 13:29:53",
"discount": 0,
"serviceCharge": 30.00,
"sum": 630.00,
"quantity": 2,
"ticketList": [
{
"ticketId": 29965,
"date": "09.01.2017 10:00",
"actionName": "Звёздные войны: Пробуждение силы",
"venueName": "Кинотеатр Люксор",
"sector": "Сектор Партер",
"row": "Ряд 2",
"number": "Место 12",
"categoryName": "Категория: Третья",
"price": 300
},
{
"ticketId": 29966,
"date": "09.01.2017 10:00",
"actionName": "Звёздные войны: Пробуждение силы",
"venueName": "Кинотеатр Люксор",
"sector": "Сектор Партер",
"row": "Ряд 1",
"number": "Место 13",
"categoryName": "Категория: Третья",
"price": 300
}
],
"statusExtStr": "PAID",
"statusExtInt": 2,
},
{
"orderId": 2438,
"date": "30.08.2016 00:14:55",
"discount": 0,
"serviceCharge": 0.00,
"sum": 0.00,
"quantity": 1,
"ticketList": [
{
"ticketId": 29095,
"date": "31.07.2017 09:00",
"actionName": "КЛУБ ЛЮБИМЫХ",
"venueName": "территория Сочи",
"categoryName": "Категория: Золотая",
"price": 0
}
],
"status": 1
}
],
"command": "GET_ORDERS_EXT",
"resultCode": 0,
"description": "OK"
}
Поля запроса:
Поле | Тип | Обязательность | Описание |
command | строка | Обязательное | GET_ACTION_EVENTS_GROUPED_BY_TICKETS |
userId | число Ulong | Обязательное | id пользователя в БС |
sessionId | строка | Обязательное | id сессии пользователя |
Состав полей ответа:
Поле | Тип | Обязательность | Описание |
list | массив | Обязательное | список сеансов |
dayPattern | строка | Обязательное | шаблон дня сеанса (dd.MM.yyyy) |
timePattern | строка | Обязательное | шаблон времени сеанса (HH:mm) |
list:
Поле | Тип | Обязательность | Описание |
actionEventId | число Ulong | Обязательное | id сеанса |
actionName | строка | Обязательное | краткое наименование представления |
fullActionName | строка | Обязательное | полное наименование представления |
day | строка | Обязательное | день сеанса в формате dayPattern |
time | строка | Обязательное | время сеанса в формате timePattern |
bigPosterUrl | строка | Обязательное | ссылка на постер |
smallPosterUrl | строка | Обязательное | ссылка на постер |
cityName | строка | Обязательное | название города |
venueName | строка | Обязательное | наименование места проведения |
quantity | число Uint | Обязательное | количество билетов |
sum | число cur | Обязательное | общая сумма билетов |
ticketsUrl | строка | Обязательное | ссылка на билеты в формате pdf |
Пример запроса:
{
"userId": 11,
"sessionId": "c6721d3c35c247da84ac460004840b68",
"command": "GET_ACTION_EVENTS_GROUPED_BY_TICKETS",
"fid": 1,
"token": "f8fcf07a4ea5c7979780"
}
Пример ответа:
{
"dayPattern": "dd.MM.yyyy",
"timePattern": "HH:mm",
"list": [
{
"actionEventId": 5,
"actionName": "Балет Спящая красавица",
"day": "28.09.2015",
"time": "11:01",
"bigPosterUrl": "https://api.bil24.pro:1240/image?type=bigPoster&actionId=2&hash=lpmbkeg1lae6najf2zd099kgs"
},
{
"actionEventId": 22,
"actionName": "Кино Эверест",
"day": "30.09.2015",
"time": "15:00",
"bigPosterUrl": "https://api.bil24.pro:1240/image?type=bigPoster&actionId=11&hash=rf8qt7yz5z4s96hmko0kmkuf8"
},
{
"actionEventId": 8,
"actionName": "Концерт группы Scooter",
"day": "12.10.2015",
"time": "21:05",
"bigPosterUrl": "https://api.bil24.pro:1240/image?type=bigPoster&actionId=3&hash=mtpqe8hih74wyla45p983zmt3"
}
],
"command": "GET_ACTION_EVENTS_GROUPED_BY_TICKETS",
"resultCode": 0,
"description": "OK"
}
ПОЛУЧЕНИЕ КУПЛЕННЫХ БИЛЕТОВ ПО ID ПРЕДСТАВЛЕНИЯ (command = GET_TICKETS_BY_ACTION_EVENT)
Поля запроса:
Поле | Тип | Обязательность | Описание |
command | строка | Обязательное | GET_TICKETS_BY_ACTION_EVENT |
userId | число Ulong | Обязательное | id пользователя |
sessionId | строка | Обязательное | id сессии пользователя |
actionEventId | число Ulong | Обязательное | id сеанса |
sizeQrCode | число Uint | Обязательное | размер Qr кода (задается одна сторона, картинка будет квадратная) |
widthBarCode | число Uint | Обязательное | ширина Bar кода |
heightBarCode | число Uint | Обязательное | высота Bar кода |
type | строка | Обязательное | тип изображения. PNG, JPG |
rawCoordinates | boolean | Необязательное | если присутствует и равно true, то в ответе поля sector, row, number, categoryName будут иметь стандартные значения (как везде). Рекомендуется всегда передавать true |
Состав полей ответа:
Поле | Тип | Обязательность | Описание |
datePattern | строка | Обязательное | формат даты в билете (пример: dd.MM.yyyy HH:mm) |
actionId | число Ulong | Обязательное | id представления, переданный в запросе |
actionName | строка | Обязательное | Имя представления |
ticketList | массив | Обязательное | список билетов |
ticketList:
Поле | Тип | Обязательность | Описание |
ticketId | число Ulong | Обязательное | id билета |
date | строка | Обязательное | дата представления |
venueName | строка | Обязательное | наименование места проведения |
venueAddress | строка | Обязательное | адрес места проведения |
actionName | строка | Обязательное | название представления |
sector | строка | Необязательное | сектор |
row | строка | Необязательное | ряд |
number | строка | Необязательное | место |
categoryName | строка | Обязательное | информация о категории места |
price | число cur | Обязательное | цена билета |
totalPrice | число cur | Обязательное | цена билета с учетом СС |
serviceCharge | число cur | Обязательное | СС |
qrCodeImg | строка | Обязательное | Qr код в Base64 в формате, переданном в запросе |
barCodeImg | строка | Обязательное | Bar код в Base64 в формате, переданном в запросе |
barCodeNumber | строка | Обязательное | значение штрихкода |
smallPosterUrl | строка | Обязательное | url постера (320х335) |
legalOwner | строка | Обязательное | Данные организатора |
age | строка | Обязательное | Возрастное ограничение |
Пример запроса:
{
"actionEventId": 5,
"sizeQrCode": 500,
"widthBarCode": 500,
"heightBarCode": 100,
"type": "PNG",
"userId": 11,
"sessionId": "c6721d3c35c247da84ac460004840b68",
"command": "GET_TICKETS_BY_ACTION_EVENT",
"fid": 1,
"token": "f8fcf07a4ea5c7979780"
}
Пример ответа:
{
"datePattern": "dd.MM.yyyy HH:mm",
"actionEventId": 5,
"actionName": "Кармен",
"ticketList": [
{
"ticketId": 10075,
"date": "28.09.2015 11:01",
"venueName": "Зимний театр",
"venueAddress": "ул. Театральная, 2",
"actionName": "Кармен",
"sector": "Сектор Партер",
"row": "Ряд 1",
"number": "Место 22",
"categoryName": "Категория Х",
"price": 1000,
"totalPrice": 0,
"serviceCharge": 0,
"qrCodeImg": "iVBORw0KGgoAAAANSUhEUgAAAfQAAAH0AQAAAADjreInAAACwElEQVR42u3dS27jMBBFUe2A+99l7YCdjmjWq6KCbiCjJ1zDA1n2YUaEWB8y1/zVKy53H9d+fX1eV2N9/XXx9/25s34mBI939zqVEse1J9c9xH2h979nDx5v7mPNijUxRv5uz6v91R76Jnj8e/z3/FkfZebk4+S+xuPf6sfMOTPLmml/xONf5WsonaulHUvcYCT+cf2Fx7v5jJ/jf98/xN94vJuv2VCNk/dESvmP/Cse7+ajpkTHLNGyhNY57h4Uj3+F32kjTZWWKFrvy1d4vLeXqHgVyXacMCVbOmSgkWkmPN7b6zpJEqalYNZWXJETCY+39zVI0OVRqyu3MkPmj",
"barCodeImg": "iVBORw0KGgoAAAANSUhEUgAAAfQAAABkAQAAAABYvP/QAAAAYklEQVR42u3LsQ2AIBBG4TMWVzICm+hiJDAabMIIV1KY/GpcwuI1r3n5TFGyK3atLer0njQ1dNk6o5iPJ+qpmUZYXsd323urfCgMj8fj8Xg8Ho/H4/F4PB6Px+PxeDz+Z/4GLPLRZ1RHc5UAAAAASUVORK5CYII="
"barCodeNumber": "0123456789123",
"smallPosterUrl": "https://..."
"legalOwner": "Организатор...",
"age": "18+",
}
],
"command": "GET_TICKETS_BY_ACTION_EVENT",
"resultCode": 0,
"description": "OK"
}
ПОЛУЧЕНИЕ ШАБЛОНА БИЛЕТА В ФОРМАТЕ SVG
ПОЛУЧЕНИЕ КУПЛЕННЫХ БИЛЕТОВ ПО ID ЗАКАЗА (command = GET_TICKETS_BY_ORDER)
Поля запроса:
Поле | Тип | Обязательность | Описание |
command | строка | Обязательное | GET_TICKETS_BY_ORDER |
userId | число Ulong | Обязательное | id пользователя в БС |
sessionId | строка | Обязательное | id сессии пользователя |
orderId | число Ulong | Обязательное | id заказа |
sizeQrCode | число Uint | Необязательное | размер Qr кода (задается одна сторона, картинка будет квадратная) |
widthBarCode | число Uint | Необязательное | ширина Bar кода |
heightBarCode | число Uint | Необязательное | высота Bar кода |
type | строка | Необязательное | тип изображения. PNG, JPG |
rawCoordinates | boolean | Необязательное | если присутствует и равно true, то в ответе поля sector, row, number, categoryName будут иметь стандартные значения (как везде). Рекомендуется всегда передавать true |
Состав полей ответа:
Поле | Тип | Обязательность | Описание |
corderDatePattern | строка | Обязательное | формат даты заказа (например: dd.MM.yyyy HH:mm:ss) |
actionEventDatePattern | строка | Обязательное | формат даты сеанса в билете (например: dd.MM.yyyy HH:mm) |
orderId | число Ulong | Обязательное | id заказа, переданный в запросе |
date | строка | Обязательное | дата заказа в формате orderDatePattern |
discount | число cur | Обязательное | скидка |
serviceCharge | число cur | Обязательное | сервисный сбор (СС) |
sum | число cur | Обязательное | сумма без СС |
totalSum | число cur | Обязательное | общая сумма |
quantity | число Uint | Обязательное | количество билетов |
statusExtStr | строка | Обязательное | статус заказа |
statusExtInt | число int | Обязательное | статус заказа |
ticketList | массив | Обязательное | список билетов |
ticketList:
Поле | Тип | Обязательность | Описание |
ticketId | число Ulong | Обязательное | id билета |
seatId | число Ulong | Обязательное | id места |
date | строка | Обязательное | дата представления в формате actionEventDatePattern |
venueName | строка | Обязательное | наименование места проведения |
venueAddress | строка | Обязательное | адрес места проведения |
actionName | строка | Обязательное | название представления |
sector | строка | Необязательное | сектор |
row | строка | Необязательное | ряд |
number | строка | Необязательное | место |
categoryName | строка | Обязательное | информация о ценовой категории места |
price | число cur | Обязательное | цена билета |
totalPrice | число cur | Обязательное | цена билета с учетом СС |
serviceCharge | число cur | Обязательное | СС |
qrCodeImg | строка | Обязательное | Qr код в Base64 в формате, переданном в запросе |
barCodeImg | строка | Обязательное | Bar код в Base64 в формате, переданном в запросе |
barCodeNumber | строка | Обязательное | значение штрихкода |
barCodeType | строка | Обязательное | тип штрихкода: EAN_13, ITF, CODE_128A, CODE_128B, CODE_128C, CODE_39 |
smallPosterUrl | строка | Обязательное | url постера (320х335) |
legalOwner | строка | Обязательное | Данные организатора |
age | строка | Обязательное | Возрастное ограничение |
statusInt | число | Обязательное | статус билета |
statusStr | строка | Обязательное | статус билета |
Статус билета:
statusInt | statusStr |
0 | Не использовал |
1 | Вошел |
2 | Вышел |
3 | Вернул билет |
4 | Возврат билета в ВБС |
5 | Впустил контроллер |
Пример запроса:
{
"orderId": 5,
"sizeQrCode": 500,
"widthBarCode": 500,
"heightBarCode": 100,
"type": "PNG",
"userId": 11,
"sessionId": "c6721d3c35c247da84ac460004840b68",
"command": "GET_TICKETS_BY_ACTION_EVENT",
"fid": 1,
"token": "f8fcf07a4ea5c7979780"
}
Пример ответа:
{
"orderDatePattern": "dd.MM.yyyy HH:mm:ss",
"actionEventDatePattern": "dd.MM.yyyy HH:mm",
"orderId": 5,
"date": "27.09.2015 10:01:01",
"discount": 0,
"serviceCharge": 0,
"sum": 1000,
"totalSum": 1000,
"quantity": 5,
"statusExtStr": "PAID",
"statusExtInt": 2,
"ticketList": [
{
"ticketId": 10075,
"date": "28.09.2015 11:01",
"venueName": "Зимний театр",
"venueAddress": "ул. Театральная, 2",
"actionName": "Кармен",
"sector": "Сектор Партер",
"row": "Ряд 1",
"number": "Место 22",
"categoryName": "Категория Х",
"price": 1000,
"totalPrice": 0,
"serviceCharge": 0,
"qrCodeImg": "iVBORw0KGgoAAAANSUhEUgAAAfQAAAH0AQAAAADjreInAAACwElEQVR42u3dS27jMBBFUe2A+99l7YCdjmjWq6KCbiCjJ1zDA1n2YUaEWB8y1/zVKy53H9d+fX1eV2N9/XXx9/25s34mBI939zqVEse1J9c9xH2h979nDx5v7mPNijUxRv5uz6v91R76Jnj8e/z3/FkfZebk4+S+xuPf6sfMOTPLmml/xONf5WsonaulHUvcYCT+cf2Fx7v5jJ/jf98/xN94vJuv2VCNk/dESvmP/Cse7+ajpkTHLNGyhNY57h4Uj3+F32kjTZWWKFrvy1d4vLeXqHgVyXacMCVbOmSgkWkmPN7b6zpJEqalYNZWXJETCY+39zVI0OVRqyu3MkPmj",
"barCodeImg": "iVBORw0KGgoAAAANSUhEUgAAAfQAAABkAQAAAABYvP/QAAAAYklEQVR42u3LsQ2AIBBG4TMWVzICm+hiJDAabMIIV1KY/GpcwuI1r3n5TFGyK3atLer0njQ1dNk6o5iPJ+qpmUZYXsd323urfCgMj8fj8Xg8Ho/H4/F4PB6Px+PxeDz+Z/4GLPLRZ1RHc5UAAAAASUVORK5CYII="
"barCodeNumber": "0123456789123",
"smallPosterUrl": "https://..."
"legalOwner": "Организатор...",
"age": "18+",
}
],
"command": "GET_TICKETS_BY_ACTION_EVENT",
"resultCode": 0,
"description": "OK"
}
ПОЛУЧЕНИЕ ИНФОРМАЦИИ ПО ПРОДАННЫМ БИЛЕТАМ ЗА КОНКРЕТНЫЙ ДЕНЬ (command = GET_TICKETS_BY_DAY)
Поля запроса:
Поле | Тип | Обязательность | Описание |
command | строка | Обязательное | GET_TICKETS_BY_DAY |
date | строка | Обязательное | дата в формате dd.MM.yyyy |
Состав полей ответа:
Поле | Тип | Обязательность | Описание |
date | строка | Обязательное | дата в формате dd.MM.yyyy |
cityList | массив | Обязательное | список городов |
cityList:
Поле | Тип | Обязательность | Описание |
cityId | число Ulong | Обязательное | id города |
actionList | массив | Обязательное | список представлений |
actionList:
Поле | Тип | Обязательность | Описание |
actionId | число Ulong | Обязательное | id представления |
actionEventList | массив | Обязательное | список сеансов |
actionEventList:
Поле | Тип | Обязательность | Описание |
actionEventId | число Ulong | Обязательное | id сеанса |
ticketList | массив | Обязательное | список билетов |
ticketList:
Поле | Тип | Обязательность | Описание |
ticketId | число Ulong | Обязательное | id билета |
seatId | число Ulong | Обязательное | id места |
date | строка | Обязательное | дата продажи в формате dd.MM.yyyy HH:mm:ss |
price | число cur | Обязательное | цена билета |
discount | число cur | Обязательное | скидка |
serviceCharge | число cur | Обязательное | сервисный сбор (СС) |
totalPrice | число cur | Обязательное | цена билета с учетом СС и скидки |
refunded | boolean | Обязательное | true - билет возвращен |
Пример запроса:
{
"date": "08.06.2017",
"command": "GET_TICKETS_BY_DAY",
"fid": 1,
"token": "f8fcf07a4ea5c7979780"
}
Пример ответа:
{
"date": "07.06.2017",
"cityList": [
{
"cityId": 3,
"actionList": [
{
"actionId": 323,
"actionEventList": [
{
"actionEventId": 1814,
"ticketList": [
{
"ticketId": 30935,
"seatId": 2943773,
"date": "07.06.2017 12:57:01",
"price": 3000,
"discount": 0,
"serviceCharge": 0,
"totalPrice": 3000.00,
"refunded": false
},
]
}
]
}
]
}
],
"command": "GET_TICKETS_BY_DAY",
"resultCode": 0,
"description": "OK"
}
ПОЛУЧЕНИЕ ИНФОРМАЦИИ О ПОЛЬЗОВАТЕЛЕ (command = GET_USER_INFO)
Поля запроса:
Поле | Тип | Обязательность | Описание |
command | строка | Обязательное | GET_USER_INFO |
userId | число Ulong | Обязательное | id пользователя в БС |
sessionId | строка | Обязательное | id сессии пользователя |
Состав полей ответа:
Поле | Тип | Обязательность | Описание |
seatInReserve | число Uint | Обязательное | Количество забронированных мест |
orderInWait | число Uint | Обязательное | Количество незавершенных заказов |
Пример запроса:
{
"userId": 1,
"sessionId": "b1581ac148e0796b176a8bc4e7b773ad",
"command": "GET_USER_INFO",
"fid": 1,
"token": "f8fcf07a4ea5c7979780"
}
Пример ответа:
{
"seatInReserve": 2,
"orderInWait": 0,
"command": "GET_USER_INFO",
"resultCode": 0,
"description": "OK"
}
ОТПРАВКА БИЛЕТОВ НА ПОЧТУ (command = SEND_TICKETS_TO_EMAIL)
Поля запроса:
Поле | Тип | Обязательность | Описание |
command | строка | Обязательное | SEND_TICKETS_TO_EMAIL |
userId | число Ulong | Обязательное | id пользователя в БС |
sessionId | строка | Обязательное | id сессии пользователя |
строка | Обязательное | почтовый адрес | |
ticketIdList | массив | Обязательное | список id билетов |
Пример запроса:
{
"email": "email@list.ru",
"ticketIdList": [
10261
],
"userId": 1,
"sessionId": "b1581ac148e0796b176a8bc4e7b773ad",
"command": "SEND_TICKETS_TO_EMAIL",
"fid": 1,
"token": "f8fcf07a4ea5c7979780"
}
Пример ответа:
{
"command": "SEND_TICKETS_TO_EMAIL",
"resultCode": 0,
"description": "OK"
}
Описание: Метод помечает билет/заказ пользователя как удаленный, чтобы на интерфейсах в дальнейшем их не подгружать.
Поля запроса:
Поле | Тип | Обязательность | Описание |
command | строка | Обязательное | DELETE |
userId | число Ulong | Обязательное | id пользователя в БС |
sessionId | строка | Обязательное | id сессии пользователя |
id | число Ulong | Обязательное | id элемента, в зависимости от destination |
destination | строка | Обязательное | может принимать значения ORDER, TICKET, TICKETS_BY_ACTION_EVENT |
* destination = TICKETS_BY_ACTION_EVENT - помечаются как удаленные все билеты пользователя на конкретный сеанс.
Состав полей ответа:
Поле | Тип | Обязательность | Описание |
id | число Ulong | Обязательное | id элемента, который передавался в запросе |
destination | строка | Обязательное | destination, который передавался в запросе |
Пример запроса удаления заказа:
{
"userId": 1,
"sessionId": "b1581ac148e0796b176a8bc4e7b773ad",
"id": 1, //id заказа
"destination": "ORDER"
"command": "DELETE",
"fid": 1,
"token": "f8fcf07a4ea5c7979780"
}
Пример ответа успешного удаления:
{
"command": "DELETE",
"id": 1, //id удаленного заказа
"destination": "ORDER"
"resultCode": 0,
"description": "OK"
}
ПОЛУЧЕНИЕ ИНФОРМАЦИИ О ЗАКАЗЕ (command = GET_ORDER_INFO)
Поля запроса:
Поле | Тип | Обязательность | Описание |
command | строка | Обязательное | GET_ORDER_INFO |
userId | число Ulong | Обязательное | id пользователя в БС |
sessionId | строка | Обязательное | id сессии пользователя |
orderId | число Ulong | Обязательное | id заказа |
Состав полей ответа:
Поле | Тип | Обязательность | Описание |
orderId | число Ulong | Обязательное | id заказа, переданного в запросе |
statusExtStr | строка | Обязательное | статус заказа |
statusExtInt | число int | Обязательное | статус заказа |
orderInfoList | массив | Обязательное |
orderInfoList:
Поле | Тип | Обязательность | Описание |
actionId | число Ulong | Обязательное | id представления |
actionName | строка | Обязательное | название представления |
quantity | число Uint | Обязательное | количество билетов |
sum | число cur | Обязательное | общая сумма |
smallPosterUrl | строка | Обязательное | url постера (320х335) |
Пример запроса:
{
"userId": 1,
"sessionId": "b1581ac148e0796b176a8bc4e7b773ad",
"orderId": 829,
"command": "GET_ORDER_INFO",
"fid": 1,
"token": "f8fcf07a4ea5c7979780"
}
Пример ответа:
{
"orderId": 829,
"statusExtStr": "NEW",
"statusExtInt": 0,
"orderInfoList": [
{
"actionId": 80,
"actionName": "В сердце моря",
"quantity": 1,
"sum": 200,
"smallPosterUrl": "https://api.bil24.pro:1240/image?type=smallPoster&actionId=80&hash=q823uap2k22aj0da1hbktd0ch"
}
],
"command": "GET_ORDER_INFO",
"resultCode": 0,
"description": "OK"
}
ПОЛУЧЕНИЕ ПОЧТЫ (command = GET_EMAIL)
Поля запроса:
Поле | Тип | Обязательность | Описание |
command | строка | Обязательное | GET_EMAIL |
userId | число Ulong | Обязательное | id пользователя в БС |
sessionId | строка | Обязательное | id сессии пользователя |
Состав полей ответа:
Поле | Тип | Обязательность | Описание |
строка | Обязательное | почта пользователя | |
needSendTicketEmail | boolean | Обязательное | true - отправлять билеты на почту |
Пример запроса:
{
"userId": 1,
"sessionId": "1e58084051c60a219d672c4b7a12d743",
"command": "GET_EMAIL",
"fid": 1,
"token": "f8fcf07a4ea5c7979780"
}
Пример ответа:
{
"email": "sinyakin89@list.ru",
"needSendTicketEmail": true,
"command": "GET_EMAIL",
"resultCode": 0,
"description": "OK"
}
ОТПРАВКА GCM ТОКЕНА НА СЕРВЕР (command = SET_PUSH_TOKEN)
Поля запроса:
Поле | Тип | Обязательность | Описание |
command | строка | Обязательное | SET_PUSH_TOKEN |
userId | число Ulong | Обязательное | id пользователя в БС |
sessionId | строка | Обязательное | id сессии пользователя |
pushToken | строка | Обязательное | токен |
Пример запроса:
{
"userId": 1,
"sessionId": "1e58084051c60a219d672c4b7a12d743",
"pushToken": "ec7c5ae54051c60a219d672c4b7d743",
"command": "SET_PUSH_TOKEN",
"fid": 1,
"token": "f8fcf07a4ea5c7979780"
}
Пример ответа:
{
"command": "SET_PUSH_TOKEN",
"resultCode": 0,
"description": "OK"
}
ПОЛУЧИТЬ НОВОСТИ (command = GET_NEWS)
Поля запроса:
Поле | Тип | Обязательность | Описание |
command | строка | Обязательное | GET_NEWS |
userId | число Ulong | Обязательное | id пользователя в БС |
sessionId | строка | Обязательное | id сессии пользователя |
time | число long | Обязательное | время новости в мс |
count | число Uint | Обязательное | количество новостей (от 1 до 30) |
cursorMode | строка | Обязательное | forward - новые новости backward - старые новости |
Состав полей ответа:
Поле | Тип | Обязательность | Описание |
datePattern | строка | Обязательное | паттерн даты новости |
cursorMode | строка | Обязательное | cursorMode, переданный в запросе |
serverUnixTime | число long | Обязательное | серверное время в мс |
last | boolean | Обязательное | true - последняя новость, false - не посл новость |
newsList | массив | Обязательное | список новостей |
newsList:
Поле | Тип | Обязательность | Описание |
id | число Ulong | Обязательное | id новости |
unixTime | число long | Обязательное | время новости в мс |
date | строка | Обязательное | дата в формате datePattern |
header | строка | Обязательное | Заголовок новости |
fullDescription | строка | Обязательное | Описание новости |
Пример запроса (получить 10 новостей младше текущей даты):
{
"time": 0,
"count": 10,
"cursorMode": "backward",
"userId": 1,
"sessionId": "1e58084051c60a219d672c4b7a12d743",
"command": "GET_NEWS",
"fid": 1,
"token": "f8fcf07a4ea5c7979780"
}
Если time = 0, то на сервере используется значение текущего времени
Если cursorMode = forward, то новости приходят отсортированные по возрастанию даты
Если cursorMode = backward, то новости приходят отсортированные по убыванию даты.
Пример ответа:
{
"datePattern": "dd.MM.yyyy HH:mm",
"newsList": [
{
"id": 91,
"unixTime": 1458571320000,
"date": "21.03.2016 17:42",
"header": "Заголовок 1",
"fullDescription": "Описание 1"
},
{
"id": 72,
"unixTime": 1457989200000,
"date": "15.03.2016 00:00",
"header": "Заголовок 2",
"fullDescription": "Описание 2"
}
],
"cursorMode": "backward",
"serverUnixTime": 1459769342975,
"last": false,
"command": "GET_NEWS",
"resultCode": 0,
"description": "OK"
}
ПРОВЕРКА КДП (command = CHECK_KDP)
Поля запроса:
Поле | Тип | Обязательность | Описание |
command | строка | Обязательное | CHECK_KDP |
userId | число Ulong | Обязательное | id пользователя в БС |
sessionId | строка | Обязательное | id сессии пользователя |
actionId | число Ulong | Обязательное | id представления |
kdp | число int | Обязательное | КДП |
Пример запроса:
{
"userId": 1,
"sessionId": "1e58084051c60a219d672c4b7a12d743",
"actionId": 10,
"kdp": 12345,
"command": "CHECK_KDP",
"fid": 1,
"token": "f8fcf07a4ea5c7979780"
}
Пример положительного ответа:
{
"command": "CHECK_KDP",
"resultCode": 0,
"description": "OK"
}
Пример ответа с неверным КДП:
{
"command": "CHECK_KDP",
"resultCode": 101,
"description": "неверный КДП"
}
ПОЛУЧЕНИЕ ДАННЫХ ДЛЯ ФИЛЬТРА (command = GET_FILTER)
Поля запроса:
Поле | Тип | Обязательность | Описание |
command | строка | Обязательное | GET_FILTER |
Состав полей ответа:
Поле | Тип | Обязательность | Описание |
cityList | массив | Обязательное | список городов |
kindList | массив | Обязательное | список видов |
cityList:
Поле | Тип | Обязательность | Описание |
cityId | число Ulong | Обязательное | id города |
cityName | строка | Обязательное | название города |
venueList | массив | Обязательное | список мест проведений |
venueList:
Поле | Тип | Обязательность | Описание |
venueId | число Ulong | Обязательное | id места проведения |
venueName | строка | Обязательное | наименование места проведения |
kindList:
Поле | Тип | Обязательность | Описание |
kindId | число Uint | Обязательное | id вида |
kindName | строка | Обязательное | наименование вида |
Пример запроса:
{
"command": "GET_FILTER",
"fid": 1,
"token": "f8fcf07a4ea5c7979780"
}
Пример ответа:
{
"cityList": [
{
"cityId": 1,
"cityName": "Сочи",
"venueList": [
{
"venueId": 1,
"venueName": "Зимний театр"
},
{
"venueId": 24,
"venueName": "Зеленый театр парка \"Ривьера\""
}
]
},
{
"cityId": 2,
"cityName": "Москва",
"venueList": [
{
"venueId": 4,
"venueName": "Малая Спортивная Арена Лужники"
},
{
"venueId": 20,
"venueName": "SCANDINAVIA CLUB"
}
]
},
],
"kindList": [
{
"kindId": 0,
"kindName": "События"
},
{
"kindId": 1,
"kindName": "Карты (МЭК)"
},
{
"kindId": 2,
"kindName": "Экскурсии"
},
{
"kindId": 3,
"kindName": "Рестораны"
},
{
"kindId": 4,
"kindName": "Отели"
}
],
"command": "GET_FILTER",
"resultCode": 0,
"description": "OK"
}
ПРИВЯЗКА ПОЧТЫ (command = BIND_EMAIL)
Чтобы подтвердить почту, необходимо:
1. выполнить метод BIND_EMAIL. На указанную почту придет код подтверждения.
2. выполнить CONFIRM_EMAIL с кодом, пришедшим на почту. В ответе придут данные аккаунта (userId, sessionId), к которым успешно прикреплена почта. С этими данными необходимо выполнять все последующие запросы.
Поля запроса:
Поле | Тип | Обязательность | Описание |
command | строка | Обязательное | BIND_EMAIL |
userId | число Ulong | Обязательное | id пользователя |
sessionId | строка | Обязательное | id сессии пользователя |
строка | Обязательное |
Пример запроса:
{
"userId": 1,
"sessionId": "1e58084051c60a219d672c4b7a12d743",
"command": "BIND_EMAIL",
"email": "email@list.ru",
"fid": 1,
"token": "f8fcf07a4ea5c7979780"
}
Пример положительного ответа:
{
"command": "BIND_EMAIL",
"resultCode": 0,
"description": "OK"
}
ПОДТВЕРЖДЕНИЕ ПОЧТЫ (command = CONFIRM_EMAIL)
Поля запроса:
Поле | Тип | Обязательность | Описание |
command | строка | Обязательное | CONFIRM_EMAIL |
userId | число Ulong | Обязательное | id пользователя |
sessionId | строка | Обязательное | id сессии пользователя |
code | число Uint | Обязательное | код подтверждения |
Состав полей ответа:
Поле | Тип | Обязательность | Описание |
userId | число Ulong | Обязательное | id пользователя |
sessionId | строка | Обязательное | id сессии пользователя |
строка | Обязательное | прикрепленный email |
Пример запроса:
{
"userId": 1,
"sessionId": "1e58084051c60a219d672c4b7a12d743",
"command": "CONFIRM_EMAIL",
"code": 123456,
"fid": 1,
"token": "f8fcf07a4ea5c7979780"
}
Пример положительного ответа:
{
"command": "CONFIRM_EMAIL",
"userId": 2,
"sessionId": "2e4566051c60a219d672c4b7a12d129",
"email": "email@list.ru",
"resultCode": 0,
"description": "OK"
}
ПОЛУЧЕНИЕ КАРТ (МЭК) (command = GET_MECS)
Поля запроса:
Поле | Тип | Обязательность | Описание |
command | строка | Обязательное | GET_MECS |
userId | число Ulong | Обязательное | id пользователя |
sessionId | строка | Обязательное | id сессии пользователя |
mecId* | число Ulong | Необязательное | id карты |
sizeQrCode | число Uint | Обязательное | размер Qr кода (задается одна сторона, картинка будет квадратная) |
widthBarCode | число Uint | Обязательное | ширина Bar кода |
heightBarCode | число Uint | Обязательное | высота Bar кода |
rawCoordinates | boolean | Необязательное | если присутствует и равно true, то в ответе поле categoryName будет иметь стандартное значения (как везде). Рекомендуется всегда передавать true |
*mecId - Поле используется для экономии трафика в основном на мобильных фронтендах.
Если передать данное поле в запросе, то в ответ вернутся карты с id большим чем переданный в запросе. Подразумевается, что карты с id <= mecId хранятся локально и не требуются в повторной загрузке.
Состав полей ответа:
Поле | Тип | Обязательность | Описание |
list | массив | Обязательное | массив с данными карт |
list:
Поле | Тип | Обязательность | Описание |
actionEventId | число Ulong | Обязательное | id сеанса |
actionName | строка | Обязательное | краткое наименование представления |
fullActionName | строка | Обязательное | полное наименование представления |
bigPosterUrl | строка | Обязательное | ссылка на постер |
smallPosterUrl | строка | Обязательное | ссылка на постер |
cityId | число Ulong | Обязательное | id города |
cityName | строка | Обязательное | название города |
venueName | строка | Обязательное | наименование места проведения |
venueAddress | строка | Обязательное | адрес места проведения |
cityPass | boolean | Обязательное | true - место проведение, где действуют скидки и преференции |
quantity | число Uint | Обязательное | количество карт |
totalSum | число cur | Обязательное | общая сумма карт |
mecList | массив | Обязательное | массив карт по представлению |
mecList:
Поле | Тип | Обязательность | Описание |
mecId | число Ulong | Обязательное | id карты |
categoryName | строка | Обязательное | информация о категории места |
price | число cur | Обязательное | цена билета |
qrCodeImg | строка | Обязательное | Qr код в Base64 в формате, переданном в запросе |
barCodeImg | строка | Обязательное | Bar код в Base64 в формате, переданном в запросе |
barCodeNumber | строка | Обязательное | значение штрихкода |
Пример запроса:
{
"mecId": 5,
"sizeQrCode": 500,
"widthBarCode": 500,
"heightBarCode": 100,
"userId": 11,
"sessionId": "c6721d3c35c247da84ac460004840b68",
"command": "GET_MECS",
"fid": 1,
"token": "f8fcf07a4ea5c7979780"
}
Пример успешного ответа:
{
"list": [
{
"actionEventId": 1178,
"actionName": "Карта Магнит",
"fullActionName": "Товары и услуги со скидками для сотрудников сети",
"bigPosterUrl": "https://api.bil24.pro:1240/image?type=bigPoster&actionId=156&hash=ixr9rn1fmd1hssxl6k06q3png",
"smallPosterUrl": "https://api.bil24.pro:1240/image?type=smallPoster&actionId=156&hash=k2tlcg2xsq82jynqo9yqkmr1q",
"cityId": 1,
"cityName": "Краснодар",
"venueName": "Розничная сеть Магнит",
"venueAddress": "Краснодар, ул. Солнечная, 15/5",
"cityPass": false,
"quantity": 2,
"totalSum": 4645.00,
"mecList": [
{
"mecId": 29096,
"categoryName": "Категория: Корпоративная",
"price": 245,
"qrCodeImg": "qrCodeImg",
"barCodeImg": "barCodeImg",
"barCodeNumber": "2400107290966"
},
{
"mecId": 29097,
"categoryName": "Категория: Платиновая",
"price": 4400,
"qrCodeImg": "qrCodeImg",
"barCodeImg": "barCodeImg",
"barCodeNumber": "2400107290973"
}
]
},
{
"actionEventId": 1380,
"actionName": "КЛУБ ЛЮБИМЫХ",
"fullActionName": "карта бонусной программы",
"bigPosterUrl": "https://api.bil24.pro:1240/image?type=bigPoster&actionId=201&hash=ohvtolmud5n3eacnl1ho1ysbe",
"smallPosterUrl": "https://api.bil24.pro:1240/image?type=smallPoster&actionId=201&hash=gnoi2lhueiyx5d555gf8ziegt",
"cityId": 2,
"cityName": "Сочи",
"venueName": "территория Сочи",
"venueAddress": "Россия, Краснодарский край, Сочи",
"cityPass": false,
"quantity": 1,
"totalSum": 0.00,
"mecList": [
{
"mecId": 29102,
"categoryName": "Категория: Золотая",
"price": 0,
"qrCodeImg": "qrCodeImg",
"barCodeImg": "barCodeImg",
"barCodeNumber": "2403107291025"
}
]
}
],
"command": "GET_MECS",
"resultCode": 0,
"description": "OK"
}
ВОЗВРАТ БИЛЕТОВ (command = REFUND_TICKETS)*
Описание: возврат билетов.
*только для интерфейса Билетная система.
Поля запроса:
Поле | Тип | Обязательность | Описание |
command | строка | Обязательное | REFUND_TICKETS |
userId | число Ulong | Обязательное | id пользователя |
sessionId | строка | Обязательное | id сессии пользователя |
ticketIdSet | массив | Обязательное | список id билетов |
Состав полей ответа:
Поле | Тип | Обязательность | Описание |
statusMap | ассоциативный массив | Обязательное | key - id билета, переданного в запросе. value - число, статус возврата |
Статус возврата билетов:
1 - невозможно вернуть
2 - в процессе возврата
3 - билет возвращен
Примечание: повторный запрос на отмену билета не вернет ошибку, а вернет текущий статус билета.
Пример запроса:
{
"userId": 1,
"sessionId": "1e58084051c60a219d672c4b7a12d743",
"command": "REFUND_TICKETS",
"ticketIdSet": [1, 2, 3],
"fid": 1,
"token": "f8fcf07a4ea5c7979780"
}
Пример положительного ответа:
{
"command": "REFUND_TICKETS",
"statusMap": {
"1" : 1,
"2" : 2,
"3" : 2
}
"resultCode": 0,
"description": "OK"
}
Некоторые методы возвращают в своем составе поля статус заказа (statusExtStr и statusExtInt).
statusExtStr | statusExtInt | Описание |
NEW | 0 | Новый заказ/ожидание оплаты |
PROCESSING | 1 | Обработка оплаченного заказа |
PAID | 2 | Завершен |
CANCELLING | -1 | Отмена неоплаченного заказа |
CANCELLED | -2 | Отменен |
Статус заказа может меняться в следующих последовательностях:
NEW → PROCESSING → PAID
NEW → CANCELLING → CANCELLED
В исключительных случаях, из-за ошибок во внешних билетных системах, заказ может быть отменен вручную оператором системы, в этом случае статус заказа изменится так:
PROCESSING → CANCELLED
Статусы PAID и CANCELLED являются окончательными и не могут быть изменены. Получение билетов необходимо производить только после достижения заказом статуса PAID.
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 09.05.2016
1. Метод GET_VENUES
- в ответе в объекте Venue добавил параметр cityId,
параметр cityName теперь обязательный в ответе;
- поле fields: CITY_NAME устарело, добавил значение DESCRIPTION.
2. Метод GET_ACTIONS
- в запросе добавил поле dateFrom - необязательное (от какой даты получить представления);
- в ответе добавил поле actionEventTime - необязательное (если сеанс идет всегда в одно время, то поле будет);
- в ответе добавил поле venueName - необязательное (если место проведение всего одно, то поле будет);
- в ответе добавил поле kdp - обязательное (КДП - код доступа к представлению).
*Перед открытием схемы зала или нажатием кнопки забронировать(безместовая схема зала)
пользователь должен ввести КДП (метод для проверки кдп - CHECK_KDP)
3. Метод GET_ORDERS
- в объекте paymentOrder поле type устарело и не используется, вместо него поле gateway;
- описаны все имеющиеся на данный момент paymentOrder.
4. Методе GET_TICKETS_BY_ACTION_EVENT
- в списке билетов добавил поле actionName;
- в списке билетов добавил поле smallPosterUrl.
5. Добавил GET_TICKETS_BY_ORDER
Возвращает все данные билетов по заказу.
6. Добавил метод CHECK_KDP (смотреть пункт 2)
7. Метод CREATE_ORDER
- добавил поля successUrl, failUrl - ОБЯЗАТЕЛЬНЫЕ поля, редиректы после оплаты;
- добавил поле email - необязательный параметр, указывает на то, на какой адрес отправить билеты после оплаты.
8. Добавил метод GET_FILTER
9. Метод GET_ACTION_EVENTS_GROUPED_BY_TICKETS
добавил поля:
fullActionName - полное название представления;
cityName - название города;
venueName - наименование места проведения;
quantity - количество билетов;
sum - сумма билетов.
10. Добавил метод GET_ACTION_EXT
возвращает информацию о мероприятии в конкретном городе,
список мест где оно проводится, в каждом месте проведения список сеансов.
Данный метод сделан для упрощения программирования.
Вместо него надо было выполнить 3 запроса к серверу: GET_VENUES, GET_ACTION, GET_ACTION_EVENTS.
11. Добавил метод GET_CART
возвращает список забронированных мест.
Места сгруппированы по сеансам. Метод GET_SEAT_IN_RESERVE устарел. Попрошу его больше не использовать.
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 20.05.2016
1. Изменение в методе GET_ACTIONS (Метод устарел. Смотрим пункт 4)
- добавил обязательное поле kindId в ответе в списке actionList;
- добавил обязательное поле kindName в ответе в списке actionList.
2. Изменение в методе GET_ACTION_EXT
- добавил обязательное поле kindId в ответе в объекте action;
- добавил обязательное поле kindName в ответе в объекте action;
- добавил обязательное поле categoryList в ответе в объекте actionEventList.
3. Изменение в методе GET_ACTION (Метод устарел)
- добавил обязательное поле kindId в ответе в объекте action;
- добавил обязательное поле kindName в ответе в объекте action.
4. Добавил метод GET_ACTIONS_V2
новый метод вместо GET_ACTIONS. Метод позволяет запросить представления только по городу.
Все остальные фильтры (места проведения, виды, дата) на клиенте.
5. Увидел в логах использование на фронтенде 1003 методов CHANGE_PRIVATE_DATA, GET_PRIVATE_DATA.
Методы устарели месяца 4 назад. Попрошу перейти на метод SET_EMAIL, GET_EMAIL.
6. Метод GET_TICKETS_BY_ACTION_EVENT
15.10.2015 устарело поле seatInfo.
7. Метод GET_SEAT_IN_RESERVE устарел. Вместо него GET_CART.
8. Метод RESERVATION (бронирование мест в безместовой схеме зала)
поля quantity, categoryPriceId устарели. Вместо этих полей использовать categoryQuantityMap.
9. Метод GET_ORDERS
поле paymentOrder устарело. Добавил поле formUrl в orderList (поле перенесено из paymentOrder).
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 15.06.2016
1. Если представление требует ввода КДП, то при запросе схемы зала в url надо добавить параметр kdp=КДП.
2. В запросе "Бронирование места в безместовой схеме зала (command = RESERVATION)" добавлен необязательный параметр kdp.
Передавать его, если представление требует ввод КДП.
3. Добавил в методе GET_CART в объекте actionEventList поля cityId и venueId.
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 22.06.2016
1. В ответах на запросы GET_TICKETS_BY_ORDER и GET_TICKETS_BY_ACTION_EVENT в списке билетов добавлены два поля legalOwner и age.
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 23.06.2016
1. Метод RESERVATION (type RESERVE, RESERVE_BY_PLACE). Добавил параметр kdp. Если представление требует ввода kdp, то параметр обязателен.
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 08.07.2016
1. Добавил полу actionId в ответе на запрос GET_CART в объекте actionEventList.
2. Добавил поле phone в запросе CREATE_ORDER.
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 22.07.2016
1. В ответе на запрос GET_CART добавил общий сервисный сбор, по сеансу и по месту.
2. В ответе на запрос GET_ACTION_EXT поле categoryList перенесено в categoryLimitList.
Существует 3 вида схем:
1. Безместовая. placementUrl будет отсутствовать, смотрим categoryLimitList.
2. Местовая. Смотрим placementUrl, categoryLimitList будет пустой.
3. Комбинированная. Смотрим placementUrl и categoryLimitList.
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 16.08.2016
1. В ответе на запрос GET_ORDERS добавил поля discount и serviceCharge. Поля в рублях.
2. В запросе CREATE_ORDER добавил поля discount и serviceCharge. Поля в процентах.
3. В ответе на запрос AUTH добавил поле frontendType.
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 02.09.2016
1. Добавил методы привязки почты BIND_EMAIL, CONFIRM_EMAIL.
Данные методы временно работают только в тестовой зоне. метод SET_EMAIL устарел и не работает теперь в тестовой зоне.
2. Добавил отдельный метод получения карт GET_MECS.
С учетом появления данного метода карты не отдаются методами GET_ACTION_EVENTS_GROUPED_BY_TICKETS, GET_TICKETS_BY_ACTION_EVENT.
Ограничения по выдаче карт введены пока только в тестовой зоне. Карты не отдаются на немобильные фронтенды как в тестовой так и в реальной зоне.
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 25.10.2016
1. Поля email и phone в запросе CREATE_ORDER доступны только для интерфейсов типа КАССА и ПРИГЛАСИТЕЛЬНЫЙ.
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 25.11.2016
1. Добавлен метод возврата билетов REFUND_TICKETS.
2. Добавлено поле статус заказа (status) в ответах на запросы CREATE_ORDER и GET_ORDER_INFO.
3. Метод CREATE_ORDER. Поле paid устарело и будет удалено 25.12.2016.
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 15.12.2016
1. Добавил метод GET_ORDERS_EXT.
2. Метод GET_TICKETS_BY_ORDER. Добавил поля: orderDatePattern, actionEventDatePattern, totalPrice, serviceCharge. Удалил поле datePattern.
3. Метод GET_TICKETS_BY_ACTION_EVENT. Добавил поля: totalPrice, serviceCharge.
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 27.12.2016
1. Добавил в методе CREATE_ORDER поле fullName. Поле необязательное. Содержимое поля отобразится на билете.
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 04.02.2017
1. Метод GET_ACTION_EXT. В категорию добавлен параметр availability.
availability - кол-во доступных мест в категории. Если remainder отсутствует, то ориентируемся на availability. Если remainder присутствует, то нужно внимательно использовать эти параметры.
К примеру общее ограничение remainder на 3 категории может быть 100, но и в каждой категории availability также может быть 100.
2. Добавлен новый статус resultCode 102, означающий, что необходимо привязать почту. Проверять данный код необходимо при ответе на запрос RESERVATION.
3. Метод GET_ACTION_EVENTS_GROUPED_BY_TICKETS. Добавлено поле ticketsUrl - ссылка на билеты в формате pdf (ссылка на вновь купленные билеты включительно с 27.02.2017.
Если билет куплен ранее, то по ссылке билетов не будет).
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 05.05.2017
1. Метод GET_CITIES устарел. Вместо него использовать GET_FILTER.
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 18.05.2017
1. Метод GET_ACTION_EXT. Добавлен параметр bookletUrl - ссылка на буклет на конкретное представление.
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 08.06.2017
1. Добавлены поля статуса заказа (statusExtStr и statusExtInt) в ответах на запросы CREATE_ORDER, GET_ORDER_INFO, GET_ORDERS, GET_ORDERS_EXT, GET_TICKETS_BY_ORDER.
2. Поле status устарело в методах CREATE_ORDER, GET_ORDER_INFO, GET_ORDERS, GET_ORDERS_EXT, GET_TICKETS_BY_ORDER.
3. Добавлен метод CREATE_USER.
4. Добавлен метод GET_SEAT_LIST.
5. Добавлен метод CREATE_ORDER_EXT.
6. Добавлен метод CANCEL_ORDER.
7. Добавлен метод PAY_ORDER.
8. Добавлено новое поле age (возрастное ограничение) в ответ метода GET_ACTION_EXT.
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 06.07.2017
1. Изменено описание метода GET_CITIES.
2. Добавлен метод GET_VENUE_TYPES.
3. Добавлен метод GET_VENUES.
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 13.07.2017
1. Изменено описание методов бронирования RESERVATION.
2. Добавлено новое поле barCodeType (тип штрихкода) в ответ метода GET_TICKETS_BY_ORDER.
3. Добавлено новое необязательное поле longReservation в метод CREATE_ORDER_EXT.
4. Добавлено новое поле orderTimeout в ответ метода CREATE_ORDER_EXT.
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 22.07.2017
1. Добавлены новые поля (organizerId, organizerName, legalOwner) в ответ метода GET_ACTION_EXT.
2. Добавлен метод GET_TICKETS_BY_DAY.
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 09.08.2017
1. Поле userId в запросе GET_ACTION_EXT необязательное.
2. Добавлен раздел "Общая схема использования протокола": команды протокола делятся на сессионные и несессионные.
Список несессионных команд:
1. GET_ACTIONS_V2;
2. GET_ACTION_EXT;
3. GET_CITIES;
4. GET_VENUE_TYPES;
5. GET_VENUES;
6. GET_FILTER;
7. GET_SEAT_LIST;
8. GET_TICKETS_BY_DAY.
Нет необходимости выполнять команду AUTH раньше какой либо из перечисленных команд. Для их выполнения не нужен идентификатор сессии (sessionId).
Для выполнения сессионных команд нужно иметь sessionId. Получить его первоначально нужно с помощью команды AUTH (для билетных систем CREATE_USER). Полученные данные пользователя рекомендуется сохранить и использовать повторно.
Сессия пользователя определяется sessionId и действует бессрочно.
В общем случае, sessionId понадобится перед командой BIND_EMAIL (RESERVATION для билетных систем).
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 23.08.2017
1. Добавлено новое поле seatId в ответ метода GET_TICKETS_BY_ORDER.
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 02.10.2017
1. Добавил описание статусов билета в метод GET_TICKETS_BY_ORDER.
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 18.02.2018
1. Добавлены новые поля seatList и cartTimeout в ответ метода RESERVATION.
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 01.03.2018
1. Добавлены новые поля cityId и cityPass в ответ метод GET_MECS.
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 12.03.2018
1. Добавлены новые поля seatingPlanId и seatingPlanName в ответ метода GET_ACTION_EXT.
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 19.08.2018
1. Из всех запросов удалено обязательное поле versionCode. 2. Удален метод SEND_WI_FLY_DATA.
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 16.10.2018
1. Везде изменен адрес сервера на api.bil24.pro.
2. В методе GET_TICKETS_BY_ORDER добавлено описание вариантов типов штрих-кодов.
3. В методах GET_CART, GET_MECS, GET_ORDERS_EXT, GET_TICKETS_BY_ACTION_EVENT, GET_TICKETS_BY_ORDER в параметры запроса добавлено новое необязательное поле rawCoordinates. Передача значения true исправляет несовместимости со значением координат мест (sector, row, number) и названием категории categoryName.
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 06.12.2018
1. В ответ метода GET_SEAT_LIST добавлено новое поле categoryList.
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 12.12.2018
1. Добавлен новый метод для интерфейсов Билетная система GET_ALL_ACTIONS