Технические требования к организации взаимодействия веб-систем Яндекса и Заказчика для предоставления Заказчиком Материалов
1. Схема взаимодействия при получении Материалов
Это старая версия документа, которая прекратила свое действие 03.06.2019 г. Действующая версия размещена по адресу: https://yandex.ru/legal/airplane_timetable_requirements
Общая схема работы:
Общая схема работы:
Пользователь запрашивает у сервиса Яндекс.Авиабилеты варианты перелетов между двумя пунктами на выбранную дату.
Сервис Яндекс.Авиабилеты отправляет запрос (GET или POST) к веб-сайту Заказчика в соответствии с форматом:
https://api.aviapartner.ru/search? [departure = <IATA либо Сирена-код пункта отправления>] &[arrival = <IATA либо Сирена-код пункта прибытия>] &[date_forward = <дата вылета «туда»>] &[date_backward = <дата вылета «обратно»>] &[class = <класс обслуживания>] &[adults = <количество взрослых пассажиров>] &[children = <количество детей>] &[infants = <количество младенцев>]
departure
Код аэропорта отправления. Указывается код IATA или код в системе «Сирена-Трэвел». arrival
Код аэропорта прибытия. Указывается код IATA или код в системе «Сирена-Трэвел». date_forward
Дата прямого вылета в формате YYYY-MM-DD. date_backward
Дата обратного вылета в формате YYYY-MM-DD. Может отсутствовать. class
Буквенное обозначение класса обслуживания. Допустимые значения:
- Первый класс — R, F, P, A.
- Бизнес-класс — J, C, D, I, Z.
- Экономический класс — W, S, Y, B, H, K, L, M, N, Q, T, V, X, E, U, G, O.
adults
Количество пассажиров старше 12 лет. children
Количество пассажиров от 2 до 12 лет (включительно). Может отсутствовать. infants
Количество детей до 2 лет (включительно). Может отсутствовать. departure
Код аэропорта отправления. Указывается код IATA или код в системе «Сирена-Трэвел». arrival
Код аэропорта прибытия. Указывается код IATA или код в системе «Сирена-Трэвел». date_forward
Дата прямого вылета в формате YYYY-MM-DD. date_backward
Дата обратного вылета в формате YYYY-MM-DD. Может отсутствовать. class
Буквенное обозначение класса обслуживания. Допустимые значения:
- Первый класс — R, F, P, A.
- Бизнес-класс — J, C, D, I, Z.
- Экономический класс — W, S, Y, B, H, K, L, M, N, Q, T, V, X, E, U, G, O.
adults
Количество пассажиров старше 12 лет. children
Количество пассажиров от 2 до 12 лет (включительно). Может отсутствовать. infants
Количество детей до 2 лет (включительно). Может отсутствовать. Пример запросаhttps://api.aviapartner.ru/search?departure=MOW&arrival=AGP&date_forward=2017-03-19&date_backward=2017-03-26&class=E&adults=2&children=0&infants=1
Веб-сайт Заказчика возвращает информацию о доступных предложениях в формате XML. В ответе содержится один или несколько объектов
variant
, в каждом указаны сведения о перелете: ссылка для покупки билета на веб-сайте Заказчика и информация о рейсах «туда» (объектroute_forward
) и «обратно» (объектroute_backward
). Перелет может состоять из нескольких рейсов.Объекты
route_forward
иroute_backward
включают объектfare
, в котором описывается тариф и нормы провоза багажа.Поле Описание Формат url
URL для перенаправления пользователя на сайт Заказчика. Обработка URL на стороне Заказчика должна происходить в соответствии с п. 3.4 RFC 2396 – Uniform Resource Identifiers (URI): Generic Syntax. Строка route_forward
Информация о рейсе «туда». Объект route_backward
Информация о рейсе «обратно». Отсутствует, если в запросе не была указана дата обратного вылета. Объект route_code
Номер рейса. Строка company_code
Код авиакомпании. Указывается код IATA или код в системе «Сирена-Трэвел». Строка company_name
Название авиакомпании. Строка departure_airport_code
Код аэропорта вылета. Указывается код IATA или код в системе «Сирена-Трэвел». Строка arrival_airport_code
Код аэропорта прибытия. Указывается код IATA или код в системе «Сирена-Трэвел». Строка departure_datetime
Дата и время отправления (местные). Строка arrival_datetime
Дата и время прибытия (местные). Строка route_time
Время в пути в минутах. Число farecode
Код тарифа. Строка tariff_adult
Тариф для пассажиров старше 12 лет. Число tariff_child
Тариф для детей от 2 до 12 лет (включительно). Отсутствует, если в запросе не было указано количество детей. Число tariff_infant
Тариф для детей до 2 лет (включительно). Отсутствует, если в запросе не было указано количество младенцев. Число fare
Информация о тарифе и багаже. Объект value
Минимальная цена в данном классе обслуживания. Число class
Буквенное обозначение класса обслуживания. Строка charter
Признак чартерного тарифа. Логический block
Признак блочного тарифа. Логический selfconnect
Признак выписки отдельных билетов для рейсов в перелете. Логический currency
Валюта. Строка luggage
Включен ли провоз сдаваемого багажа в стоимость билета. Логический pieces_of_luggage
Количество мест багажа, включенное в стоимость. Число luggage_weight
Максимальный вес включенного в стоимость багажа. Число luggage_dimensions
Максимальный размер включенного в стоимость багажа. Объект length
Длина. Число width
Ширина. Число height
Высота. Число sum
Сумма длины, ширины и высоты. Число Поле Описание Формат url
URL для перенаправления пользователя на сайт Заказчика. Обработка URL на стороне Заказчика должна происходить в соответствии с п. 3.4 RFC 2396 – Uniform Resource Identifiers (URI): Generic Syntax. Строка route_forward
Информация о рейсе «туда». Объект route_backward
Информация о рейсе «обратно». Отсутствует, если в запросе не была указана дата обратного вылета. Объект route_code
Номер рейса. Строка company_code
Код авиакомпании. Указывается код IATA или код в системе «Сирена-Трэвел». Строка company_name
Название авиакомпании. Строка departure_airport_code
Код аэропорта вылета. Указывается код IATA или код в системе «Сирена-Трэвел». Строка arrival_airport_code
Код аэропорта прибытия. Указывается код IATA или код в системе «Сирена-Трэвел». Строка departure_datetime
Дата и время отправления (местные). Строка arrival_datetime
Дата и время прибытия (местные). Строка route_time
Время в пути в минутах. Число farecode
Код тарифа. Строка tariff_adult
Тариф для пассажиров старше 12 лет. Число tariff_child
Тариф для детей от 2 до 12 лет (включительно). Отсутствует, если в запросе не было указано количество детей. Число tariff_infant
Тариф для детей до 2 лет (включительно). Отсутствует, если в запросе не было указано количество младенцев. Число fare
Информация о тарифе и багаже. Объект value
Минимальная цена в данном классе обслуживания. Число class
Буквенное обозначение класса обслуживания. Строка charter
Признак чартерного тарифа. Логический block
Признак блочного тарифа. Логический selfconnect
Признак выписки отдельных билетов для рейсов в перелете. Логический currency
Валюта. Строка luggage
Включен ли провоз сдаваемого багажа в стоимость билета. Логический pieces_of_luggage
Количество мест багажа, включенное в стоимость. Число luggage_weight
Максимальный вес включенного в стоимость багажа. Число luggage_dimensions
Максимальный размер включенного в стоимость багажа. Объект length
Длина. Число width
Ширина. Число height
Высота. Число sum
Сумма длины, ширины и высоты. Число Вся указанная выше информация о перелете обязательно должна быть включена в ответ (в соответствии с типами пассажиров в запросе).
Пример ответа{ "variant" : [ { "url": "https://api.aviapartner.ru/redirect?key=gdfkj435lkfg", { "route_forward": [ { "route_code": "0123АБ", "company_code": "BL", "company_name": "Blah-air", "departure_airport_code": "DME", "arrival_airport_code": "SVO", "departure_datetime": "2011-04-01 18:12", "arrival_datetime": "2011-04-01 21:20", "route_time = "123", "farecode": "WFLOWCS", "tariff_adult": "80.00", "tariff_child": "60.00", "tariff_infant": "3.45", "fare": { "value: "123.45", "class: "E", "charter: "false", "block": "false", "selfconnect": "false", "currency": "RUB", "luggage: "true", "pieces_of_luggage: 1, "luggage_weight": 20, "luggage_dimensions: { "length: 90, "width: 28, "height: 40, "sum: 158 } } }, {...}, {...} ] }, { "route_backward": [{...}, {...}, {...}] }, { } }, {...}, {...}, ... ] }
Предложения Заказчика, поступившие после 20 секунд ожидания либо после того как пользователь вручную прервал процесс ожидания, не отображаются в списке вариантов перелетов для этого пользователя. Предложения, которые поступили в период от 20 секунд до 2 минут, сохраняются в кэше и при повторном поиске отображаются без нового запроса к Заказчику (пока не истечет время актуальности кэша).
Заказчики, использующие систему «Сирена-Трэвел», должны отвечать на запросы с внутренними кодами, которые используются в этой системе.
Заказчик обязуется использовать защищенный протокол передачи данных https на своем сайте при переходе с сервиса Яндекс.Авиабилеты.
Заказчик обязуется информировать Яндекс о переходе на новый протокол предоставления информации не менее чем за тридцать календарных дней до начала перехода.
Отчет о количестве и общей стоимости приобретенных Пользователями авиабилетов в результате их перехода с веб-страниц сервиса Яндекс.Авиабилеты, который предоставляется Заказчиком согласно пункту 3.3.9. Договора, должен передаваться в форматах xsl/xslx, либо csv.
Для ограничения количества запросов можно задать допустимые региональные направления. Для этого на указанный в договоре адрес пришлите ссылку на csv-файл с парами кодов городов/аэропортов (по одной в каждой строке с разделителем «;»). Допускается использовать как коды IATA, так и коды системы «Сирена-Трэвел». Каждая пара разрешает опрос в обе стороны.
Файл должен быть сохранен в кодировке UTF-8.
- ATH;CMB
- ATH;DXB
- GBB;GOI
- GPA;HAV
- HER;KLX
- KVD;LCA
- LIS;LLK
- LWN;MAD
- MLE;NAP
- СХТ;RHO
- СХТ;СПТ
Пример задания допустимых направленийДанные выгружаются раз в сутки.
В url страницы партнера при переходе с сервиса Авиабилеты Яндекс передает get-параметр
marker
, который представляет из себя уникальную строку длиной до 200 символов. Для передачи Яндексу информации о бронировании необходимо использовать один из следующих вариантов:1. При совершении бронирования/покупки/отмены билета необходимо делать запрос
https://avia.yandex.ru/order/pixel/[marker]/[status]
к сервису Яндекс.Авиабилеты, где:marker
Значение переданного Яндекс.Авиабилетами get-параметра при переходе к партнеру
status
Значение, которое выставляется в зависимости от типа события. Допустимые значения:
Booking
Paid
Cancel
marker
Значение переданного Яндекс.Авиабилетами get-параметра при переходе к партнеру
status
Значение, которое выставляется в зависимости от типа события. Допустимые значения:
Booking
Paid
Cancel
Возможные способы запроса к Яндекс.Авиабилетам:
- 1. CORS запрос из javascript в момент завершения события;
- 2. Вставка html-кода на страницу после покупки пользователя
<img src="https://avia.yandex.ru/order/pixel/[marker]/[status]">
; - 3. Запрос с сервера партнера после завершения события.
Любой из этих запросов передаст Яндекс.Авиабилетам информацию о том, что пользователь с переданным параметром
marker
забронировал, купил или отменил билет на сайте партнера.2. Партнер обязан предоставить отчет, который содержит следующую информацию о бронированиях, совершенных пользователями после перехода с сервисов Яндекса:
- id заказа (PNR, любой другой уникальный идентификатор бронирования);
- Дата создания заказа;
- Статус заказа на момент формирования отчета (booked, paid, cancelled);
- Стоимость заказа c указанием валюты;
- Информация по перелете: откуда, куда, тип билета (туда или туда-обратно);
- Маркер.
Отчет должен быть предоставлен в одном из следующих форматов:
- Файл в формате XML/XLS/CSV/JSON, выложенный в закрытый раздел сайта партнера, который автоматически обновляется не реже, чем раз в час и содержит данные за последние 62 дня.
- Через API. Детали реализации согласуются с Яндекс.Авиабилетами по электронной почте.
2. Схема взаимодействия при переходе к продаже
Переход с сервиса Яндекс.Авиабилеты на веб-сайт Заказчика осуществляется следующим образом:
Пользователь выбирает предложение и нажимает на ссылку (стоимость авиационного билета, указанную в валюте, переданной Заказчиком), на сервисе Яндекс. Авиабилеты.
Пользователь перенаправляется на веб-сайт Заказчика по адресу, полученному в ответе в поле url блока variant для данного предложения.
Пользователь на веб-сайте Заказчика начинает процесс бронирования:
на веб-сайте Заказчика должна осуществляться автоматическая проверка возможности забронировать предложение, которое пользователь выбрал на сервисе Яндекс.Авиабилеты (проверка должна осуществляться перед тем, как пользователь на веб-сайте Заказчика начинает процесс бронирования);
если выбранный Пользователем вариант бронирования не доступен, то пользователю должно показываться соответствующее информационное сообщение и должны предлагаться другие варианты, соответствующие параметрам запроса пользователя;
Url для перенаправления пользователя на сайт партнера должен сохранять работоспособность согласно логике, описанной в пункте 3.2 в течение 30 часов.
если выбранный Пользователем вариант бронирования доступен, то должна отображаться страница с подробной информацией о выбранном варианте бронирования: аэропорты и города вылета и прилета, даты, длительность полёта , длительность и города пересадок при их наличии, информация об услугах включенных в тариф, количество и состав пассажиров, стоимость и предложение ввести данные о пассажирах для бронирования. На странице также должны соблюдаться следующие условия:
Стоимость авиационного билета при оплате банковской картой в сети Интернет, отображаемая на странице, должна полностью соответствовать стоимости, предоставленной Заказчиком в Материалах, а также располагаться на видном месте и визуально отделена от других возможных предлагаемых Заказчиком вариантов.
В описании выбранного варианта бронирования должна содержаться исчерпывающая информация о применимых к этому билету нормах провоза багажа и ручной клади. Эти данные должны быть доступны на этой же странице и не могут находиться в скрытых по умолчанию блоках.
Если на перелет будет выписано более одного билета, на странице бронирования необходимо указать следующую информацию:
Количество билетов которые будут выписаны при покупке этого варианта;
При отмене или задержке одного из рейсов в таком перелёте билеты на другие рейсы могут не подлежать замене;
На пересадке багаж должен быть получен самостоятельно и при необходимости зарегистрирован заново.
Надпись должна находиться в пределах видимости, без необходимости дополнительного клика.
- В течение всего процесса бронирования цена, показанная при переходе с Яндекс.Авиабилетов, должна быть явно выделена, все дополнительные услуги должны быть в явном виде отключены. Также запрещается использовать всплывающие окна, отдельные страницы со списком услуг и аналогичные инструменты, прерывающие процесс бронирования билета.
В случае если Пользователь на веб-сайте Заказчика начинает процесс бронирования и по выбранному варианту требуется подтверждение от Заказчика, должны выполняться следующие требования:
Для авиационных билетов, требующих ручного подтверждения должен осуществляться автоматический ответ с указанием сроков окончательного подтверждения.
Срок окончательного ответа о наличии выбранного предложения и его стоимости должен составлять не более 1 рабочего дня.
Пользователь должен быть проинформирован в случае, если предложение не подтверждается.
Заказчик обязуется не передавать материалы в ответ на запрос сервис Яндекс.Авиабилеты в следующих случаях:
если параметры, описанные в настоящем документе, при получении Материалов, отображается на веб-сайте Заказчика не полностью;
если веб-сайт Заказчика по адресу, полученному в ответе согласно п. 2. Схемы взаимодействия при переходе к продаже не загружается и выдает сообщения об ошибке;
при любых технических и иных проблемах, не позволяющих Пользователю перейти на страницу с подробной информации о выбранном варианте (согласно п.3.3 настоящего документа) и завершить процесс покупки на веб-сайте Заказчика.
В случае обнаружения технических проблем Заказчик обязан немедленно известить представителей сервиса Яндекс.Авиабилеты по почте avia-info@yandex-team.ru. При поступлении запроса от Яндекс.Авиабилетов Заказчик обязуется в течение трех часов ответить на обращение и в кратчайшие сроки предоставить всю техническую информацию, необходимую для диагностики и решения проблем.
Далее процесс покупки должен продолжаться согласно технологии, принятой на веб-сайте Заказчика.
Дата публикации 26.10.2018 г.
Дата вступления в силу: 26.10.2018 г.
Предыдущая версия документа: https://yandex.ru/legal/airplane_timetable_requirements/21082018
Предыдущая версия документа: https://yandex.ru/legal/airplane_timetable_requirements/24072018
Предыдущая версия документа: https://yandex.ru/legal/airplane_timetable_requirements/22062018
Предыдущая версия документа: https://yandex.ru/legal/airplane_timetable_requirements/21072017
Предыдущая версия документа: https://yandex.ru/legal/airplane_timetable_requirements/01032017
Предыдущая версия документа: https://yandex.ru/legal/airplane_timetable_requirements/11112016
Предыдущая версия документа: https://yandex.ru/legal/airplane_timetable_requirements/06102016
Предыдущая версия документа: https://yandex.ru/legal/airplane_timetable_requirements/25072016
Предыдущая версия документа: https://yandex.ru/legal/airplane_timetable_requirements/05042016
Предыдущая версия документа: https://yandex.ru/legal/airplane_timetable_requirements/25012016
Предыдущая версия документа: https://yandex.ru/legal/airplane_timetable_requirements/15122015
Предыдущая версия документа: https://yandex.ru/legal/airplane_timetable_requirements/25052015