==== Ticketland iframe ====
{{ :backstage:nastroit_prodazhu_biletov_na_sajte_teatra.png?nolink |}}
----
=== Что такое Iframe ===
**Iframe** - специальная выделенная область на странице вашего сайта, в которой отображается часть сайта ticketland.ru. Благодаря этому пользователи могут выбрать и оплатить билет в нашей системе, оставаясь на вашем сайте. Также можно использовать отдельные страницы (например, схема зала и корзина) в случае интеграции в ваш сайт.
Ticketland предоставляет скрипт, автоматически отображающий iframe, настроенный на заданную страницу сайта www.ticketland.ru. Навигация и покупка билетов будет происходить в рамках iframe без взаимодействия со страницей, в которой он встроен.
----
=== Регистрация Iframe ===
В backstage.ticketland.ru вы получите доступ к странице [[http://backstage.ticketland.ru/frame#/]] (на начальной странице кнопка «Настроить продажу билетов на сайте театра»)
Домен указывается согласно используемому протоколу ( http/https ), на главную страницу, например https://site.ru
На той же странице генерируется скрипт для вставки на страницу вашего сайта. Пример такого скрипта:
var TLConf = {
accessHash: '1111112223334444555',
start: '/teatry/building',
containerId: 'tlFrameContainer',
baseDomain: 'https://www.ticketland.ru'
};
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = TLConf.baseDomain + '/site/getLiteFrameJS/';
document.body.appendChild(script);
* //start// – это относительная ссылка (без [[https://www.ticketland.ru]]), указывающая на страницу, которая будет открыта внутри фрейма
* //accessHash// – уникальный ключ фрейма, полученный при регистрации
----
=== Установка фрейма ===
Для установки фрейма нужно разместить код на вашем сайте. Можно изменить параметр //start// чтобы открывать в фрейме нужную страницу с сайта ticketland.ru.
**Возможные места для установки фрейма:**
* По кнопке купить билет открывается новая страница, содержащая фрейм Ticketland. Может содержать //header/footer// сайта
* Фрейм загружается на имеющейся странице
:!:Важные моменты:
* Фрейм и родительские элементы не должны иметь жесткие ограничения по ширине и высоте (по умолчанию фрейм занимает 100% ширины страницы).
* Рекомендуется вставлять фрейм ближе к началу страницы, по возможности не загромождая пространство ненужными блоками т.к. после открытия страницы, посетитель должен сразу увидеть фрейм и приступить к заказу.
* Сторонние скрипты не должны влиять на работу фрейма Ticketland.
* Над контейнером фрейма (//tlFrameContainer//) не должно быть сторонних блоков, перекрывающих его.
* Чтобы фрейм отображался в мобильной версии, ваш сайт также должен быть адаптивным. (стили для мобильной версии фрейма Ticketland применяется с 575px ).
* Не рекомендуется открывать фрейм в нестандартных контейнерах вида: Lightbox, Fancybox, Carousel и др. Фрейм, размещенный в таких контейнерах может работать нестабильно.
* Для Москвы используется www, для других регионов есть свои поддомены. Для настройки фрейма в других городах нужно указывать в ссылке поддомен
----
=== Расширенный Iframe ===
Навигация пользователя может начинаться не со страницы площадки, а сразу со страницы мероприятия. Это подходит тем организаторам, у которых на сайте уже есть афиша со списком мероприятий. Для этого необходимо подставлять параметр //start// в скрипте. Можно жестко привязать этот параметр в коде страниц или записать необходимый url в базе вашего сайта. Для полной автоматизации можно воспользоваться нашим API, по которому можно получить информацию о мероприятиях.
**Адрес API**: [[http://backstage.ticketland.ru/frame/api/shows]]
Пример данных API:
{
"hall_id": "2244567",
"hall_name": "Зал",
"performance_id": 9999,
"performance_basis_id": 123456, // Если передан GET параметр ?extended=1
"reveal_dt": "2001-01-01 00:00:00",
"script": "",
"show_full_url": "https://www.ticketland.ru/teatry/building/show/",
"show_id": 111222,
"show_name": "Название шоу",
"start_date": "2017-03-03 19:00:00",
"total_ticket_count": 20
}
* //script// – готовый код для разворачивания фрейма Ticketland. В нем указана ссылка на схему зала мероприятия по заданной дате.
* //show_full_url// – прямая ссылка на страницу «Шоу» сайта Ticketland.ru. Подставлять в параметр start если необходима ссылка на страницу шоу со списком мероприятий по дате.
* //reveal_dt// - дата и время открытия продаж, если такой настройки для данного мероприятия в билетной системе нет, то ставится "2001-01-01 00:00:00"
* //start_date// - дата и время начала мероприятия
Пример PHP – кода для обращения к API – Ticketland:
if (!ini_get('allow_url_fopen')) {
error_log("set allow_url_fopen to true or change script to use curl" . PHP_EOL);
die();
}
$url = 'https://backstage.ticketland.ru/login';
$api = 'https://backstage.ticketland.ru/frame/api/shows';
$params = array(
'username' => '', // указать логин
'password' => '', // указать пароль
'remember' => 'True',
);
$result = file_get_contents($url, false, stream_context_create(array(
'http' => array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => http_build_query($params)
)
)));
$session;
foreach ($http_response_header as $string) {
if (preg_match('/^Set\-Cookie: .*?session=([^;]+)/', $string, $matches)) {
$session = $matches[1];
break;
}
}
$result = file_get_contents($api, false, stream_context_create(array(
'http' => array(
'method' => 'GET',
'header' => 'Cookie: session=' . $session,
)
)));
print $result . PHP_EOL;
* //username// – логин от сервиса backstage.ticketland.ru
* //password// – пароль от сервиса backstage.ticketland.ru
* //$result// – JSON – объект содержащий всю информацию из API – Ticketland
----
=== Расширенный Iframe (новая версия) ===
Теперь, используя каналы продаж, вы сможете получать заранее список мероприятий, которые еще не вышли в продажу, но дата выхода указана в системе для МДТЗК.
Ссылка для подключения к новому API: https://backstage.ticketland.ru/frame/api/shows?get_future_performances=1
Формат авторизации не изменился и остается актуальным, чтобы получать новые данные достаточно указать для существующих обращений к API параметр «?get_future_performances=1».
**Отличия в следующем:**
* В JSON-ответ будут попадать также мероприятия/фреймы, дата старта продаж по которым в будущем.
* Для мероприятий, у которых в билетной системе установлена дата старта продаж, в параметре reveal_dt будет передаваться дата и время старта продаж. Для мероприятий, где это дата не установлена, передается значение для reveal_dt по умолчанию «2001-01-01 00:00:00».
При подключении к новому API необходимо начать учитывать передаваемые в параметре reveal_dt дату и время. Параметр будет говорить, доступны ли сейчас продажи по конкретному мероприятию с установленным каналом продаж. То есть, если текущая дата и время больше указанных в reveal_dt, то продажи по мероприятию активны и клиенту можно давать страницу с виджетом.
**Возможны 2 механики:**
- Выводить на сайте мероприятия, чья дата продаж в будущем с неактивной кнопкой и информацией о старте продаж.
- Не выводить на сайте мероприятие, чья дата старта продаж еще не началась.
**Ниже возможная схеме регулировки отображения кнопок:**
{{:backstage:reguliprovka_knopok_api.png|}}
----
=== Параметры TLConf ===
* **googleAnalytics**
идентификатор счетчика, если на сайте используется несколько счетчиков google аналитики
значение по умолчанию '' (пустая строка)
* **useEcommerceGa**
использовать для передачи данных функцию ga
значение по умолчанию true
* **useEcommerceGtag**
использовать для передачи данных функцию gtag
значение по умолчанию false,
* **ecommerceCallback**
указать callback функцию в которую будет передан объект ecommerce по умолчанию function(ecommerce){
window.dataLayer = window.dataLayer || [];
window.dataLayer.push(ecommerce);
}
=== Данные для ecommerce ===
Для получения данных электронной торговли есть два способа
- подписаться на событие передаваемое из "фрейма" через механизм postMessage. Пример window.addEventListener('message', function(event){try{var json = JSON.parse(event.data)} catch(){}}, false); Документация https://developer.mozilla.org/ru/docs/Web/API/EventTarget/addEventListener
- в конфиге переопределить функцию. TLConf.ecommerceCallback = function(ecommerce){};
ecommerce это объект с данными в формате расширенной электронной торговли https://developers.google.com/tag-manager/enhanced-ecommerce
** Покупка **
{
"ecommerce":
{
"purchase":
{
"actionField":
{"id":"52346890","revenue":"600"},
"products":[
{
"id":"1353580",
"name":"Юные таланты Бразилии, 2020-10-31 19:00:00",
"brand":"Театр имени",
"category":"Юные таланты Бразилии",
"variant":"eticket",
"quantity":1,
"price":"600"
}
]
}
}
}
----
=== Фрейм в Вконтакте ===
== Для организации продаж в социальной сети вконтакте нужно ==
* Профиль социальной сети ВКонтакте
* Группа или публичная страница, где вы являетесь администратором
* доступ к номеру мобильного телефона, который привязан к вашему аккаунту ВКонтактe
- Запросите у саппорта личный iframe-hash(1) для vk.com
- Перейдите на страницу создания приложения https://vk.com/editapp?act=create
- Введите название вашего приложения, например «Купить билет»
- Выберите платформу: Встраиваемое приложение
- Нажмите кнопку "Перейти к настройке приложения" {{:backstage:vk-4-create-application.png?600|}}
- Выполните Подтверждение действия через SMS {{:backstage:vk-4-mobile-sms.png?400|}}
- В разделе 'Информация' поля 'Название', 'Описание', 'Краткое описание', 'Категория' заполнить на свое усмотрение. Иконку можете использовать свою, или нашу (если такая имеется) {{:backstage:vk-6-editapp.png?400|}}
- После этого смело нажимайте на кнопку 'Сохранить изменения' (не имеет значения под каким из блоков вы нажмете, сохранять все изменения во всех блоках)
- Далее переходим во вкладку настройки. Поле 'Состояние' выставить в 'Приложение включено и видно всем'
- Во всех блоках, где есть поле 'Url' вставить урл формата https://www.ticketland.ru/site/internalFrame/?iframe-internal=1&lite-layout=1&iframe-hash='iframe-hash(1)'в этом месте должен быть access hash фрейма, который вы запросили у саппорта&start-url=тут относительный урл на мероприятие на сайте тикетленда. Нажимаем 'Сохранить изменения' {{:backstage:vk-7-com-editapp-settings.png?400|}}
- Переходим в сообщество, где вы являетесь администратором и нажимаем на кнопку 'Управление' {{:backstage:vk-8-community-settings.png?400|}}
- Переходим во вкладку 'Приложения' {{:backstage:vk-9-community-setting-app.png?400|}} и листаем в самый вниз, где видим наше приложение. {{:backstage:vk-10-my-app.png?400|}}Добавляем его и настраиваем так, как нам нужно. {{:backstage:vk-11-my-app-settings.png?400|}} Не забываем нажать кнопку Сохранить.
После этого все готово и все работает