簡介
旋轉條碼看起來就像一般條碼,但會定期變更,通常每分鐘變更一次,而終端機/讀取器會設定為只接受最新的條碼。這項安全措施可降低條碼螢幕截圖的風險,特別是票券竊盜或未經授權的票券轉售。對於無法支援 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" } ] } } } |
備用機制
在使用者裝置上,系統一次只能使用一種兌換機制, 取決於票證的設定方式和裝置功能。 系統會依下列優先順序使用以下兌換類型:
-
智慧感應功能:如果已指定智慧感應酬載,且裝置支援這項功能
NFC/HCE
- 請注意,使用者可以按一下「Show code」(顯示代碼) 來覆寫這項設定,強制顯示旋轉條碼/靜態條碼。
- 旋轉條碼:如果指定旋轉條碼酬載
- 靜態條碼:如果指定條碼酬載
指定多個兌換酬載可確保所有使用者都能使用,但可能會影響安全性。特別是,使用靜態條碼做為旋轉條碼的備用方案,會讓使用旋轉條碼的安全性優勢大打折扣。靜態條碼備用選項只會顯示在網頁瀏覽次數中 或不支援旋轉條碼的用戶端。即日起 所有 Google 電子錢包用戶端都支援旋轉條碼。
儲存流程
Google Wallet API 提供數種流程,包括:
- 省時或提前建立禮物卡類別
- 請在 JWT 中傳送完整物件,或是將物件提前儲存, 並透過 JWT 中的 ID 參照這些 API
- 更新儲存的物件
建議的 rotatingBarcode 欄位可與所有這些流程相容,但為了提升安全性,建議您採取下列做法:
-
請呼叫
object:insert
API 將票證插入 Google 錢包伺服器,並設定「Add to Google Wallet」按鈕,以便透過 JWT 中的 ID 參照特定物件。這可確保產生的 JWT 不會包含輪替條碼的密鑰。 - 使用範圍限定為單次傳送的 OTP 密鑰
- 如未更新,金鑰在下列效期內應有效: 物件我們不預期這個鍵會在正常運作期間更新。
以下序列圖說明各種發動者之間的流程 進行一般整合
