Обзор

API Google Wallet Passes предоставляет партнерам возможность указать конечную точку для активации транзитного билета. При необходимости активации для пользователя будет отображаться кнопка «Активировать», при нажатии которой произойдет вызов указанной конечной точки с параметрами, описанными ниже. Конечная точка должна убедиться, что пропуск имеет действительную информацию о погашении (штрих-код или визуальный осмотр) перед возвратом, после чего пропуск в кошельке пользователя будет обновлен для отображения информации о погашении. Обратите внимание, что до активации любая существующая информация о погашении не будет отображаться.

API активации

Конечная точка активации указывается в API с помощью activationOptions в транзитном классе . Партнер несет ответственность за поддержание рабочей конечной точки активации с разумной задержкой.

  activationOptions: {
    activationUrl: string
  }
Поле Описание
activationUrl

string

URL-адрес партнерской конечной точки, которая будет вызываться для запросов на активацию. URL-адрес должен размещаться по протоколу HTTPS, а файл robots.txt должен обеспечивать доступ к пути URL-адреса для UserAgent:Google-Valuables.

Состояние активации сохраняется в объекте с помощью поля activationStatus . Допустимые статусы включают NOT_ACTIVATED и ACTIVATED . Конечная точка активации должна обновить объект, присвоив ему статус ACTIVATED , а также убедиться, что объект имеет действительную информацию о погашении, такую ​​как штрих-код или параметры визуального осмотра. Поле deviceContext может использоваться для закрепления устройства .

  activationStatus: enum (ActivationStatus),
  deviceContext: {
    deviceToken: string
  },
  hasLinkedDevice: boolean
Поле Описание
activationStatus

enum (ActivationStatus)

Статус активации данного транзитного объекта. Этот статус изменит представление заявки и позволит пользователям выполнять действия; например. кнопка «Активировать» будет отображаться в деталях заявки, если для нее установлено значение NOT_ACTIVATED .

Приемлемые значения:

  • NOT_ACTIVATED
  • ACTIVATED

deviceContext

object ( DeviceContext )

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

hasLinkedDevice

boolean

Связан ли этот объект в настоящее время с одним устройством.

Контекст устройства
Поле Описание
deviceToken

string

Если установлено, информация о погашении будет возвращена на данное устройство только после активации объекта. Его нельзя использовать в качестве стабильного идентификатора для отслеживания устройства пользователя. Он может меняться в разных проходах для одного и того же устройства или даже в разных активациях для одного и того же устройства. При установке этого вызывающие стороны также должны установить hasLinkedDevice для активируемого объекта.

Обратите внимание, что deviceToken получено из поля параметров активации deviceContext

Закрепление устройства

Закрепление устройства — это функция, которая позволяет пользователю активировать билет на одном устройстве и отображать информацию об использовании билета только на этом устройстве. Это отличается от multipleDevicesAndHoldersAllowedStatus ONE_USER_ONE_DEVICE , который позволяет отображать билет только на одном устройстве. При закреплении устройства рекомендуется использовать статус ONE_USER_ALL_DEVICES .

Перед активацией пользователь может увидеть билет и кнопку активации на любом своем устройстве. После активации и прикрепления к устройству на закрепленном устройстве будет отображаться информация о погашении, а на других устройствах будет отображаться кнопка активации, позволяющая пользователю перенести билет на другое устройство. Если перемещение билета не является желаемой функцией, а активация на любом устройстве — желательно, то можно обновить билет во время активации до ONE_USER_ONE_DEVICE вместо использования закрепления устройства.

Чтобы реализовать закрепление устройства, объект должен быть обновлен с помощью поля deviceToken , которое получено с параметрами активации , а также установить для hasLinkedDevice значение true в том же вызове API. При желании билет можно затем отсоединить от устройства, установив для hasLinkedDevice значение false в будущем вызове API.

диаграмма последовательности закрепления устройства

Параметры активации

Запрос к конечной точке активации будет содержать следующие параметры.

Пример JSON:

  {
    classId: “123.classId”,
    objectIds: [ “123.objectId” ],
    expTimeMillis: 1669671940735,
    eventType: “activate”,
    nonce: “1c6fccce-6f66-11ed-a1eb-0242ac120002”,
    deviceContext: “6fba937a-6f6e-11ed-a1eb-0242ac120002”
  }

Идентификатор Описание
classId

Полный идентификатор класса. Использует следующий формат:

<issuer_id.class_id>
objectIds

Полный массив идентификаторов объектов в следующем формате:

<issuer_id.object_id>
expTimeMillis Срок действия в миллисекундах с момента EPOCH. По истечении срока действия сообщение необходимо считать недействительным.
eventType Всегда "activate" .
nonce Nonce для отслеживания дублирующих поставок.
deviceContext

Уникальный идентификатор, сгенерированный Google и представляющий устройство, на котором пользователь выполняет действие. Этот идентификатор следует использовать при обновлении, привязывающем объект к устройству.

Этот идентификатор может не быть постоянным для будущих запросов от данного устройства.