總覽

Google Wallet Passes API 可讓合作夥伴將輪替條碼儲存至 Google 電子錢包。這些條碼的有效期限只有短時間,因此能夠提供額外的安全防護,降低條碼擷取的風險。根據 RFC 6238 的規定,裝置會在裝置產生條碼,且該合作夥伴會取得這組密鑰。然而,如果合作夥伴想要自行產生條碼,Google 會提供 API,方便您將條碼批次上傳至 Google。然後,這些條碼將傳送到使用者的手機,運作方式就像旋轉條碼一樣,用來顯示一小段時間。我們將這項解決方案稱為「合作夥伴產生的輪替條碼」。

合作夥伴產生的 Rotating Barcode API

合作夥伴產生的輪替條碼會使用同一個 RotatingBarcode 物件建立。雖然只需要使用類型,但我們建議您建立一組較小的入門條碼組 (約 10 分鐘),並在 initialRotatingBarcodeValues 中傳送。合作夥伴必須負責確保使用者隨時都有有效的條碼,initialRotatingBarcodeValues 則允許後續的批次上傳呼叫具有非同步性質。

  rotatingBarcode {
    initialRotatingBarcodeValues: object (RotatingBarcodeValues),
    type: enum (BarcodeType),
  }
欄位 說明
initialRotatingBarcodeValues

object (RotatingBarcodeValues)

在條碼中編碼的值。至少須提供一個值。這些初始條碼的用途在於消除使用者首次取得票證之間的時間,以及後續批次上傳呼叫之間的差距。

type

enum (BarcodeType)

必要欄位。此條碼的類型。

可接受的值為:

  • QR_CODE
  • PDF_417

RotatingBarcodeValues
欄位 說明
startDateTime

string

第一個條碼的有效日期/時間。系統會使用 periodMillis 輪替條碼。

採用 ISO 8601 擴充格式的日期/時間,而且含有偏移值。

values[]

string

在條碼中編碼的值。至少須輸入一個值。

值沒有數量限制,但請注意,要求主體的大小不得超過 5MB。

periodMillis

number

每個條碼的有效期間。

批次更新條碼值

建立 RotatingBarcode 物件後,建議您每天上傳一次當日的條碼,直到使用者的票證到期為止。您可以使用以下 REST API 端點來完成這項作業。

方法:transitobject.uploadrotatingbarcodevalues

將旋轉條碼的值上傳至指定物件 ID 參照的大眾運輸物件。

HTTP 要求

POST https://walletobjects.googleapis.com/upload/walletobjects/v1/transitObject/{resourc eId}/uploadRotatingBarcodeValues

路徑參數

參數 說明
resourceId

string

物件的專屬 ID。

要求主體

要求主體 (不得超過 5MB) 包含 RotatingBarcodeValues 的執行個體。

方法:transitobject.downloadrotatingbarcodevalues

針對指定物件 ID 參照的大眾運輸物件,下載旋轉條碼的值。如果合作夥伴想驗證最新的批次作業,這項功能就非常實用。

HTTP 要求

GET https://walletobjects.googleapis.com/walletobjects/v1/transitObject/{resourceId}/do wnloadRotatingBarcodeValues?alt=media

路徑參數

參數 說明
resourceId

string

物件的專屬 ID。

備用機制

請注意,如果其他有效的 RotatingBarcode 沒有有效的條碼可供顯示 (尚未上傳,或已使用目前所有的條碼),則系統會向使用者顯示錯誤訊息。