axp-dev/cinemapark-api

PHP library for integration with information systems Cinema Park

1.4.0 2017-08-04 11:37 UTC

This package is auto-updated.

Last update: 2024-04-25 05:04:09 UTC


README

PHP библиотека для интеграции с информационными системами Синема Парк.

Latest Stable Version Latest Unstable Version License

Оглавление

  1. Старт
  2. Использование
  3. Вспомогательная информация
  4. Автор
  5. Лицензия

Старт

Установка через composer

$ composer require axp-dev/cinemapark-api

Инициализация

$CinemaPark = new AXP\CinemaPark\CinemaPark();

// Получаем информаицю по фильму "Гадкий я 3"
$film = $CinemaPark->getFilmInfo(3679);

Использование

Получение списка мультиплексов и городов

public function getMultiplexes() : array

Результат ответа

Поле Тип Описание
id integer Идентификатор мультиплекса
short_name string Короткое название мультиплекса
full_name string Полное название мультиплекса
description string Описание кинотеатра
phone string Телефон кинотеатра
formats array Список форматов показа фильмов
city_id integer Идентификатор города мультиплекса
city_name string Наименование города мультиплекса
address string Адес мультиплекса
multiplex_geo string Географические координаты мультиплекса

Получение списка фильмов

В список могут попадать фильмы, не значащиеся в расписании мультиплексов (к примеру, поставленные в прокат на будущее, но без конкретного расписания).

public function getFilms() : array

Результат ответа

Поле Тип Описание
has_subtitles bool Если фильм идёт с субтитрами (скорее всего, с оригинальной звуковой дорожкой)
age_id integer Код возрастных ограничений. Подробнее
startdate string Дата старта проката в нашей сети (без учёта возможных премьерных показов)
genre string Текстовое описание жанра фильма
original_title string Оригинальное название фильма (для иностранных фильмов)
timing integer Продолжительность фильма в минутах
age_limit integer Возрастное ограничение. В будущем будет произведён полный переход от age_id к age_limit
category string Slug категории
title string Русскоязычное название фильма с учётом формата
film_id integer Идентификатор фильма
youtubeid string Список трейлеров с Youtube (через запятую)

Привязка фильмов к мультиплексам

В список могут попадать фильмы, не значащиеся в расписании мультиплексов (к примеру, поставленные в прокат на будущее, но без конкретного расписания).

public function getFilmsMultiplexes() : array

Результат ответа

Поле Тип Описание
id integer Идентификатор фильма
multiplex array Идентификатор мультиплекса, к которому привязан фильм

Получение расписания фильма

Выводится всё известное расписание, в т.ч. и прошедшие сеансы.

public function getRepertoir($id) : array

Параметры метода

Аргумент Тип Описание
id integer Идентификатор фильма

Результат ответа

Поле Тип Описание
format_id integer Идентификатор формата показа, соответствующий выгрузке formats
hall integer Идентификатор зала (уникален для всей сети)
base_price integer Цена билета на сеанс без учёта скидок (в российских рублях)
id integer Идентификатор сеанса
state bool Состояние сеанса (открыт, либо фильмокопия не поступила / произошёл срыв сеанса / сеанс отменён). Подробнее
datetime string Дата/время сеанса (местное время соответствующего мультиплекса)
multiplex integer Идентификатор мультиплекса
glasses_price integer Дополнительная стоимость, взимаемая на кассе за 3D-очки

Получение расписания мультиплекса

public function getMultiplexRepertoir($id) : array

Параметры метода

Аргумент Тип Описание
id integer Идентификатор мультиплекса

Результат ответа

Поле Тип Описание
format_id integer Идентификатор формата показа, соответствующий выгрузке formats
hall integer Идентификатор зала (уникален для всей сети)
base_price integer Цена билета на сеанс без учёта скидок (в российских рублях)
id integer Идентификатор сеанса
state bool Состояние сеанса (открыт, либо фильмокопия не поступила / произошёл срыв сеанса / сеанс отменён). Подробнее
datetime string Дата/время сеанса (местное время соответствующего мультиплекса)
multiplex integer Идентификатор мультиплекса
glasses_price integer Дополнительная стоимость, взимаемая на кассе за 3D-очки

Получение дополнительной информации по фильму

public function getFilmInfo($id) : array

Параметры метода

Аргумент Тип Описание
id integer Идентификатор фильма

Результат ответа

Поле Тип Описание
hit bool Присвоен ли фильму статус «Хит»
description string Описание фильма
addinfo array Дополнительная информация, тип которой указан в атрибуте «title» (режиссёр, актёры, озвучка)
year integer Год выпуска фильма
country string Страна фильма

Получение списка залов по всем мультиплексам

public function getHalls() : array

Результат ответа

Поле Тип Описание
multiplex_id integer Идентификатор мультиплекса
title string Идентификатор зала внутри мультиплекса
id integer Идентификатор зала внутри мультиплекса

Получение списка форматов показа фильмов

public function getFormats() : array

Результат ответа

Поле Тип Описание
id integer Идентификатор формата (показываемый в выгрузке repertoir как format_id)
short_name string Наименование формата
title_suffix sting Текстовая строка, которую нужно добавить к названию фильма, чтобы получить «название фильма с учётом формата»
priority integer Очерёдность показа формата в списке форматов

Комплексная выгрузка текущего расписания мультиплекса

public function getTimeTable($id) : array

Параметры метода

Аргумент Тип Описание
id integer Идентификатор мультиплекса

Результат ответа

Поле Тип Описание
hall integer Идентификатор зала (уникален для всей сети)
hall_title string Маркетинговое/коммерческое наименование зала
datetime string Дата/время сеанса (местное время соответствующего мультиплекса)
base_price integer Цена билета на сеанс без учёта скидок (в российских рублях)
age_limit integer Возрастное ограничение на фильм
title string Название фильма с учётом формата
hall_website_id integer Идентификатор зала на сайте СИНЕМА ПАРК
has_subtitles bool Наличие субтитров на сеансе

Проверка возможности начать сессию выбора мест для бронирования или покупки мест

public function checkBSession($multiplex_id, $repertoir_id, $mode) : array

Параметры метода

Аргумент Тип Описание
multiplex_id integer Идентификатор мультиплекса
repertoir_id integer Идентификатор сеанса (уникален в пределах мультиплекса)
mode integer Режим открытия сессии выбора мест. Подробнее

Результат ответа

Поле Тип Описание
status integer Можно ли начать сессию выбора мест. 0 - Нельзя, 1- Можно.
mode_available integer/array Доступность режимов открытия сессии выбора мест. 0 - Нельзя, 1- Можно.
b_session_availability integer Код доступности инициализации сессии. Подробнее
repertoir_status integer Возможность работы с сеансом. Подробнее

Инициализация сессии выбора мест для бронирования или покупки

public function initBSession($multiplex_id, $repertoir_id, $mode) : array

Параметры метода

Аргумент Тип Описание
multiplex_id integer Идентификатор мультиплекса
repertoir_id integer Идентификатор сеанса (уникален в пределах мультиплекса)
mode integer Режим открытия сессии выбора мест. Подробнее

Результат ответа

Поле Тип Описание
status integer Можно ли начать сессию выбора мест. 0 - Нельзя, 1- Можно.
b_session_id string Идентификатор сессии выбора мест, использующийся в дальнейшем при выборе мест и отмене/фиксации сессии

Получение геометрической схемы зала

Схему зала можно кешировать, рассчитывая на то, что в данном конкретном сеансе она не изменится.

public function seatsLayout($multiplex_id, $repertoir_id) : array

Параметры метода

Аргумент Тип Описание
multiplex_id integer Идентификатор мультиплекса
repertoir_id integer Идентификатор сеанса (уникален в пределах мультиплекса)

Результат ответа

Поле Тип Описание
id integer ID места. Используется для выбора или для отмены выбора места
number integer Номер зрительского кресла (расположен на спинке кресла)
row integer Ряд зрительских кресел
xpos integer X-координата кресла на схеме зала
ypos integer Y-координата кресла на схеме зала
block_No integer Номер блока для групповых мест (диванов). Присутствует, если место является частью группового.

Получение состояния мест

public function seatStates($multiplex_id, $repertoir_id, $b_session_id, $timestamp_tz = 0) : array

Параметры метода

Аргумент Тип Описание
multiplex_id integer Идентификатор мультиплекса
repertoir_id integer Идентификатор сеанса (уникален в пределах мультиплекса)
b_session_id string Идентификатор сессии выбора мест
timestamp_tz integer Дата/время в формате Unix Timestamp

Результат ответа

Поле Тип Описание
sql_date array Время на стороне нашей системы, соответствующее выводимым данным
b_session_data array Данные сессии выбора мест (при наличии)
seat_states array Данные по месту (при наличии)
Данные в b_session_data
Поле Тип Описание
ts_start_tz integer Время начала сессии в формате Unix Timestamp
status integer Текущий статус сессии выбора мест. Подробнее
Данные в seat_states
Поле Тип Описание
is_mine bool Принадлежит ли место текущей сессии выбора мест
seat_id integer ID места, соответствующее выгрузке seatsLayout().
state integer Состояние места. Подробнее

Действие с местом в сессии выбора мест

Выбор места или снятие выбора

public function seatAction($multiplex_id, $repertoir_id, $b_session_id, $action_type, $seat_id) : array

Параметры метода

Аргумент Тип Описание
multiplex_id integer Идентификатор мультиплекса
repertoir_id integer Идентификатор сеанса (уникален в пределах мультиплекса)
b_session_id string Идентификатор сессии выбора мест
action_type integer Тип запроса. 0 - Снятие выбора, 1 - Выбор места
seat_id integer Идентификатор места

Результат ответа

Поле Тип Описание
status bool Удалось или нет произвести действие с местом
statustext string Текстовое описание проблемы, возникшей при попытке произвести действие с местом. В зависимости от проблемы может выводиться либо примерное описание проблемы (к примеру, «Сеанс отменён»), либо информация о внутренних системных ошибках с соответствующими номерами ошибок.

Отмена или закрытие сессии выбора мест

Используется, когда пользователь хочет отказаться от бронирования или покупки на стадии выбора мест

public function cancelBSession($multiplex_id, $repertoir_id, $b_session_id) : array

Параметры метода

Аргумент Тип Описание
multiplex_id integer Идентификатор мультиплекса
repertoir_id integer Идентификатор сеанса (уникален в пределах мультиплекса)
b_session_id string Идентификатор сессии выбора мест

Результат ответа

Поле Тип Описание
status bool Удалось или нет произвести закрытие сессии выбора мест
statustext string Текстовое описание проблемы, возникшей при попытке произвести действие с местом. В зависимости от проблемы может выводиться либо примерное описание проблемы (к примеру, «Сеанс отменён»), либо информация о внутренних системных ошибках с соответствующими номерами ошибок.

Закрытие сессии выбора мест

Фиксация выбора мест

public function commitBSession($multiplex_id, $repertoir_id, $b_session_id, $mode, $email, $phone, $provider_id) : array

Параметры метода

Аргумент Тип Описание
multiplex_id integer Идентификатор мультиплекса
repertoir_id integer Идентификатор сеанса (уникален в пределах мультиплекса)
b_session_id string Идентификатор сессии выбора мест
mode integer Режим открытия сессии выбора мест. Подробнее
email string Адрес электронной почты для получения уведомлений об изменении состояния заказа
phone integer Номер телефона (10 цифр) для получения sms-уведомлений об изменении состояния заказа
provider_id integer Идентификатор платёжного агента. Подробнее

Результат ответа

Поле Тип Описание
status bool Удалось или нет закрыть сессию выбора мест
statustext string Текстовое описание проблемы, возникшей при попытке произвести действие с местом. В зависимости от проблемы может выводиться либо примерное описание проблемы (к примеру, «Сеанс отменён»), либо информация о внутренних системных ошибках с соответствующими номерами ошибок.
order_id integer Номер заказа. В случае бронирования он соответствует номеру брони, в случае продажи – будущему номеру продажи

Открытие сессии выбора мест после фиксации

Для брони – редактирование существующей брони, для продажи – возврат в режим выбора мест до осуществления оплаты Если существующая бронь была переведена в режим редактирования и после этого не произошло завершение сессии с фиксацией выбора мест через commitBSession(), то бронь будет отменена по тайм-ауту.

public function editBooking($multiplex_id, $repertoir_id, $codeword) : array

Параметры метода

Аргумент Тип Описание
multiplex_id integer Идентификатор мультиплекса
repertoir_id integer Идентификатор сеанса (уникален в пределах мультиплекса)
codeword string Кодовое слово заказа. Вводится пользователем и передаётся в нашу систему в момент фиксации выбора мест. Максимум 16 символов

Результат ответа

Поле Тип Описание
status bool Удалось или нет перевести бронь в режим редактирования
statustext string Текстовое описание проблемы, возникшей при попытке произвести действие с местом. В зависимости от проблемы может выводиться либо примерное описание проблемы (к примеру, «Сеанс отменён»), либо информация о внутренних системных ошибках с соответствующими номерами ошибок.
b_session_id string Идентификатор сессии выбора мест, который впоследствии используется для выбора мест и последующей отмены или завершения сессии с фиксацией выбора мест

Инициализация сессии оплаты

Вызывается перед направлением пользователя на страницу оплаты (после того, как был зафиксирован выбор мест, сформирована цена заказа и пользователь изъявил желание оплатить заказ)

public function initSSession($multiplex_id, $order_id, $codeword, $provider_id) : array

Параметры метода

Аргумент Тип Описание
multiplex_id integer Идентификатор мультиплекса
order_id integer Идентификатор заказа в конкретном мультиплексе
codeword string Кодовое слово заказа. Вводится пользователем и передаётся в нашу систему в момент фиксации выбора мест. Максимум 16 символов
provider_id integer Идентификатор платёжного агента. Подробнее

Результат ответа

Поле Тип Описание
status bool Удалось или нет произвести инициализацию сессии оплаты
statustext string Текстовое описание проблемы, возникшей при попытке инициализировать сессию оплаты. В зависимости от проблемы может выводиться либо примерное описание проблемы (к примеру, «Время на оплату истекло»), либо информация о внутренних системных ошибках с соответствующими номерами ошибок.
order_number string Номер заказа для последующего сообщения клиенту. Формат – MM-NNNNNN
amount integer Сумма заказа в российских рублях на момент инициализации сессии. Должна совпадать с суммой оплаты, передаваемой в commitSSession().
timestamp_validuntil integer Время, до которого необходимо оплатить заказ (UTC)
timestamp_validuntil_tz integer Это же время в формате timestamp tz
security_key string Цифровая подпись запроса на оплату. Формируется в соответствии с индивидуальными для каждого платёжного агента договорённостями

Фиксация факта оплаты заказа

public function commitSSession($multiplex_id, $order_id, $provider_id, $amount, $dt_payment, $transaction_id, $payment_type, $payment_info, $security_key) : array

Параметры метода

Аргумент Тип Описание
multiplex_id integer Идентификатор мультиплекса
order_id integer Идентификатор заказа в конкретном мультиплексе
provider_id integer Идентификатор платёжного агента. Подробнее
amount integer Сумма оплаты в российских рублях. Должна соответствовать сумме, полученной в результате обращения к initSSession()
dt_payment string Дата/время платежа в соответствии с данными платёжной системы, UTC, формат «YYYY-MM-DD HH:MM:SS»
transaction_id mixed Идентификатор транзакции в платёжной системе (или в вашей системе обработки платежей)
payment_type string Наименование механизма оплаты (к примеру, Card – банковская карта, Qiwi – платёжная система Qiwi и т.д.). Строка, максимум 20 символов.
payment_info string Информация о плательщике, которая может помочь дежурному администратору кинотеатра определить «владельца заказа» в случае, когда клиент не может вспомнить номер заказа и кодовое слово
security_key string Цифровая подпись подтверждения платежа. Формируется по тем же правилам, что в методе initSSession()

Результат ответа

Поле Тип Описание
status bool Оплаты прошла успешно

Фиксация факта неудачи оплаты заказа

public function registerPaymentFailure($multiplex_id, $order_id, $provider_id, $amount, $dt_payment, $transaction_id, $payment_type, $payment_info, $security_key) : array

Параметры метода

Параметры полностью идентичны используемым в commitSSession(). Подробнее

Результат ответа

Поле Тип Описание
result string Сообщение от сервиса

Вспомогательная информация

Код возрастных ограничений

Значение Описание
1 без ограничений по возрасту
2 до 12 лет в сопровождении родителей
3 достигшим 14 лет
4 достигшим 16 лет
5 достигшим 18 лет
6 для детей старше 6 лет

Состояние сеанса

Значение Описание
1 Сеанс открыт, в нём можно бронировать и покупать билеты
не 1 Сеанс не открыт, в нём нельзя бронировать и покупать билеты

Вопрос «показывать ли пользователю сеансы, где state != 1» остаётся на ваше усмотрение.

Режим открытия сессии выбора мест

Значение Описание
0 Проверка режимов бронирования и покупки
1 Бронирование
2 Покупка

Код доступности инициализации сессии

Значение Описание
0 Ошибка получения статуса
1 Можно инициализировать сессию
2 Превышено общее количество активных сессий
3 Превышено количество активных сессий в мультиплексе
4 Превышено количество активных сессий в сеансе
5 Превышено количество активных сессий по IP-адресу
6 Превышено общее количество сессий по IP-адресу
7 Превышено количество бронирований по IP-адресу
8 Система недоступна, ведутся технические работы

Для IP, внесённых в «белый список», всегда должно возвращаться 1.

Возможность работы с сеансом

Значение Описание
0 Различные нарушения целостности базы данных
1 Нет соединения с базой данных
2 Отсутствует сеанс
3 Сеанс не открыт
4 В зале нет ни одного свободного места, бронь и продажи закрыты
5 Всё OK, сеанс открыт – можно бронировать и продавать
6 Слишком мало времени до сеанса, продажа запрещена
7 Слишком мало времени до сеанса, бронирование запрещено
8 Сеанс прошёл
9 В зале осталось мало свободных мест — разрешена только продажа
10 В данном сеансе разрешено только бронирование

Статус сессии выбора мест

Значение Описание
1 Идёт выбор мест
2 Выбор мест отменён (пользователь отказался от бронирования/покупки на стадии выбора мест)
3 Таймаут выбора (сессия закрыта по тайм-ауту, пользователь не отказался от выбора мест, но и не подтвердил его)
4 Места забронированы
5 Бронь снята (после подтверждения брони пользователь отказался от неё)
6 Таймаут оплаты (после фиксации выбора мест оплата не поступила в установленное время)
7 Покупка совершена, места оплачены

Состояние места

Значение Описание
0 Место свободно
1 Место блокировано (в настоящий момент выбрано для бронирования или продажи)
2 Место забронировано
3 Место продано (билет выдан на руки клиенту)

Идентификаторы платёжного агента

Значение Описание
1 PayOnline
2 Рамблер/Афиша
3 Киноход

Автор

Alexander Pushkarev, e-mail: axp-dev@yandex.com

Лицензия

Основой Cinema Park API являет открытый исходный код, в соответствии MIT license