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

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

.

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

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

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

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

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

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

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

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

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

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

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

Группировка билетов на мероприятия

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

Условия, при которых объекты EventTicketObject считаются группой, зависят от того, используется ли свойство class.eventID.

Группировка с использованием свойства class.eventId

Свойство class.eventId позволяет группировать билеты независимо от остальных их свойств. Например, два объекта EventTicketObject со значением class.eventId = "foo" будут входить в одну группу, даже если у них разные значения class.eventName и class.dateTime.start.

Когда используется class.eventID, то, чтобы объекты считались группой, достаточно, чтобы у них совпадали следующие свойства:

  • идентификатор Issuer ID (из сервиса Google Pay API for Passes Merchant Center);
  • class.eventId

Группировка без использования свойства class.eventId

Если для объектов EventTicketObject не задано свойство class.eventId, они считаются группой, только если у них совпадают все перечисленные ниже свойства:

  • идентификатор Issuer ID (из сервиса Google Pay API for Passes Merchant Center);
  • class.eventName
  • class.dateTime.start

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

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

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

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

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

class.eventName
Expand for more options

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

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

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

Связанные предложения

Связанные предложения отображаются при просмотре билета на мероприятие, чтобы пользователи могли быстрее найти релевантный контент. Записываемое поле linkedOfferIds в объекте EventTicketObject содержит список идентификаторов специальных предложений, связанных с билетом на мероприятие.

Подготовка специальных предложений

Чтобы добавить связанное предложение, нужно заранее создать классы и объекты, связанные с билетом на мероприятие. Подробная информация о создании специальных предложений доступна в разделе Специальные предложения. Пользователям не нужно явным образом сохранять связанные предложения. Поле id в объекте OfferObject указывает на объект EventTicketObject.

Как связать специальное предложение с билетом на мероприятие

Существующие специальные предложения можно связать с билетом на мероприятие, используя вызовы REST API insert, update, patch или modifyLinkedOfferObjects.

Если вы связываете предложения с создаваемым билетом на мероприятие, используя вызов insert, или если вы связываете предложения или отменяете их связь с существующим билетом на мероприятие, используя вызов update, для записи данных в поле linkedOfferIds можно использовать запрос, содержащий все данные EventTicketObject, в стандартном формате:

{
  "id": "2945482443380251551.ExampleObject1",
  "classId": "2945482443380251551.ExampleClass1",
  ...
  "linkedOfferIds": [
    "2945482443380251551.OfferObject1",
    "2945482443380251551.OfferObject2"
  ]
}

Если для установки или отмены связи предложений с существующим билетом на мероприятие используется вызов patch, запрос должен содержать только поле linkedOfferIds:

{
  "linkedOfferIds": [
    "2945482443380251551.OfferObject1",
    "2945482443380251551.OfferObject2"
  ]
}

Чтобы избежать ошибок при работе с массивами, мы рекомендуем явно указывать, какие предложения нужно добавить, а какие удалить, с помощью метода modifyLinkedOfferObjects, как показано ниже:

{
  "linkedOfferObjectIds" {
    "addLinkedOfferObjectIds": [
      "2945482443380251551.OfferObject1",
      "2945482443380251551.OfferObject2"
    ],
    "removeLinkedOfferObjectIds": [
      "2945482443380251551.OfferObject3",
      "2945482443380251551.OfferObject4"
    ]
  }
}

Внешний вид билета на мероприятие со связанными предложениями

Связанные предложения отображаются в представлении билета на мероприятие, которое расположено между разделом с картой и разделом с подробными сведениями, как показано ниже. В карусели можно показывать не более 5 связанных предложений. Если с билетом связано больше предложений, пользователь может просмотреть их, нажав кнопку Ещё в конце карусели.

Связанные предложения

Если нажать на связанное предложение, оно будет показано с использованием упрощенного шаблона.

Внешний вид связанного предложения после нажатия на него

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

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

  • Прошло более 72 часов с момент истечения срока, указанного в параметре class.dateTime.end. Если параметр class.dateTime.end не задан, используется параметр class.dateTime.start. Билет перемещается в раздел "Проездные с истекшим сроком действия" в течение 72—96 часов с момента истечения срока, указанного в class.dateTime.end или class.dateTime.start.
  • Истек срок, указанный в параметре 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 и в веб-браузере.