Чтобы посмотреть примеры использования, выберите категорию.
С Google Pay API for Passes вы можете использовать проездные билеты, например на автобусы, паромы и поезда, чтобы взаимодействовать с пользователями. Из этого руководства вы узнаете, как это делать.
Чтобы клиенты могли сохранять проездные билеты, используйте метод запроса POST с JWT или ссылки, содержащие JWT-сообщения. В этих случаях классы и объекты добавляются заранее.
Классы TransitClasses и объекты TransitObjects
Как и в случае с другими категориями карт Google Pay API for Passes, информация о проездных билетах сохраняется в двух структурах данных: TransitClass
и TransitObject
. В этом руководстве описано, как настроить их для проездных билетов.
TransitClass
Класс TransitClass
определяет шаблон, в соответствии с которым показываются объекты, связанные с этим классом. В зависимости от шаблона элементы проездного билета располагаются по-разному. Шаблоном также задается логотип и название транспортной кампании, которые используются в объектах.
Если для двух типов проездных билетов нужно использовать разные данные, можно создать два класса TransitClasses
. Например, один класс TransitClass
будет предназначен для одноразовых билетов, а другой класс TransitClass
– для сезонных проездных.
TransitObject
В объекте TransitObject
содержатся данные о поездке, транспортной компании и пассажирах. Например, в TransitObject
может быть указано место и время отправления, пункт прибытия, номер или название транспортной компании, имя пассажира, номер места и другие данные. Иногда некоторые значения повторяются в разных объектах TransitObjects.
.
Информация, содержащаяся в TransitObject
, сохраняется в приложении Google Pay у пассажира.
Поддерживаемые страны
Список стран, в которых поддерживается приложение Google Pay, приведен в Справочном центре. Рекомендуем размещать кнопку Сохранить в Google Pay только на странице покупки билета.
Примеры использования
Здесь описаны примеры использования, применимые только к проездным билетам.
- Обновление информации в билетах
- Определение поездок с пересадками
- Создание кнопки для сохранения нескольких билетов
- Группировка проездных билетов
- Настройка уведомлений о ближайших поездках
- Действия с билетами, у которых истек срок действия
- Создание ссылки на сохраненный билет
- Добавление к сохраненному билету ссылки на стороннее приложение или сайт
Обновление информации в билетах
Иногда необходимо изменить сведения в проездном билете уже после его сохранения пользователем. Сделать это можно с помощью REST API. Если изменения затрагивают только классы, можно также использовать Google Pay Merchant Center. Обновление информации в билете – один из важных аспектов взаимодействия с клиентом.
Чтобы обновить данные для всех проездных билетов (например, заменить логотип), необходимо только изменить с помощью метода update
или patch
класс TransitClass
или использовать Google Pay Merchant Center.
Google перенесет изменения во все объекты TransitObject
, связанные с обновленным классом TransitClass
. Это относится ко всем полям, определенным на уровне TransitClass
.
Чтобы обновить отдельный билет (например, изменить время отправления), нужно изменить с помощью метода update
или patch
только один объект TransitObject
. Это относится ко всем полям, определенным на уровне TransitObject
.
Кроме того, не всегда получается предугадать, когда произойдут изменения или когда придется отправить запрос update
или patch
. В этом случае стоит периодически выполнять запросы update
или patch
для каждого класса и объекта. Посмотреть все классы в аккаунте отдельного продавца можно с помощью метода TransitClass
для list
.
Чтобы посмотреть все объекты определенного класса, вызовите метод list
для TransitObject
.
Определение поездок с пересадками
Часто поездка включает множество пересадок.
Для таких путешествий компании-перевозчики предоставляют несколько билетов (по одному для каждого отрезка пути) или единый билет. В инструменте 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
, а также значение одного из следующих свойств (упорядочены по степени важности):
object.tripId
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 и в браузере.
Добавление к сохраненному билету ссылки на стороннее приложение или сайт
Вы можете добавить ссылку на свой сайт или приложение непосредственно в проездной билет. Она будет отображаться в Google Pay под названием билета, к которому она относится. Эта функция доступна для всех типов карт и билетов Google Pay.
Как запросить доступ
Запросить доступ к функции можно через эту форму. При этом следует помнить следующее:
- В форме вам нужно указать ваш идентификатор эмитента.
- В поле Issue type (Тип проблемы) следует выбрать вариант Technical/API Integration (Технические проблемы/интеграция с API).
- Далее выберите Link your app or website below the Google Pay pass (Ссылка на сайт или приложение под проездным билетом в Google Pay).
Как добавить ссылку
URI приложения или сайта указывается в appLinkData
для определенного проездного билета в Google Pay. URI можно добавлять в любом формате, но мы рекомендуем использовать динамическую ссылку.
Посмотрите пример кода ниже. В нем приводится формат и контекст для appLinkData
.
{ "id": string, "classId": string, … … … "appLinkData": { "androidAppLinkInfo": { "appLogoImage": { "sourceUri": { "uri": string } }, "title": { "defaultValue": { "language": string, "value": string } }, "description": { "defaultValue": { "language": string, "value": string } }, "appTarget": { "targetUri": { "uri": string, "description": string } } } } … … … }