Это старая версия документа!


Ticketland iframe


Что такое Iframe

Iframe - специальная выделенная область на странице вашего сайта, в которой отображается часть сайта ticketland.ru. Благодаря этому пользователи могут выбрать и оплатить билет в нашей системе, оставаясь на вашем сайте. Также можно использовать отдельные страницы (например, схема зала и корзина) в случае интеграции в ваш сайт.

Ticketland предоставляет скрипт, автоматически отображающий iframe, настроенный на заданную страницу сайта www.ticketland.ru. Навигация и покупка билетов будет происходить в рамках iframe без взаимодействия со страницей, в которой он встроен.


Регистрация Iframe

В backstage.ticketland.ru вы получите доступ к странице http://backstage.ticketland.ru/frame#/ (на начальной странице кнопка «Настроить продажу билетов на сайте театра»)

Домен указывается согласно используемому протоколу ( http/https ), на главную страницу, например https://site.ru

На той же странице генерируется скрипт для вставки на страницу вашего сайта. Пример такого скрипта:

<div id="tlFrameContainer"></div>
            <script type="text/javascript"></script>
            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);
            </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,
            "reveal_dt": "2001-01-01 00:00:00",
            "script": "<script> var TLConf = {
                accessHash: '1111112223334444555',
                start: '/teatry/building/show/20170303_1900-11112222/',
                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); 
        </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

Параметры TLConf

  • googleAnalytics

идентификатор счетчика, если на сайте используется несколько счетчиков google аналитики значение по умолчанию '' (пустая строка)

  • useEcommerceGa

использовать для передачи данных функцию ga значение по умолчанию true

  • useEcommerceGtag

использовать для передачи данных функцию gtag значение по умолчанию false,

  • ecommerceCallback

указать callback функцию в которую будет передан объект ecommerce по умолчанию function(ecommerce){ window.dataLayer = window.dataLayer || []; window.dataLayer.push(ecommerce); }

Данные для ecommerce

Для получения данных электронной торговли есть два способа

  1. подписаться на событие передаваемое из «фрейма» через механизм 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
  2. в конфиге переопределить функцию.
    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"
            }
          ]
        }
    }
}

Фрейм в Вконтакте

Фрейм в социальной сети vk

Для организации продаж в социальной сети вконтакте нужно
  • Профиль социальной сети ВКонтакте
  • Группа или публичная страница, где вы являетесь администратором
  • доступ к номеру мобильного телефона, который привязан к вашему аккаунту ВКонтактe
  1. Перейдите на страницу создания приложения https://vk.com/editapp?act=create
    1. Введите название вашего приложения, например «Купить билет»
    2. Выберите платформу: Встраиваемое приложение
    3. Нажмите кнопку «Перейти к настройке приложения»
  2. Выполните Подтверждение действия через SMS
  3. В разделе 'Информация' поля 'Название', 'Описание', 'Краткое описание', 'Категория' заполнить на свое усмотрение. Иконку можете использовать свою, или нашу (если такая имеется)
  4. После этого смело нажимайте на кнопку 'Сохранить изменения' (не имеет значения под каким из блоков вы нажмете, сохранять все изменения во всех блоках)
  5. Далее переходим во вкладку настройки. Поле 'Состояние' выставить в 'Приложение включено и видно всем'
  6. Во всех блоках, где есть поле 'Url' вставить урл формата https://www.ticketland.ru/site/internalFrame/?iframe-internal=1&lite-layout=1&iframe-hash=в этом месте должен быть access hash фрейма&start-url=тут относительный урл на мероприятие на сайте тикетленда. Нажимаем 'Сохранить изменения'
  7. Переходим в сообщество, где вы являетесь администратором и нажимаем на кнопку 'Управление'
  8. Переходим во вкладку 'Приложения' и листаем в самый вниз, где видим наше приложение. Добавляем его и настраиваем так, как нам нужно. Не забываем нажать кнопку Сохранить.

После этого все готово и все работает

Фрейм в Вконтакте


backstage/6-nastroit-prodazhu-biletov-na-sayte-teatra.1601471640.txt.gz · Последнее изменение: 2020/09/30 16:14 — d.shiligina