Omówienie klas i obiektów kart

Prawie wszystkie karty, które użytkownik może zapisać w Portfelu Google, są zdefiniowane przez 2 komponenty: klasę kart i obiekt karty. Za każdym razem, gdy wydajesz kartę użytkownikowi, potrzebujesz wystąpienia zarówno klasy kart, jak i obiektu kart. Informuje on interfejs API Portfela Google, jaki typ karty ma utworzyć, oraz podaj szczegóły, które mają się na niej wyświetlać, takie jak wartość karty podarunkowej czy imię i nazwisko posiadacza biletu.

Interfejs API Portfela Google udostępnia wstępnie zdefiniowany zestaw klas i obiektów kart kart, które możesz utworzyć, a następnie użyć do utworzenia karty wydanej użytkownikowi, np. GiftCardClass i GiftCardObject, GenericClass, GenericObject itp.

Każda instancja obiektu klas i kart biletów jest zdefiniowana jako obiekt JSON ze zbiorem wymaganych i opcjonalnych właściwości odpowiadających konkretnemu przypadekowi użycia przeznaczonemu dla danego typu karty.

Klasy biletów

Traktuj klasę kart jako udostępniany szablon służący do tworzenia co najmniej jednej karty które udostępnisz użytkownikom. Klasa kart definiuje wspólny zbiór właściwości, które zostaną uwzględnione we wszystkich kartach, które się do niego odnoszą.

Na przykład poniższe wystąpienie EventTicketClass określa pola, które są wspólne dla wszystkich wystawionych biletów na nadchodzące wydarzenie(miejsce, nazwa wydarzenia, wydawca, data i godzina).

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

Każde wystąpienie klasy kart wymaga określonej przez Ciebie właściwości id. Ten identyfikator klasy działa jako unikalny identyfikator, do którego będziesz się odwoływać za każdym razem, gdy użyjesz go do utworzenia nowego obiektu kart instancji.

Obiekty kart

Instancja klasy kart określa zbiór wspólnych właściwości do użycia w co najmniej jednym obiekt karty określa unikalne szczegóły konkretnej karty wydanej konkretnemu użytkownikowi.

Jeśli na przykład karta na bilet na wydarzenie zostanie utworzona za pomocą interfejsu Google Wallet API, EventTicketObject zawiera właściwości związane z miejscem przypisanym do danego biletu, ponieważ te wartości będą unikalne dla każdego bilet został wystawiony.

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

Każde wystąpienie obiektu Karty wymaga określonej właściwości id. Ten identyfikator obiektu działa jak unikalny identyfikator, do którego się odwołujesz, wystawiając kartę użytkownikowi.

Współpraca klas kart z obiektami kart

Obiekty kart muszą stanowić rozszerzenie instancji klasy kart poprzez podanie jej identyfikatora klasy lub przez uwzględnienie pełnej definicji klasy kart. Ta relacja między instancją klasy kart i obiektem kart oznacza, że możesz ustawiać i aktualizować właściwości wspólne dla wszystkich wystawionych kart za pomocą instancji klasy Pass i właściwości, które są unikalne dla pojedynczej karty w instancji obiektu Karty.

Na przykład na diagramie poniżej prostej karty biletu na wydarzenie widać, jak pola zdefiniowane we wspólnym EventTicketClass i pola konkretnego biletu w EventTicketObject łączą się, aby utworzyć ostateczną wydaną kartę. Zwróć uwagę, jak do identyfikatora klasy kart odwołuje się właściwość classId obiektu Karty.

Zmiany wprowadzone w instancji klasy kart będą stosowane natychmiast we wszystkich instancjach obiektów Pass które się do niego odwołują. Zmiany, które wprowadzisz w instancji klasy kart, będą widoczne dla użytkowników na karcie w aplikacji Portfel Google przy następnej synchronizacji.

Dodawanie karty do Portfela Google użytkownika

Aby dodać kartę do Portfela Google użytkownika, musisz utworzyć token sieciowy JSON (JWT) zawierający deklaracje przez Ciebie (wydawcę) o instancji obiektu kart, która zostanie zapisana w Portfelu Google użytkownika – a przede wszystkim identyfikator obiektu instancji obiektu kart wystawianych użytkownikowi. Token JWT jest przekazywana użytkownikowi, korzystając z przycisku Dodaj do Portfela Google lub Dodaj do Portfela Google. .

Gdy użytkownik kliknie przycisk lub link, aby dodać wydaną kartę do Portfela Google, zostanie utworzony link Instancja obiektu Karty zakodowane w tokenie JWT jest połączona z kontem Google danego użytkownika. Oznacza to, że gdy użytkownik ponownie kliknie przycisk, istnieje już link do tego obiektu Karty, więc duplikat – kopie nie zostaną dodane do portfela użytkownika.

Jeśli użytkownik usunie kartę z aplikacji Portfel Google, odpowiednia instancja obiektu kart zostanie jest automatycznie usuwany z konta użytkownika, ale nie jest usuwany. Oznacza to, że użytkownik może kliknąć Dodaj do Portfela Google lub link, aby zapisać kartę bez konieczności dodawania nową instancję obiektu kart lub token JWT do utworzenia.