輪替條碼

簡介

旋轉條碼看起來就像一般條碼,但會定期變更,通常每分鐘變更一次,而終端機/讀取器會設定為只接受最新的條碼。這項安全措施可降低條碼螢幕截圖的風險,特別是票券竊盜或未經授權的票券轉售。對於無法支援 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
    • 請注意,使用者可以按一下「Show code」(顯示代碼) 來覆寫這項設定,強制顯示旋轉條碼/靜態條碼。
  2. 旋轉條碼:如果指定旋轉條碼酬載
  3. 靜態條碼:如果指定條碼酬載

指定多個兌換酬載可確保所有使用者都能使用,但可能會影響安全性。特別是,使用靜態條碼做為旋轉條碼的備用方案,會讓使用旋轉條碼的安全性優勢大打折扣。靜態條碼備用選項只會顯示在網頁瀏覽次數中 或不支援旋轉條碼的用戶端。即日起 所有 Google 電子錢包用戶端都支援旋轉條碼。

儲存流程

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

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

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

  • 請呼叫 object:insert API 將票證插入 Google 錢包伺服器,並設定「Add to Google Wallet」按鈕,以便透過 JWT 中的 ID 參照特定物件。這可確保產生的 JWT 不會包含輪替條碼的密鑰。
  • 使用範圍限定為單次傳送的 OTP 密鑰
  • 如未更新,金鑰在下列效期內應有效: 物件我們不預期這個鍵會在正常運作期間更新。

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

使用旋轉條碼的序列圖