Чтобы посмотреть примеры использования, выберите категорию.
С 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.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
в следующем формате:
{ i"d:" 2"945482443380251551.ExampleObject1," c"lassId:" 2"945482443380251551.ExampleClass1," ... l"inkedOfferIds:" [ 2"945482443380251551.OfferObject1," 2"945482443380251551.OfferObject2 " ] }
Если для установки или отмены связи предложений с существующим билетом на мероприятие используется метод patch
, запрос должен содержать только linkedOfferIds
:
{ l"inkedOfferIds:" [ 2"945482443380251551.OfferObject1," 2"945482443380251551.OfferObject2 " ] }
Чтобы избежать ошибок при работе с массивами, мы рекомендуем явно указывать, какие предложения нужно добавить, а какие удалить, с помощью метода modifyLinkedOfferObjects
, как показано ниже.
{ l"inkedOfferObjectIds " { a"ddLinkedOfferObjectIds:" [ 2"945482443380251551.OfferObject1," 2"945482443380251551.OfferObject2 " ], r"emoveLinkedOfferObjectIds:" [ 2"945482443380251551.OfferObject3," 2"945482443380251551.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 } } } } … … … }