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

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


С 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. Обновление информации в билете – один из важных аспектов взаимодействия с клиентом.

Чтобы обновить данные во всех картах (например, заменить логотип), необходимо изменить только 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 и в веб-браузере.

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