Примеры использования

В этом руководстве описано, как настроить Google Pay API for Passes, чтобы взаимодействовать с пользователями посадочных талонов. Мы расскажем подробнее о следующих функциях:

.

Обновление информации в билетах

Иногда информация, указанная в билете, может меняться после его сохранения. Обновить эти сведения для пользователей можно с помощью REST API. Если изменения затрагивают только класс билета, можно также использовать Google Pay Merchant Center. Обновление информации в билете – один из важных аспектов взаимодействия с клиентом.

Чтобы обновить данные всех посадочных талонов конкретного рейса (например, запланированное время вылета), необходимо только изменить с помощью метода update или patch класс FlightClass или использовать Google Pay Merchant Center. Google перенесет изменения во все объекты FlightObject, связанные с обновленным классом FlightClass. Это относится ко всем полям, определенным на уровне FlightClass.

Чтобы обновить отдельный билет (например, указать другой номер места), нужно изменить с помощью метода update или patch только один объект FlightObject. Это относится ко всем полям, определенным на уровне FlightObject.

Обычно мы не знаем, когда происходят изменения или когда отправлять запрос update или patch. В таких случаях стоит периодически выполнять запросы update или patch для каждого класса и объекта. Посмотреть все классы в аккаунте отдельного продавца можно с помощью метода FlightClass list. Чтобы посмотреть все объекты определенного класса, вызовите метод FlightObject list.

Из каких источников поступают новые данные о рейсе

Если время, заданное значением class.localScheduledDepartureDateTime, приходится на сутки перед исправлением или на двое суток после него, пользователи увидят уведомление о статусе рейса. В этом случае в Google Pay будут показываться сведения, указанные либо в сервисе Google Авиабилеты, либо на билете. Выбор источника зависит от следующих условий:

  • Информация из Google Авиабилетов используется, если не задано значение class.localEstimatedOrActualDepartureDateTime. Значение class.flightStatus при этом не учитывается.

    Например, если рейс задерживается, то на главной странице Google Pay будет отображаться новое время вылета. Ознакомиться с этой информацией также можно на вкладке "Карты".

  • Если вы указали значение class.localEstimatedOrActualDepartureDateTime, но опустили значение class.flightStatus, то информация о задержке рейса будет определена исходя из указанного вами времени. Статус рейса при этом указывается в соответствии со следующими условиями:
    • Если class.localEstimatedOrActualDepartureDateTime позже class.localScheduledDepartureDateTime, пользователи увидят уведомление о задержке рейса.
    • Если class.localEstimatedOrActualDepartureDateTime не позже class.localScheduledDepartureDateTime, уведомление об изменении статуса не появится. Вместо него будет отображаться информация о рейсе.

Если вы не хотите, чтобы сервис "Google Авиабилеты" использовался в качестве источника информации о рейсах, необходимо задать значения flightStatus, localScheduledDepartureDateTime и localEstimatedOrActualDepartureDateTime для FlightClass. Тогда будут отображаться только сведения, указанные вами. Также информация в этом сервисе не учитывается, если для FlightClass вы указываете код аэропорта в соответствии с системой ICAO, а не IATA.

При любых изменениях пользователи получают push-уведомления. Подробнее об этом рассказывается в разделе Уведомления об изменении информации о рейсе.

Сохранение полета с пересадками

Часто авиаперелет включает несколько пересадок. Для таких перелетов авиакомпании предоставляют несколько посадочных талонов (по одному для каждой пересадки). В инструменте Google Pay API for Passes действует тот же принцип: один FlightObject на каждую пересадку.

Например, для двух пассажиров, летящих из Сан-Франциско в Тайвань с пересадкой в Лос-Анджелесе, нужны две структуры FlightClass и четыре объекта FlightObject.

  FlightClassFlightClass A (SFO – LAX: авиакомпания, номер рейса, время отправления) FlightClassFlightClass B (LAX – TPE: авиакомпания, номер рейса, время отправления)
Пассажир Q FlightObject: id_01 FlightObject: id_02
Пассажир Z FlightObject: id_03 FlightObject: id_04

Эти поля соответствуют физическим посадочным талонам. У пассажиров Q и Z было бы по два бумажных посадочных талона.

Создание кнопки для сохранения нескольких билетов

Чтобы пользователи могли сохранить в приложении сразу несколько билетов, можно добавить ссылку или кнопку Сохранить в Google Pay. Это можно сделать с помощью веб-токена JSON (JWT).

Веб-токен JWT должен быть представлен в одном из двух форматов:

  • с использованием заранее добавленных вами классов и объектов;
  • с использованием ресурсов классов и объектов, которые полностью в самом веб-токене JWT.

Посмотреть, как создать кнопку для сохранения нескольких талонов, можно в этой статье.

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

Группировка нескольких посадочных талонов

Некоторые функции работают по-разному в зависимости от того, применяются ли они к группе или к отдельным объектам. Например, дополнительная настройка требуется для уведомлений о статусе и для упорядочивания нескольких сохраненных билетов в пользовательском интерфейсе.

Объекты FlightObject считаются группой, только когда у них совпадают все перечисленные ниже свойства.

  • Идентификатор Issuer ID (из сервиса Google Pay API for Passes Merchant Center)
  • class.flightHeader.carrier.carrierIataCode
  • class.flightHeader.flightNumber
  • class.localScheduledDepartureDateTime
  • object.reservationInfo.confirmationCode

Если два объекта FlightObject отличаются друг от друга по какому-либо из этих свойств, они не считаются группой.

Уведомление о предстоящем перелете

Google Pay может отправить уведомление пользователю за три часа до перелета. Время перелета определяется значением class.localScheduledDepartureDateTime.

Чтобы получать такие уведомления, пользователю необходимо зайти в раздел Настройки > Уведомления и нажать Включить уведомления о картах и билетах.

Уведомления будут показываться на панели уведомлений и на заблокированном экране (если пользователь разрешил это).

Все уведомления имеют следующий формат, изменить который нельзя:

    Boarding pass for your flight to class.destination.airportIataCode
    Expand for more options
    

Если нажать на такое уведомление, устройство будет разблокировано, откроется приложение Google Pay и на экране появится посадочный талон.

Если у пользователя сохранены билеты на разные мероприятия, то откроется билет на ближайшее. Если несколько сохраненных билетов объединены в группу, как описано в разделе Группировка нескольких посадочных талонов, то после нажатия на уведомление появится только один из них. Чтобы увидеть другие билеты, нужно провести по экрану влево или вправо.

Уведомление исчезнет автоматически, но не сразу после открытия, а через 60 минут после времени, указанного в class.localScheduledDepartureDateTime.

Уведомления об изменении информации о рейсе

Если у пользователя сохранен хотя бы один посадочный талон, он может получать push-уведомления об изменении информации о рейсе. Они приходят, если соблюдаются определенные условия.

Терминал и выход на посадку

Если вы измените значение в поле class.origin.terminal или class.origin.gate, то пользователь получит уведомление об этом при соблюдении следующего условия:

  • Осталось меньше трех часов до запланированного времени вылета class.localScheduledDepartureDateTime.

Уведомление будет выглядеть следующим образом: "Выход на посадку на рейс авиакомпании "Sample Airlines" поменялся на A1". Изменить этот формат нельзя.

Время посадки и время вылета

Если вы изменили значение в поле class.localBoardingDateTime или class.localEstimatedOrActualDepartureDateTime, то пользователь получит уведомление об этом при соблюдении следующих условий:

  • Осталось меньше 24 часов до запланированного времени вылета class.localScheduledDepartureDateTime.
  • Время посадки меняется на 10 или более минут.

Уведомление будет выглядеть следующим образом: "Авиакомпания "Sample Airlines" изменила время посадки на ваш рейс. Новое время: 18:00". Изменить этот формат нельзя.

Действия с билетами с истекшим сроком действия

На вкладке "Карты" в приложении Google Pay есть раздел "Проездные с истекшим сроком действия". В нем собраны билеты и предложения разных типов, которые были помещены в архив или стали неактивны. Билеты перемещаются в этот раздел, если верно хотя бы одно из следующих условий:

  • Прошло более 24 часов с момента истечения срока, указанного в параметре class.localScheduledDepartureDateTime или class.localEstimatedOrActualDepartureDateTime. Билет перемещается в раздел "Проездные с истекшим сроком действия" в течение 24—48 часов с момента истечения срока, указанного в class.localScheduledDepartureDateTime или class.localEstimatedOrActualDepartureDateTime.
  • Истек срок, указанный в параметре object.validTimeInterval.end.date. Билет перемещается в раздел "Проездные с истекшим сроком действия" в течение 24 часов после даты object.validTimeInterval.end.date.
  • В поле object.state указано одно из следующих значений: Expired, Inactive или Completed.

Чтобы создать ссылку на сохраненный билет, нужно добавить в нее идентификатор objectId.

Используйте этот шаблон:

    https://pay.google.com/gp/v/object/{<issuerId>}.{<ObjectId>}
    

Билет можно будет открыть в приложении Google Pay и в веб-браузере.