輪替條碼

簡介

旋轉條碼看起來像是一般的條碼,但會定期變更 通常每分鐘一次,而且感應式刷卡機/讀取器系統設定為僅接受 最新。這項安全措施可降低 條碼螢幕截圖 (特定遭竊或未經授權的票券) 轉售旋轉條碼也適合無法如期使用的裝置 利用智慧感應功能,因為這項功能不支援 NFC (缺少硬體, 軟體已停用)。

API 參考資料

如需旋轉條碼的技術詳細資料,請參閱 RotatingBarcode 類型

酬載範例

JSON
{
  "rotatingBarcode": {
    "type": "QR_CODE",
    "valuePattern": "MyRotatingBarcode-{totp_timestamp_seconds}-{totp_value_0}",
    "alternateText": "Ticket#: 1234567890",
    "totpDetails": {
      "algorithm": "TOTP_SHA1",
      "periodMillis": "3000",
      "parameters": [
        {
          "key": "3132333435363738393031323334353637383930",
          "valueLength": "8"
        }
      ]
    }
  }
}

備用機制

在使用者裝置上,系統一次只能使用一種兌換機制, 取決於票證的設定方式和裝置功能。 我們會依優先順序使用下列兌換類型:

  1. 智慧感應功能:如果已指定智慧感應酬載,且裝置支援這項功能 NFC/HCE
    • 請注意,使用者只要按一下「顯示程式碼」即可覆寫這項設定 會強制顯示旋轉的條碼/靜態條碼。
  2. 旋轉條碼:如果指定旋轉條碼酬載
  3. 靜態條碼:如果已指定條碼酬載

指定多個兌換酬載可確保所有使用者都能受到支援, 可能會對安全造成影響特別是將靜態條碼做為 輪替條碼的備用方案可以抵禦 使用 旋轉條碼靜態條碼備用選項只會顯示在網頁瀏覽次數中 或不支援旋轉條碼的用戶端。即日起 所有 Google 電子錢包用戶端都支援旋轉條碼。

儲存流程

Google Wallet API 提供數種流程,包括:

  • 節省時間或提前建立大眾運輸類別
  • 請在 JWT 中傳送完整物件,或是將物件提前儲存, 並透過 JWT 中的 ID 參照這些 API
  • 更新儲存的物件

提議的 rotatingBarcode 欄位與所有這些流程相容 但為了提高安全性,建議您採取下列做法:

  • 呼叫 object:insert API,將票證插入 Google 錢包伺服器,並將「新增至 Google 錢包」按鈕設為 透過 ID 參照特定物件。這可確保 產生的 JWT 不含輪替條碼的密鑰。
  • 請使用範圍限定為單次票證的動態密碼密鑰
  • 如未更新,金鑰在下列效期內應有效: 物件我們預期這個金鑰在 惡意程式碼的正常操作過程中

以下序列圖說明各種發動者之間的流程 進行一般整合

使用旋轉條碼的序列圖