Panoramica dei pass per classi e oggetti

Quasi tutte le tessere che un utente finale può emettere affinché possano salvare nel proprio Google Wallet sono definite da due componenti: una classe di tessere e un oggetto tessere. Ogni volta che emetti una tessera a un utente, avrai bisogno di un'istanza sia di una classe pass che di un oggetto Passes, che comunica all'API Google Wallet il tipo di tessera da costruire, nonché dettagli da mostrare sulla tessera, come il valore di una carta regalo o il nome di un titolare di biglietto.

L'API Google Wallet fornisce un insieme predefinito di classi delle tessere e oggetti delle tessere di cui crei le istanze e che utilizzi per creare una tessera rilasciata a un utente, ad esempio GiftCardClass e GiftCardObject, GenericClass e GenericObject e altri.

Ogni istanza Passes Class e Passes è definita come un oggetto JSON che ha un insieme di proprietà obbligatorie e facoltative che corrispondono al caso d'uso specifico previsto per quel tipo di pass.

Classi di pass

Pensa a una classe di tessere come a un modello condiviso utilizzato per creare una o più tessere che fornirai ai tuoi utenti. Una classe Passes definisce un insieme comune di proprietà che verrà incluso in tutti i passaggi che vi fanno riferimento.

Ad esempio, la seguente istanza di EventTicketClass definisce i campi comuni a tutti i biglietti emessi per un evento imminente(sede, nome evento, emittente, data/ora).

{
  "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"
}
  

Ogni istanza di una classe di pass richiede una proprietà id specificata da te. Questo ID classe funge da identificatore univoco a cui farai riferimento ogni volta che lo utilizzerai per creare un nuovo oggetto Passes in esecuzione in un'istanza Compute Engine.

Oggetti tessere

Mentre un'istanza di una classe Passes specifica un insieme di proprietà condivise da utilizzare in una o più un oggetto Passes specifica i dettagli univoci di una specifica tessera rilasciata a uno specifico utente.

Ad esempio, quando viene creato un pass per biglietto per un evento con l'API Google Wallet, viene restituito un EventTicketObject L'istanza include le proprietà per la utenza assegnata al ticket poiché quei valori saranno univoci per ogni ticket emesso.

{
  "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": ""
  }
}
  

Ogni istanza di un oggetto Passes richiede una proprietà id specificata da te. Questo ID oggetto funge da identificatore univoco a cui farai riferimento quando emetti la tessera a un utente.

Come funzionano le classi di pass con gli oggetti Passes

Gli oggetti per le tessere devono estendere un'istanza di una classe di pass facendo riferimento al relativo ID classe o includendo la definizione completa della classe delle tessere. Questa relazione tra una classe Passes e un'istanza dell'oggetto Passes significa che puoi impostare e aggiornare le proprietà comuni a tutte le tessere emesse tramite l'istanza della classe delle tessere, e le proprietà univoche di un singolo passaggio nell'istanza dell'oggetto Passes.

Ad esempio, il seguente diagramma di un semplice pass per biglietti per eventi mostra in che modo i campi definiti nell'elemento EventTicketClass condiviso e quelli di un biglietto specifico definito nella EventTicketObject si combinano per creare la tessera finale emessa. Nota come l'ID della classe Passes viene fatto riferimento nella proprietà classId dell'oggetto Passes.

Le modifiche apportate a un'istanza di classe Passes verranno propagate immediatamente in tutte le istanze dell'oggetto Passes. che vi fanno riferimento. Gli utenti vedranno riflesse eventuali modifiche apportate a un'istanza Passes Class sulla tessera nell'app Google Wallet alla successiva sincronizzazione.

Aggiungere una tessera a Google Wallet di un utente

Per aggiungere una tessera a Google Wallet di un utente, devi creare un token JWT (JSON Web Token) contenente dichiarazioni in quanto emittente, in merito all'istanza Passes Object che verrà salvata nel Google Wallet dell'utente; cosa più importante, l'ID oggetto dell'istanza Passes Object che stai emettendo all'utente. JWT viene quindi consegnato all'utente tramite il pulsante Aggiungi a Google Wallet o Aggiungi a Google Wallet. .

Dopo che un utente fa clic sul pulsante o sul link per aggiungere una tessera emessa a Google Wallet, viene creato un link L'istanza dell'oggetto Passes codificata nel JWT è collegata all'Account Google dell'utente. Ciò significa che Quando l'utente fa nuovamente clic sul pulsante, esiste già un link a quell'oggetto Pass, quindi è copie non verranno aggiunte al wallet dell'utente.

Se un utente rimuove una tessera dall'app Google Wallet, l'istanza corrispondente dell'oggetto Passes viene automaticamente scollegati dall'utente, ma non vengono eliminati. Ciò significa che un utente può fare clic Pulsante o link Aggiungi a Google Wallet per salvare la tessera senza bisogno di un una nuova istanza o un JWT dell'oggetto Passes da creare.