Технические требования к организации взаимодействия веб-систем Яндекса и Заказчика для предоставления Заказчиком Материалов

1. Схема взаимодействия при получении Материалов

Общая схема работы:

  1. Пользователь запрашивает у сервиса Яндекс.Авиабилеты варианты перелетов между двумя пунктами на выбранную дату.

  2. Сервис Яндекс.Авиабилеты отправляет запрос (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 лет (включительно). Может отсутствовать.
    Пример запроса
    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
  3. Веб-сайт Заказчика возвращает информацию о доступных предложениях в формате XML. В ответе содержится один или несколько объектов variant, в каждом указаны сведения о перелете: ссылка для покупки билета на веб-сайте Заказчика и информация о рейсах «туда» (объект route_forward) и «обратно» (объект route_backward). Перелет может состоять из нескольких рейсов.

    Объекты route_forward и route_backward включают объект fare, в котором описывается тариф и нормы провоза багажа.

    ПолеОписаниеФормат
    urlURL для перенаправления пользователя на сайт Заказчика. Обработка 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": [{...},
                      {...}, {...}] }, { } }, {...}, {...}, ... ] }
  4. Предложения Заказчика, поступившие после 20 секунд ожидания либо после того как пользователь вручную прервал процесс ожидания, не отображаются в списке вариантов перелетов для этого пользователя. Предложения, которые поступили в период от 20 секунд до 2 минут, сохраняются в кэше и при повторном поиске отображаются без нового запроса к Заказчику (пока не истечет время актуальности кэша).

  5. Заказчики, использующие систему «Сирена-Трэвел», должны отвечать на запросы с внутренними кодами, которые используются в этой системе.

  6. Заказчик обязуется использовать защищенный протокол передачи данных https на своем сайте при переходе с сервиса Яндекс.Авиабилеты.

  7. Заказчик обязуется информировать Яндекс о переходе на новый протокол предоставления информации не менее чем за тридцать календарных дней до начала перехода.

  8. Отчет о количестве и общей стоимости приобретенных Пользователями авиабилетов в результате их перехода с веб-страниц сервиса Яндекс.Авиабилеты, который предоставляется Заказчиком согласно пункту 3.3.9. Договора, должен передаваться в форматах xsl/xslx, либо csv.

  9. Для ограничения количества запросов можно задать допустимые региональные направления. Для этого на указанный в договоре адрес пришлите ссылку на csv-файл с парами кодов городов/аэропортов (по одной в каждой строке с разделителем «;»). Допускается использовать как коды IATA, так и коды системы «Сирена-Трэвел». Каждая пара разрешает опрос в обе стороны.

    Файл должен быть сохранен в кодировке UTF-8.

    Пример задания допустимых направлений
    • ATH;CMB
    • ATH;DXB
    • GBB;GOI
    • GPA;HAV
    • HER;KLX
    • KVD;LCA
    • LIS;LLK
    • LWN;MAD
    • MLE;NAP
    • СХТ;RHO
    • СХТ;СПТ

    Скачать пример файла

    Данные выгружаются раз в сутки.

  10. В url страницы партнера при переходе с сервиса Авиабилеты Яндекс передает get-параметр marker, который представляет из себя уникальную строку длиной до 200 символов.

    При совершении бронирования/покупки/отмены билета необходимо делать запрос https://avia.yandex.ru/order/pixel/[marker]/[status] к сервису Яндекс.Авиабилеты, где:

    marker

    Значение переданного Яндекс.Авиабилетами get-параметра при переходе к партнеру

    status

    Значение, которое выставляется в зависимости от типа события. Допустимые значения:

    • Booking

    • Paid

    • Cancel

    Возможные способы запроса к Яндекс.Авиабилетам:

    • 1. CORS запрос из javascript в момент завершения события;
    • 2. Вставка html-кода на страницу после покупки пользователя <img src="https://avia.yandex.ru/order/pixel/[marker]/[status]">;
    • 3. Запрос с сервера партнера после завершения события.

    Любой из этих запросов передаст Яндекс.Авиабилетам информацию о том, что пользователь с переданным параметром marker забронировал, купил или отменил билет на сайте партнера.

2. Схема взаимодействия при переходе к продаже

Переход с сервиса Яндекс.Авиабилеты на веб-сайт Заказчика осуществляется следующим образом:

  1. Пользователь выбирает предложение и нажимает на ссылку (стоимость авиационного билета, указанную в валюте, переданной Заказчиком), на сервисе Яндекс. Авиабилеты.

  2. Пользователь перенаправляется на веб-сайт Заказчика по адресу, полученному в ответе в поле url блока variant для данного предложения.

  3. Пользователь на веб-сайте Заказчика начинает процесс бронирования:

    1. на веб-сайте Заказчика должна осуществляться автоматическая проверка возможности забронировать предложение, которое пользователь выбрал на сервисе Яндекс.Авиабилеты (проверка должна осуществляться перед тем, как пользователь на веб-сайте Заказчика начинает процесс бронирования);

    2. если выбранный Пользователем вариант бронирования не доступен, то пользователю должно показываться соответствующее информационное сообщение и должны предлагаться другие варианты, соответствующие параметрам запроса пользователя;

      1. Url для перенаправления пользователя на сайт партнера должен сохранять работоспособность согласно логике, описанной в пункте 3.2 в течение 30 часов.

    3. если выбранный Пользователем вариант бронирования доступен, то должна отображаться страница с подробной информацией о выбранном варианте бронирования: аэропорты и города вылета и прилета, даты, длительность полёта , длительность и города пересадок при их наличии, информация об услугах включенных в тариф, количество и состав пассажиров, стоимость и предложение ввести данные о пассажирах для бронирования. На странице также должны соблюдаться следующие условия:

      • Стоимость авиационного билета при оплате банковской картой в сети Интернет, отображаемая на странице, должна полностью соответствовать стоимости, предоставленной Заказчиком в Материалах, а также располагаться на видном месте и визуально отделена от других возможных предлагаемых Заказчиком вариантов.

      • В описании выбранного варианта бронирования должна содержаться исчерпывающая информация о применимых к этому билету нормах провоза багажа и ручной клади. Эти данные должны быть доступны на этой же странице и не могут находиться в скрытых по умолчанию блоках.

      Если на перелет будет выписано более одного билета, на странице бронирования необходимо указать следующую информацию:

      • Количество билетов которые будут выписаны при покупке этого варианта;

      • При отмене или задержке одного из рейсов в таком перелёте билеты на другие рейсы могут не подлежать замене;

      • На пересадке багаж должен быть получен самостоятельно и при необходимости зарегистрирован заново.

      Надпись должна находиться в пределах видимости, без необходимости дополнительного клика.

    4. В течение всего процесса бронирования цена, показанная при переходе с Яндекс.Авиабилетов, должна быть явно выделена, все дополнительные услуги должны быть в явном виде отключены. Также запрещается использовать всплывающие окна, отдельные страницы со списком услуг и аналогичные инструменты, прерывающие процесс бронирования билета.
  4. В случае если Пользователь на веб-сайте Заказчика начинает процесс бронирования и по выбранному варианту требуется подтверждение от Заказчика, должны выполняться следующие требования:

    • Для авиационных билетов, требующих ручного подтверждения должен осуществляться автоматический ответ с указанием сроков окончательного подтверждения.

    • Срок окончательного ответа о наличии выбранного предложения и его стоимости должен составлять не более 1 рабочего дня.

    • Пользователь должен быть проинформирован в случае, если предложение не подтверждается.

  5. Заказчик обязуется не передавать материалы в ответ на запрос сервис Яндекс.Авиабилеты в следующих случаях:

    1. если параметры, описанные в настоящем документе, при получении Материалов, отображается на веб-сайте Заказчика не полностью;

    2. если веб-сайт Заказчика по адресу, полученному в ответе согласно п. 2. Схемы взаимодействия при переходе к продаже не загружается и выдает сообщения об ошибке;

    3. при любых технических и иных проблемах, не позволяющих Пользователю перейти на страницу с подробной информации о выбранном варианте (согласно п.3.3 настоящего документа) и завершить процесс покупки на веб-сайте Заказчика.

  6. В случае обнаружения технических проблем Заказчик обязан немедленно известить представителей сервиса Яндекс.Авиабилеты по почте avia-info@yandex-team.ru. При поступлении запроса от Яндекс.Авиабилетов Заказчик обязуется в течение трех часов ответить на обращение и в кратчайшие сроки предоставить всю техническую информацию, необходимую для диагностики и решения проблем.

  7. Далее процесс покупки должен продолжаться согласно технологии, принятой на веб-сайте Заказчика.

Дата публикации 21.08.2018 г.

Дата вступления в силу: 21.08.2018 г.

Предыдущая версия документа: 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/