Бронирование и продажа
- 1 Общая технологическая цепочка
- 2 Запрос на бронирование билетов -reserve
- 3 Запрос информации о брони - getinfo
- 4 Отмена брони - unreserve
- 5 Продажа- sale
- 6 Возврат - unsale(запрос на отмену выкупленного места)
- 7 Подтверждение возврата – confirm_unsale
1 Общая технологическая цепочка
-
Сервис, осуществляющий бронирование, заключает договор с кинотеатром и получает соответствующий аккаунт.
-
Запрос на резервирование мест передается кинотеатру сервисом, осуществляющим бронирование. В случае успешного выполнения в базе кинотеатра создается документ резервирования мест на указанный сеанс для указанного зрителя. Данный документ получает статус действующей брони и может быть изменен:
-
Владельцем учетной записи, под которой был создан документ;
-
Пользователями кинотеатра (например, зритель может обратиться к билетному кассиру с просьбой выкупить указанную бронь);
-
Администратором кинотеатра (например, при изменении расписания);
-
Соответствующей системной службой, которая меняет статус документа (снимает бронь за указанное время до начала сеанса).
-
-
При создании в кинотеатре документа резервирования в ответном сообщении передается идентификатор документа («docid»), который остается неизменным для всех последующих обращений. По данному идентификатору можно получать информацию о состоянии, изменять статус документа или строить отчеты.
-
Все расчеты стоимости билетов и скидок выполняются на момент создания резерва и в дальнейшем остаются неизменными (для интернет-сервиса).
В случае изменения стоимости билета или изменения скидки действуют следующие правила:
-
При бронировании билетов с последующим самостоятельным выкупом зрителем конечная стоимость билетов определяется той ценой, которая действует на момент покупки билета. (Например, если пользователь при резервировании указал, что покупает 5 детских билетов, а покупает три взрослых, или цены на билеты были изменены, то общая сумма определится ценой на момент выкупа билетов).
-
После того, как продажа произведена, цены и скидки изменить невозможно. Если скидка была применена неправомерно, то решение сложившейся ситуации остается за администрацией кинотеатра.
-
-
После создания документа резервирования возможны следующие действия:
-
Отмена брони (документ переводится в состояние "Аннулирован").
-
Продажа (документ переводится в состояние "Продан").
-
Печать билетов (документ переводится в состояние " Билеты распечатаны"). Документ в состоянии "Билеты распечатаны" не может быть изменен через интернет-сервис. Возврат подобных билетов оформляется через билетную кассу.
-
Возврат проданных билетов (только для документа в состоянии "Продан". Документ переводится в состояние "Отмена продажи").
-
Погашение брони (зритель прошел в зал). Документ переводится в состояние "Погашено". Документ в состоянии "Погашено" не может быть изменен через интернет-сервис. Возврат подобных билетов оформляется через билетную кассу.
-
Выдача билетов, купленных или зарезервированных через интернет-сервис, производится в кассе кинотеатра. Идентификация зрителя производится по коду или штриховому коду, который сообщается зрителю при покупке или бронировании через интернет-сервис
2 Запрос на бронирование билетов -reserve
Запрос:
reserve - посылает команду на бронирование списка выбранных мест.
Запрос на резервирование билетов передается методом POST в соответствии с RFC1867
Параметры:
xmldata – данные в формате:
<reservation userLogin="" userPwd="" showId="" email="" guest="">
<seats>
<seat seatId="" discountId=""/>
</seats>
</reservation>
Где:
showId - Идентификатор киносеанса.
userLogin – Учетная запись службы, осуществляющей бронирование.
userPwd - Пароль службы, осуществляющей бронирование.
email - электронная почта зрителя, на которого осуществляется бронирование.
guest - Имя или идентификатор зрителя, на которого осуществляется бронирование.
seatId - Идентификатор места (обязательный параметр)
discountId - Идентификатор скидки (необязательный параметр)
Ответ:
<result errCode="Код ошибки" errText="Описание ошибки">
<reservation
docid ="Идентификатор документа"
reservnum ="Номер брони"
showid ="Идентификатор киносеанса"
showfilmname ="Наименование фильма"
showdatetime ="Дата-время начала сеанса в формате ДД.ММ.ГГГГ ЧЧ:мм:СС"
reservstatus ="Состояние брони"
actualdate ="Дата и время снятия брони"
reservdate ="Дата и время оформления транзакции бронирования"
guest ="Имя или идентификатор зрителя на которого оформлена бронь"
service ="Идентификатор службы">
<seats>
<seat
seatid ="{МЕСТО}" seatrownum ="{МЕСТО.НОМЕР_РЯДА}" seatnum ="{МЕСТО.НОМЕР_МЕСТА}" seatprice ="{МЕСТО.ЦЕНА}" groupid ="{МЕСТО.НОМЕР_ДИВАНА}" seatstate ="1"
/>
</seats>
</reservation>
</result>
Список ошибок:
0 - Успешное проведение транзакции.
1 - Ошибка авторизации.
2 - Ошибка сеанса. Указанный киносеанс не существует или не доступен для продаж
3 - Неверно указаны места. (например, место относится к другому залу).
4 - Места забронировать невозможно.
5 - Места уже заняты. (С момента ответа о состоянии мест зала и до отправки команды на бронирование могло пройти много времени, и эти места на момент оформления транзакции уже заняты).
6 – Сеанс недоступен для продаж.
7 - Недостаточно времени до начала сеанса или Превышено количество мест, доступных для бронирования на один сеанс.
8 – Указанная скидка не существует.
9 - Невозможно забронировать места на данный сеанс.
3 Запрос информации о брони - getinfo
Запрос:
getinfo - возвращает информацию о документе с указанным идентификатором
Параметры:
userlogin - Логин пользователя (службы), осуществляющего бронирование
userpwd - Пароль пользователя (службы), осуществляющего бронирование
docid - Идентификатор документа бронирования
Пример:
http://95.47.181.201:8112/kino/site.getinfo?docid =xxxxxx&userlogin=demo&userpwd=demo
Ответ:
<result errCode ="Код ошибки" errText="Описание ошибки"
<reservation
docid ="Идентификатор документа"
reservnum ="Номер брони"
showid ="Идентификатор киносеанса"
showfilmname ="Наименование фильма"
showdatetime ="Дата-время начала сеанса в формате ДД.ММ.ГГГГ ЧЧ:мм:СС"
reservstatus ="Состояние брони"
actualdate ="Дата и время снятия брони"
reservdate ="Дата и время оформления транзакции бронирования"
guest ="Имя или идентификатор зрителя, на которого оформлена бронь"
service ="Идентификатор службы"> paymenttype ="Тип оплаты">
<seats>
<seat
seatid ="{МЕСТО}" seatrownum ="{МЕСТО.НОМЕР_РЯДА}" seatnum ="{МЕСТО.НОМЕР_МЕСТА}" seatprice ="{МЕСТО.ЦЕНА}" groupid ="{МЕСТО.НОМЕР_ДИВАНА}"
/>
</seats>
</reservation>
</result>
Список ошибок:
0 - Запрос успешно выполнен
1 - Ошибка авторизации
2 - Неверный идентификатор брони
3 - Недостаточно прав на данную операцию (бронь существует, но оформлена под учетной записью другой службы)
Примечание: указанная в ответном сообщении сумма является ориентировочной. Конечная стоимость забронированных билетов определяется при продаже.
4 Отмена брони - unreserve
Запрос:
unreserve - отмена брони с указанным идентификатором
Параметры:
userlogin - Логин пользователя (службы), осуществляющего бронирование
userpwd - Пароль пользователя (службы), осуществляющего бронирование
docid - Идентификатор документа бронирования
Ответ:
<result errCode="Код ошибки" errText="Описание ошибки" docid="Идентификатор документа" />
Список ошибок:
0 - Запрос успешно выполнен.
1 - Ошибка авторизации.
2 - Неверный идентификатор брони
3 - Недостаточно прав на данную операцию.
4 - Неверный статус брони (невозможно снять бронь, поскольку по ней уже были продажи).
5 Продажа- sale
Запрос:
sale - продажа предварительно забронированных мест.
Параметры:
userlogin - Логин пользователя (службы), осуществляющего бронирование
userpwd - Пароль пользователя (службы), осуществляющего бронирование
docid - Идентификатор документа бронирования
paymenttype - Тип оплаты (1 – Пушкинская карта, 2 – кредитная карта)
terminalowner - ИНН владельца платежного терминала
terminalid - Идентификатор платежного терминала
rrn - RRN платежной транзакции
Ответ:
<result errCode ="Код ошибки" errText="Описание ошибки"
<sale
docid ="Идентификатор документа"
reservnum ="Номер брони"
showid ="Идентификатор киносеанса"
showfilmname ="Наименование фильма"
showdatetime ="Дата-время начала сеанса в формате ДД.ММ.ГГГГ ЧЧ:мм:СС"
reservstatus ="Состояние брони"
actualdate ="Дата и время снятия брони"
reservdate ="Дата и время оформления транзакции бронирования"
guest ="Имя или идентификатор зрителя, на которого оформлена бронь"
service ="Идентификатор службы"> paymenttype ="Тип оплаты">
<seats>
<seat
seatid ="{МЕСТО}" seatrownum ="{МЕСТО.НОМЕР_РЯДА}" seatnum ="{МЕСТО.НОМЕР_МЕСТА}" seatprice ="{МЕСТО.ЦЕНА}" groupid ="{МЕСТО.НОМЕР_ДИВАНА}"
/>
</seats>
</sale>
</result>
Список ошибок:
0 - Запрос успешно выполнен.
1 - Ошибка авторизации.
2 - Неверный идентификатор документа.
3 - Недостаточно прав на данную операцию.
4 - Неверный статус.
5 - Неверный тип оплаты (при попытке оплаты Пушкинской картой билета на фильм, не участвующий в программе PRO.Культура)
6 Возврат - unsale(запрос на отмену выкупленного места)
Запрос:
unsale- возврат проданных мест
Параметры:
userlogin - Логин пользователя (службы), осуществляющего бронирование
userpwd - Пароль пользователя (службы), осуществляющего бронирование
docid - Идентификатор документа бронирования
Ответ:
<result
errCode="Код ошибки"
errText="Описание ошибки"
docid ="Идентификатор документа">
<unsale
Docid ="Идентификатор документа"
reservnum ="Номер брони"
showid ="Идентификатор киносеанса"
showfilmname ="Наименование фильма"
showdatetime ="Дата-время начала сеанса в формате ДД.ММ.ГГГГ ЧЧ:мм:СС"
reservstatus ="Состояние брони"
actualdate ="Дата и время снятия брони"
reservdate ="Дата и время оформления транзакции бронирования"
guest ="Имя или идентификатор зрителя, на которого оформлена бронь"
service ="Идентификатор службы"> paymenttype ="Тип оплаты">
<seats>
<seat
seatid ="{МЕСТО}" seatrownum ="{МЕСТО.НОМЕР_РЯДА}" seatnum ="{МЕСТО.НОМЕР_МЕСТА}" seatprice ="{МЕСТО.ЦЕНА}" groupid ="{МЕСТО.НОМЕР_ДИВАНА}"
/>
</seats>
</unsale>
</result>
Список ошибок:
0 - Запрос успешно выполнен.
1 - Ошибка авторизации.
2 - Неверный идентификатор документа.
3 - Недостаточно прав на данную операцию.
4 - Неверный статус.
7 Подтверждение возврата – confirm_unsale
Запрос:
confirm_unsale- завершение возврата проданных мест с указанием реквизитов оплаты.
Параметры:
userlogin - Логин пользователя (службы), осуществляющего бронирование
userpwd - Пароль пользователя (службы), осуществляющего бронирование
docid - Идентификатор документа бронирования
paymenttype - Тип оплаты (1 – Пушкинская карта, 2 – кредитная карта)
terminalowner - ИНН владельца платежного терминала
terminalid - Идентификатор платежного терминала
rrn - RRN платежной транзакции
Ответ:
<result
errCode="Код ошибки"
errText="Описание ошибки"
docid ="Идентификатор документа">
<unsale
docid ="Идентификатор документа"
reservnum ="Номер брони"
showid ="Идентификатор киносеанса"
showfilmname ="Наименование фильма"
showdatetime ="Дата-время начала сеанса в формате ДД.ММ.ГГГГ ЧЧ:мм:СС"
reservstatus ="Состояние брони"
actualdate ="Дата и время снятия брони"
reservdate ="Дата и время оформления транзакции бронирования"
guest ="Имя или идентификатор зрителя, на которого оформлена бронь"
service ="Идентификатор службы"> paymenttype ="Тип оплаты">
<seats>
<seat
seatid ="{МЕСТО}" seatrownum ="{МЕСТО.НОМЕР_РЯДА}" seatnum ="{МЕСТО.НОМЕР_МЕСТА}" seatprice ="{МЕСТО.ЦЕНА}" groupid ="{МЕСТО.НОМЕР_ДИВАНА}"
/>
</seats>
</unsale>
</result>
Список ошибок:
0 - Запрос успешно выполнен.
1 - Ошибка авторизации.
2 - Неверный идентификатор документа.
3 - Недостаточно прав на данную операцию.
4 - Неверный статус.
5 - Неверный тип оплаты (при попытке возврата иным типом оплаты, чем при продаже).