Чтобы посмотреть примеры использования, выберите категорию.
С Google Pay API for Passes можно использовать билеты на мероприятия для взаимодействия с пользователями. Из этого руководства вы узнаете, как это делать.
Чтобы клиенты могли сохранять билеты на мероприятия, используйте метод запроса POST с JWT или ссылки, содержащие JWT-сообщения. В этих случаях классы и объекты добавляются заранее.
В этом разделе описаны примеры использования, применимые только к билетам на мероприятия.
- Обновление информации в билетах
- Создание кнопки для сохранения нескольких билетов
- Группировка билетов на мероприятия
- Настройка уведомлений о предстоящих мероприятиях
- Связанные предложения
- Действия с билетами, у которых истек срок действия
- Создание ссылки на сохраненный билет
- Добавление к сохраненному билету ссылки на стороннее приложение или сайт
Обновление информации в билетах
Иногда необходимо изменить сведения, указанные в билете, уже после его сохранения пользователем. Сделать это можно с помощью REST API. Если изменения затрагивают только классы, можно также использовать Google Pay Merchant Center. Обновление информации в билете – один из важных аспектов взаимодействия с клиентом.
Чтобы обновить данные во всех билетах на определенное мероприятие (например, адрес площадки), необходимо только изменить с помощью метода update или patch класс EventTicketClass или использовать Google Pay Merchant Center.
Google перенесет изменения во все объекты EventTicketObject, связанные с обновленным классом EventTicketClass. Это относится ко всем полям, определенным на уровне EventTicketClass.
Чтобы обновить отдельный билет (например, указать другой номер места), нужно изменить с помощью метода update или patch только один объект EventTicketObject. Это относится ко всем полям, определенным на уровне EventTicketObject.
Кроме того, не всегда получается предугадать, когда произойдут изменения или когда придется отправить запрос update или patch. В этом случае стоит периодически выполнять запросы update или patch для каждого класса и объекта. Посмотреть все классы в аккаунте отдельного продавца можно с помощью метода list для EventTicketClass.
Чтобы посмотреть все объекты определенного класса, вызовите метод list для EventTicketObject.
Создание кнопки для сохранения нескольких билетов
Чтобы пользователи могли сохранить в приложении сразу несколько билетов, можно добавить ссылку или кнопку Сохранить в 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.eventNameclass.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"
]
}
}Внешний вид билета на мероприятие со связанными предложениями
Связанные предложения отображаются в представлении билета на мероприятие и расположены между разделом с картой и разделом с подробными сведениями, как показано ниже. В карусели можно показывать не более пяти связанных предложений. Если с билетом связано больше предложений, пользователь может просмотреть их, нажав кнопку Ещё в конце карусели.
Если нажать на связанное предложение, оно будет показано с использованием упрощенного шаблона.
Действия с билетами, у которых истек срок действия
На вкладке "Карты" в приложении 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 и в браузере.
Добавление к сохраненному билету ссылки на стороннее приложение или сайт
Вы можете добавить ссылку на свой сайт или приложение непосредственно на билет. Она будет отображаться в 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
}
}
}
}
…
…
…
}