總覽

合作夥伴可以透過 Google WalletPass API,將旋轉條碼儲存至 Google 錢包。這些條碼僅短時間內有效,提供額外的安全保障,可降低條碼擷取作業的風險。條碼會依照 RFC 6238,由合作夥伴提供密鑰,而產生,不過,如果合作夥伴比較希望自行產生條碼,則可使用 Google 提供的 API,將條碼批次上傳至 Google。接著這些條碼會傳遞到使用者的手機,其作用如同旋轉條碼,並暫時顯示一小段時間。我們將這項解決方案稱為「合作夥伴產生的旋轉條碼」。

合作夥伴產生的旋轉 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

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

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

periodMillis

number

每個條碼的有效時間。

批次更新條碼值

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

方法:transitobject.uploadrotatingbarcodevalues

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

HTTP 要求

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

路徑參數

參數 說明
resourceId

string

物件的專屬 ID。

要求主體

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

方法:transitobject.downloadrotatingbarcodevalues

下載作業會輪替指定物件 ID 參照的大眾運輸物件條碼值。如果合作夥伴想驗證最新的批次資料,這個方法就非常實用。

HTTP 要求

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

路徑參數

參數 說明
resourceId

string

物件的專屬 ID。

備用機制

請注意,如果經其他方法驗證的 RotatingBarcode 沒有可顯示的有效條碼 (尚未上傳這些條碼,或是已使用所有目前的條碼),使用者就會看到錯誤訊息。