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

Чтобы посмотреть примеры использования, выберите категорию.


С 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, а также значение одного из следующих свойств (упорядочены по степени важности):

  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 и в браузере.

Вы можете добавить ссылку на свой сайт или приложение непосредственно в проездной билет. Она будет отображаться в 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
              }
            }
    }
  }
  …
  …
  …
}