Организация интернет-бронирования и продаж
Материал из CinemaPark Integration
Содержание |
Общие принципы работы
Перед тем, как бронировать билеты, необходимо знать ID мультиплекса (выгрузка multiplexes), а также ID сеанса фильма (выгрузка repertoir).
Все обращения к методам API осуществляются посредством HTTP-запросов к серверу api.booking.www.cinemapark.ru. Метод – GET (для последующего облегчения отладки с использованием логов веб-сервера). Аргументы запроса передаются стандартно через ? (пример – ?multiplex_id=22&repertoir_id=154234). Кодировка аргументов и тела ответа – UTF-8.
Пользователь должен иметь возможность ввести собственное кодовое слово, являющееся паролем к заказу. Формат – 16 символов, желательно использовать 33 буквы русского алфавита, без пробелов. Кодовое слово используется для редактирования заказа, а также для получения билетов в кинотеатре.
В результате бронирования/покупки билетов пользователь получает номер заказа (он же номер брони в случае бронирования билетов). Для выкупа забронированных билетов в кассе кинотеатра необходимо назвать номер заказа или кодовое слово. Для получения билетов в кассе кинотеатра или в терминале выдачи билетов необходимо знать и номер заказа, и кодовое слово.
Отменить оплаченный заказ и вернуть деньги с помощью API невозможно. Для того, чтобы вернуть деньги, клиент должен прийти в кинотеатр не менее, чем за 1 час до сеанса и заполнить заявление на возврат средств у дежурного администратора.
Ограничения
Для выбора мест и бронирования билетов выделяется не более 15 минут с начала открытия сессии.
Для оплаты выбранных мест выделяется не более 15 минут с момента фиксации выбора мест.
Существуют определённые ограничения на количество действий в системе; для снятия ограничений IP-адрес вашего сервера должен быть внесён в наш «белый список» (это делается по e-mail).
Временные ограничения на бронирование и покупку билетов: бронирование и продажа билетов закрываются за 1 час до начала сеанса.
Количественные ограничения на бронирование: бронирование закрывается, если в зале остаётся менее 50% свободных мест (не продано, не оплачено, не забронировано, не выбрано другими пользователями). На продажу билетов данное ограничение не распространяется.
В периоды новогодних, майских или иных праздников, а также на отдельные фильмы могут вводиться специальные ограничения (вплоть до полной отмены возможности бронирования и/или покупки).
Бронирование билетов
Для начала желательно определить, возможно ли в принципе начать бронирование в данном мультиплексе/сеансе, с помощью метода check_b_session.
После того, как стало понятно, что бронирование возможно и пользователь готов начать бронирование (явно, нажав кнопку «забронировать билеты», или неявно), нужно открыть сессию выбора мест с помощью метода init_b_session.
Для того, чтобы показать пользователю схему зала, существует два метода: seats_layout для отображения геометрической схемы зала и seat_states для отображения статусов мест (свободно, занято и т.п.).
Выбирать места, а также отменять выбор конкретного места можно с помощью метода seat_action.
В случае отказа пользователя от бронирования (явного или неявного) крайне желательно закрыть сессию выбора мест с помощью метода cancel_b_session, после чего будет снята блокировка мест, выбиравшихся пользователем.
Выбор мест должен быть завершён с помощью вызова метода commit_b_session. На этой стадии формируется номер заказа.
Вернуться к выбору мест можно с помощью метода edit_booking (если пользователь хочет изменить/отредактировать бронь). Редактировать бронь можно в любой момент, вплоть до начала действия временных ограничений на бронирование в данном сеансе.
Покупка билетов
После того, как выбор мест был зафиксирован, нужно заявить о своём желании оплатить выбранные места, это делается с помощью метода init_s_session.
В случае успешной оплаты заказа пользователем необходимо вызвать метод commit_s_session, после чего в системе билетных продаж места будут иметь статус оплаченных и билеты можно будет получить в кинотеатре (в кассах или в терминале выдачи билетов).
В случае отказа пользователя от оплаты или неудачи при оплате желательно вызвать метод register_payment_failure. Метод используется исключительно для сбора статистики; после вызова метода заказ не отменяется, оплатить заказ всё ещё возможно (до истечения тайм-аута на оплату).