票證類別和物件總覽

凡是可發出供使用者儲存在 Google 錢包中的票證,幾乎都由兩個元件定義:票證類別和票證物件。每次核發票證給使用者時,您必須同時建立「Pass 類別」和「Pass 物件」,以便 Google Wallet API 瞭解要建構的票證類型,以及要顯示在票證上的詳細資料,例如禮物卡值或票券持有人姓名。

Google Wallet API 提供一組預先定義的票證類別和票證物件,由您建立例項,可用來建立核發給使用者的票證,例如 GiftCardClassGiftCardObjectGenericClassGenericObject 等。

每個票證類別和票證物件執行個體都會定義為 JSON 物件,其中包含一組必要和選用屬性,可對應至特定票證類型適用的特定用途。

票證類別

你可以將票證類別視為共用範本,用來建立一或多張票證 服務的運作方式票證類別會定義要納入的一組常用屬性 所參照的票證

舉例來說,下列 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"
}
  

每個票證類別的執行個體都需要您指定的 id 屬性。這個類別 ID 是一組專屬 ID,每當你用該 ID 建立新的票證物件時,都會參照這個 ID 執行個體。

票證物件

票證類別的例項會指定一組要在一或多個使用中的共用屬性 票證,則代表已核發給特定使用者的特定票證詳細資料。

舉例來說,使用 Google Wallet API 建立活動票券票證時,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 屬性。這個物件 ID 是一組專屬 ID,可供您在核發票證給使用者時參照。

票證類別如何與 Passes 物件搭配使用

票證物件必須參照類別 ID,或加入完整的票證類別定義,來擴充票證類別的例項。票證類別和 Passes 物件執行個體之間的關係 換句話說,您可以透過票證類別執行個體,設定及更新所有核發票證通用的屬性。 和屬性專屬屬性。

舉例來說,下方簡易活動票券票證圖表顯示共用 EventTicketClass 中定義的欄位,以及在 EventTicketObject 中定義的特定票證欄位組合,用來建構最終核發的票證。請注意,如何在 Passes 物件的 classId 屬性中參照票證類別 ID。

您對 Passes 類別執行個體所做的變更,會立即套用至所有 Passes 物件執行個體 參照該物件系統會反映您對票證類別執行個體所做的任何變更 。

將票證新增至使用者的 Google 錢包

如要將票證新增到使用者的 Google 錢包,請建立含有憑證附加資訊的 JSON Web Token (JWT) 您 (發卡機構) 要針對即將儲存至使用者 Google 錢包的票證物件執行個體建立要求: 最重要的是,您要核發給使用者的票證物件執行個體物件 ID。JWT 隨後,使用者按一下「新增至 Google 錢包」按鈕或「新增至 Google 錢包」, 連結。

使用者點選按鈕或連結,將已核發的票證新增至 Google 錢包後, 在 JWT 中編碼的物件執行個體會連結至該使用者的 Google 帳戶。也就是說 當使用者再次點選該按鈕時,該票證物件已有連結,因此重複點選 副本將不會新增到使用者的錢包。

使用者從 Google 錢包應用程式中移除票證後,系統會將相應的票證物件例項 自動解除連結,但不會刪除。也就是說,使用者可以點選 再次「新增至 Google 錢包」按鈕或連結,即可輕鬆儲存票證,省去麻煩 新的 Passes 物件執行個體或 JWT。