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

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

.

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

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

Чтобы обновить данные во всех билетах (например, заменить логотип), необходимо изменить только TransitClass. Для этого используйте метод update или patch. Также можно воспользоваться Google Pay Merchant Center. Google перенесет изменения во все объекты TransitObject, связанные с обновленным TransitClass. Это относится ко всем полям, определенным на уровне TransitClass.

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

Кроме того, не всегда получается предугадать, когда произойдут изменения или когда придется отправить запрос update или patch. В этом случае стоит периодически выполнять запросы update или patch для каждого класса и объекта. Просмотреть все классы в аккаунте отдельного продавца можно с помощью метода TransitClass list. Чтобы просмотреть все объекты определенного класса, вызовите метод TransitObject list.

Определение поездок с пересадками

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

Использовать по одному объекту TransitObject на каждую пересадку очень просто. Для этого задайте object.ticketLeg. Вы можете создавать билет для каждой пересадки в поездке. Или же можно сгруппировать проездные и обновлять в них данные одновременно. О том, как это сделать, читайте в этой статье. Последний способ для поездок с несколькими пересадками будет предпочтительнее.

Следует использовать объект TransitObject на маршрут, только если такой билет будет приниматься во всех пересадочных пунктах, а информация в нем, например QR-код, совпадает для всех пересадок. Чтобы обозначить набор промежуточных пунктов, используйте список object.ticketLegs[]. Обратите внимание, что тогда в билете будут отображаться только начальная и конечная точки маршрута. Чтобы посмотреть все пересадки, нужно будет открыть подробные сведения о поездке.

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

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

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

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

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

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

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

Объекты TransitObject считаются группой, только если у них совпадают свойства object.classId, object.ticketLeg.departureDateTime, а также одно из представленных ниже свойств (упорядочены по степени важности):

  1. object.tripId
  2. object.purchaseDetails.confirmationCode

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

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

Уведомления о предстоящих поездках

Google Pay может отправить уведомление пользователю за один час до поездки. Время поездки указывается в object.ticketLeg.departureDateTime или в первом элементе object.ticketLegs[].departureDateTime.

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

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

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

    Ticket fot your upcoming trip to object.ticketLeg.destinationName
    Expand for more options
    

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

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

Уведомление исчезнет автоматически, но не сразу после открытия, а через 60 минут после времени, указанного в object.ticketLeg.departureDateTime или в первом элементе object.ticketLegs[].departureDateTime.

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

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

  • Прошло более 24 часов с момент истечения срока, указанного в object.ticketLeg.arrivalDateTime или в последнем элементе object.ticketLegs[].arrivalDateTime. Билет перемещается в раздел "Проездные с истекшим сроком действия" в течение 24–48 часов после даты, указанной в object.ticketLeg.arrivalDateTime или в последнем элементе object.ticketLegs[].arrivalDateTime.
  • Истек срок, указанный в параметре 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 и в веб-браузере.