Descripción general

La API de pases de la Billetera de Google permite a los socios especificar un extremo para activar un boleto de transporte público. Cuando se necesite la activación, se mostrará al usuario el botón "Activar" que, cuando lo presione, llamará al extremo especificado con los parámetros que se describen a continuación. El extremo debe asegurarse de que el pase tenga información de canje válida (ya sea un código de barras o una inspección visual) antes de devolverlo. En ese momento, se actualizará el pase en la Billetera del usuario para mostrar la información de canje. Ten en cuenta que, antes de la activación, no se mostrará la información de canje existente.

API de activación

El extremo de activación se especifica en la API con activationOptions en la clase de transporte público. El socio es responsable de mantener un extremo de activación que funcione con una latencia razonable.

  activationOptions: {
    activationUrl: string
  }
Campo Descripción
activationUrl

string

Es la URL del extremo del socio al que se llamaría para las solicitudes de activación. La URL debe estar alojada en HTTPS, y robots.txt debe permitir que UserAgent:Valuables pueda acceder a la ruta de URL.

El estado de activación se almacena en el objeto mediante el campo activationStatus. Los estados válidos incluyen NOT_ACTIVATED y ACTIVATED. El extremo de activación debe actualizar el objeto con el estado ACTIVATED y debe asegurarse de que el objeto tenga información de canje válida, como un código de barras o parámetros de inspección visual. El campo deviceContext se puede usar para fijar dispositivos.

  activationStatus: enum (ActivationStatus),
  deviceContext: {
    deviceToken: string
  },
  hasLinkedDevice: boolean
Campo Descripción
activationStatus

enum (ActivationStatus)

Estado de activación de este objeto de transporte público. Este estado cambiará la representación del ticket y permitirá que los usuarios realicen acciones. Por ejemplo, se renderizará un botón Activar en los detalles del ticket si se establece como NOT_ACTIVATED.

Los valores aceptables son:

  • NOT_ACTIVATED
  • ACTIVATED

deviceContext

object (DeviceContext)

Un contexto de dispositivo con el que se asociará el objeto. Si se configura, la información de canje solo se devolverá al dispositivo determinado.

hasLinkedDevice

boolean

Indica si este objeto está vinculado actualmente a un solo dispositivo.

DeviceContext
Campo Descripción
deviceToken

string

Si se configura, la información de canje solo se devolverá al dispositivo determinado cuando se active el objeto. No se puede usar como un identificador estable para rastrear el dispositivo de un usuario. Puede cambiar entre diferentes pases para el mismo dispositivo o incluso entre diferentes activaciones para el mismo dispositivo. Cuando se configura esto, los emisores también deben establecer hasLinkedDevice en el objeto que se activa.

Ten en cuenta que la deviceToken se recibe del campo deviceContext de parámetros de activación.

Fijación de dispositivos

La fijación de dispositivos es una función que le permite al usuario activar el boleto en un dispositivo y que la información de canje de entradas se muestre solo en ese dispositivo. Es independiente de la multipleDevicesAndHoldersAllowedStatus de ONE_USER_ONE_DEVICE, que solo permite que el ticket se muestre en un solo dispositivo. Se recomienda usar el estado ONE_USER_ALL_DEVICES con la fijación del dispositivo.

Antes de la activación, el usuario puede ver el ticket y el botón de activación en cualquier dispositivo que posea. Una vez activado y fijado a un dispositivo, este mostrará la información de canje y en otros dispositivos se mostrará un botón de activación para permitir que el usuario mueva el boleto a otro dispositivo. Si mover el ticket no es la funcionalidad deseada, pero sí la activación en cualquier dispositivo, es posible actualizarlo durante la activación a ONE_USER_ONE_DEVICE en lugar de usar la fijación del dispositivo.

Para implementar la fijación de dispositivos, el objeto se debe actualizar con el campo deviceToken, que se recibe con los parámetros de activación, y se debe configurar hasLinkedDevice como verdadero en la misma llamada a la API. Si lo deseas, se puede desvincular el ticket de un dispositivo si se configura hasLinkedDevice como falso en una llamada futura a la API.

diagrama de secuencia para fijar dispositivos

Parámetros de activación

La solicitud al extremo de activación contendrá los siguientes parámetros.

Ejemplo de JSON:

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

Identificador Descripción
classId

ID de clase completamente calificado. Usa el siguiente formato:

<issuer_id.class_id>
objectIds

Es un array completamente calificado de IDs de objetos que usan el siguiente formato:

<issuer_id.object_id>
expTimeMillis Hora de vencimiento en milisegundos desde EPOCH. Luego de la fecha de vencimiento, el mensaje se debe considerar no válido.
eventType Siempre "activate".
nonce Nonce para hacer un seguimiento de las entregas duplicadas
deviceContext

Es un ID único que genera Google y que representa el dispositivo en el que el usuario realiza la acción. Este ID se debe usar cuando se realicen actualizaciones que vinculen un objeto a un dispositivo.

Es posible que este ID no se mantenga constante en las solicitudes futuras de un dispositivo determinado.