Практически все пропуска, которые вы можете выдать пользователю для сохранения в его Google Wallet, определяются двумя компонентами: классом Passes и объектом Passes. При выдаче пропуска пользователю вам потребуется экземпляр как класса Passes, так и объекта Passes, которые сообщают API Google Wallet, какой тип пропуска следует создать, а также информацию, которая должна отображаться в пропуске, например, стоимость подарочной карты или имя владельца билета.
API Google Wallet предоставляет предопределенный набор классов и объектов Passes, экземпляры которых вы создаете, а затем используете для создания пропуска, выдаваемого пользователю, например, GiftCardClass и GiftCardObject , GenericClass и GenericObject и другие.
Каждый экземпляр класса и объекта Passes определяется как JSON-объект, имеющий набор обязательных и необязательных свойств, соответствующих конкретному сценарию использования, предназначенному для данного типа пропуска.
Проходит курсы
Класс Passes можно рассматривать как общий шаблон, используемый для создания одного или нескольких пропусков, которые вы будете выдавать своим пользователям. Класс Passes определяет общий набор свойств, которые будут включены во все пропуски, ссылающиеся на него.
Например, следующий экземпляр класса EventTicketClass определяет поля, общие для всех выданных билетов на предстоящее мероприятие (место проведения, название мероприятия, организатор, дата/время).
{
"id": "ISSUER_ID.EVENT_CLASS_ID",
"issuerName": "[TEST ONLY] Heraldic Event",
"localizedIssuerName": {
"defaultValue": {
"language": "en-US",
"value": "[TEST ONLY] Heraldic Event"
}
},
"eventName": {
"defaultValue": {
"language": "en-US",
"value": "Google Live"
}
},
"venue": {
"name": {
"defaultValue": {
"language": "en-US",
"value": "Shoreline Amphitheater"
}
},
"address": {
"defaultValue": {
"language": "en-US",
"value": "ADDRESS_OF_THE_VENUE"
}
}
},
"dateTime": {
"start": "2023-04-12T11:30"
},
"reviewStatus": "UNDER_REVIEW"
}
Для каждого экземпляра класса Passes требуется свойство id , которое вы указываете. Этот идентификатор класса служит уникальным идентификатором, на который вы будете ссылаться при создании нового экземпляра объекта Passes.
Передает объекты
В то время как экземпляр класса Passes определяет набор общих свойств, используемых в одном или нескольких пропусках, объект Passes определяет уникальные характеристики конкретного пропуска, выданного конкретному пользователю.
Например, при создании абонемента на мероприятие с помощью API Google Wallet экземпляр EventTicketObject включает свойства, относящиеся к месту, назначенному этому билету, поскольку эти значения будут уникальными для каждого выданного билета.
{
"id": "ISSUER_ID.OBJECT_ID",
"classId": "ISSUER_ID.EVENT_CLASS_ID",
"state": "ACTIVE",
"seatInfo": {
"seat": {
"defaultValue": {
"language": "en-us",
"value": "9"
}
},
"row": {
"defaultValue": {
"language": "en-us",
"value": "L"
}
},
"section": {
"defaultValue": {
"language": "en-us",
"value": "45"
}
},
"gate": {
"defaultValue": {
"language": "en-us",
"value": "7C"
}
}
},
"barcode": {
"type": "BARCODE_TYPE_UNSPECIFIED",
"value": "BARCODE_VALUE",
"alternateText": ""
}
}
Для каждого экземпляра объекта Passes требуется свойство id , которое вы указываете. Этот идентификатор объекта служит уникальным идентификатором, на который вы будете ссылаться при выдаче пропуска пользователю.
Как классы Passes взаимодействуют с объектами Passes
Объекты пропусков должны расширять экземпляр класса пропусков либо путем ссылки на его идентификатор класса, либо путем включения полного определения класса пропусков. Эта взаимосвязь между классом пропусков и экземпляром объекта пропусков означает, что вы можете устанавливать и обновлять свойства, общие для всех выданных пропусков, через экземпляр класса пропусков, а также свойства, уникальные для отдельного пропуска, в экземпляре объекта пропусков.
Например, на следующей диаграмме, иллюстрирующей простой пропуск Event Ticket, показано, как поля, определенные в общем EventTicketClass , и поля для конкретного пропуска, определенные в объекте EventTicketObject объединяются для создания окончательно выданного пропуска. Обратите внимание, как идентификатор класса Passes Class используется в свойстве classId объекта Passes Object.
Изменения, внесенные в экземпляр класса Passes, немедленно распространятся на все экземпляры объектов Passes, которые на него ссылаются. Пользователи увидят любые изменения, внесенные вами в экземпляр класса Passes, отраженные в пропуске в их приложении Google Wallet при следующей синхронизации.
Добавление пропуска в Google Wallet пользователя
Чтобы добавить пропуск в Google Wallet пользователя, необходимо создать JSON Web Token (JWT), содержащий утверждения, которые вы (эмитент) делаете относительно экземпляра объекта Passes Object, который будет сохранен в Google Wallet пользователя, — в первую очередь, идентификатор объекта Passes Object, который вы выдаете пользователю. Затем JWT доставляется пользователю через кнопку « Добавить в Google Wallet» или ссылку «Добавить в Google Wallet» .
После того, как пользователь нажимает кнопку или ссылку для добавления выданного пропуска в свой Google Wallet, закодированная в JWT ссылка объекта Passes Object связывается с учетной записью Google этого пользователя. Это означает, что при повторном нажатии кнопки ссылка на этот объект Passes Object уже существует, поэтому дубликаты не будут добавлены в кошелек пользователя.
Если пользователь удаляет пропуск из приложения Google Wallet, соответствующий экземпляр объекта Passes Object автоматически отключается от пользователя, но не удаляется. Это означает, что пользователь может снова нажать кнопку «Добавить в Google Wallet» или ссылку, чтобы сохранить пропуск без необходимости создания нового экземпляра объекта Passes Object или JWT.