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

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. если выбранный Пользователем вариант бронирования не доступен, то пользователю должно показываться соответствующее информационное сообщение и должны предлагаться другие варианты, соответствующие параметрам поиска пользователя;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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