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