您為使用者核發的票證幾乎都能儲存至 Google 錢包,這類票證由兩個元件定義:票證類別和票證物件。每當您向使用者核發憑證時,都需要憑證類別和憑證物件的例項,這會告知 Google Wallet API 要建構的憑證類型,以及要顯示在憑證上的詳細資料,例如禮物卡價值或持票人姓名。
Google Wallet API 提供一組預先定義的票證類別和票證物件,您可以建立這些項目的例項,然後用來建立發給使用者的票證,例如 GiftCardClass 和 GiftCardObject、GenericClass 和 GenericObject 等。
每個票證類別和票證物件例項都會定義為 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 錢包 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": ""
}
}
每個票證物件例項都需要您指定的 id 屬性。這個物件 ID 會做為專屬 ID,您在核發票證給使用者時會參考這個 ID。
票證類別如何與票證物件搭配運作
票證物件必須參照票證類別 ID 或包含完整的票證類別定義,藉此擴充票證類別例項。票證類別和票證物件執行個體之間的這種關係,代表您可以透過票證類別執行個體,設定及更新所有已核發票證通用的屬性,並在票證物件執行個體中,設定個別票證專屬的屬性。
舉例來說,下圖是簡單的活動票券,顯示在共用 EventTicketClass 中定義的欄位,以及在 EventTicketObject 中定義的特定票券欄位,如何合併建構最終核發的票證。請注意,票證類別的 ID 會在票證物件的 classId 屬性中參照。
對票證類別例項所做的變更,會立即套用至參照該例項的所有票證物件例項。使用者下次同步處理時,Google 錢包應用程式中的票證就會反映您對票證類別執行個體所做的變更。
將憑證新增至使用者的 Google 錢包
如要將票證新增至使用者的 Google 錢包,請建立 JSON Web Token (JWT),其中包含您 (發行者) 對將儲存在使用者 Google 錢包中的 Passes Object 執行個體所做的聲明,最重要的是您發給使用者的 Passes Object 執行個體物件 ID。接著,系統會透過「新增至 Google 錢包」按鈕或「新增至 Google 錢包」連結,將 JWT 傳送給使用者。
使用者點選按鈕或連結,將核發的憑證新增至 Google 錢包後,系統會將以 JWT 編碼的憑證物件執行個體連結至該使用者的 Google 帳戶。也就是說,使用者再次點選該按鈕時,系統會發現該票證物件已存在連結,因此不會將重複的副本新增至使用者的錢包。
如果使用者從 Google 錢包應用程式中移除票證,系統會自動取消連結對應的 Passes 物件例項與使用者,但不會刪除該例項。也就是說,使用者可以再次點選「新增至 Google 錢包」按鈕或連結,儲存票證,不必建立新的 Passes Object 執行個體或 JWT。