บทนำ
บาร์โค้ดมีรูปแบบคล้ายกับบาร์โค้ดปกติ แต่จะเปลี่ยนแปลงเป็นระยะ ๆ มักเกิดขึ้นทุกนาที และเทอร์มินัล/โปรแกรมอ่านหน้าจอถูกตั้งค่าให้ยอมรับเฉพาะโค้ดล่าสุดเท่านั้น มาตรการรักษาความปลอดภัยนี้ช่วยลดความเสี่ยงที่เกี่ยวข้องกับการสกรีนบาร์โค้ด โดยเฉพาะการโจรกรรมตั๋วหรือการขายตั๋วที่ไม่ได้รับอนุญาต บาร์โค้ดแบบสับเปลี่ยนได้เป็นทางเลือกสํารองสําหรับอุปกรณ์ที่ใช้ประโยชน์จากการแตะอัจฉริยะไม่ได้ เนื่องจากระบบไม่รองรับ 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 รายการเท่านั้น ทั้งนี้ขึ้นอยู่กับการกําหนดค่าบัตรและความสามารถของอุปกรณ์ ระบบจะใช้การแลกสิทธิ์ประเภทต่อไปนี้ โดยเรียงตามลําดับความสําคัญ
-
Smart Tap: หากมีการระบุเพย์โหลด Smart Tap และอุปกรณ์รองรับ NFC/HCE
- โปรดทราบว่าผู้ใช้จะลบล้างค่านี้ได้โดยคลิก "แสดงโค้ด" ซึ่งจะบังคับให้แสดงบาร์โค้ดแบบหมุน/บาร์โค้ดแบบคงที่
- การหมุนบาร์โค้ด: หากมีการระบุเพย์โหลดบาร์โค้ดแบบหมุนเวียน
- บาร์โค้ดแบบคงที่: หากระบุเพย์โหลดบาร์โค้ดไว้
การระบุเพย์โหลดการแลกสิทธิ์หลายรายการช่วยให้มั่นใจได้ว่าผู้ใช้ทุกคนจะได้รับการสนับสนุน แต่อาจส่งผลกระทบต่อความปลอดภัย โดยเฉพาะอย่างยิ่ง การใช้บาร์โค้ดแบบคงที่เป็นอุปกรณ์สํารองสําหรับบาร์โค้ดหมุนเวียนซึ่งจะข้ามประโยชน์ด้านความปลอดภัยส่วนใหญ่จากการใช้บาร์โค้ดแบบหมุน สํารองของบาร์โค้ดแบบคงที่จะแสดงในมุมมองเว็บหรือบนไคลเอ็นต์ที่ไม่รองรับบาร์โค้ดแบบหมุนเท่านั้น นับตั้งแต่วันนี้ เราหวังว่าไคลเอ็นต์ Google Wallet ทั้งหมดจะรองรับบาร์โค้ดแบบหมุนเวียน
บันทึกโฟลว์
Google Wallet API มีขั้นตอนหลายขั้นตอน ดังนี้
- สร้างชั้นโดยสารตามเวลาออมแสงหรือล่วงหน้า
- ส่งออบเจ็กต์ที่สมบูรณ์ใน JWT หรือบันทึกออบเจ็กต์ไว้ล่วงหน้า จากนั้นอ้างอิงออบเจ็กต์ด้วยรหัสใน JWT
- การอัปเดตออบเจ็กต์หลังจากที่บันทึกแล้ว
ช่อง rotatingBarcode ที่เสนอจะเข้ากันกับกระบวนการเหล่านี้ทั้งหมด แต่หากต้องการปรับปรุงความปลอดภัย เราขอแนะนําดังนี้
-
เรียก API ของ
object:insert
เพื่อแทรกบัตรไปยังเซิร์ฟเวอร์ Google Wallet และกําหนดค่าปุ่ม "เพิ่มลงใน Google Wallet" เพื่ออ้างอิงถึงออบเจ็กต์ที่ระบุด้วยรหัสใน JWT ซึ่งจะช่วยให้มั่นใจว่า JWT ที่ได้ไม่มีคีย์ลับของบาร์โค้ดที่หมุน - ใช้คีย์ข้อมูลลับ OTP ที่มีขอบเขตเป็นบัตรผ่านเดียว
- คาดว่าคีย์จะใช้งานได้ตลอดอายุการใช้งานของบัตร เว้นแต่จะมีการอัปเดต เราคาดว่าจะไม่อัปเดตคีย์นี้ในด้านความถี่ในระหว่างการดําเนินการตามปกติ
แผนภาพลําดับต่อไปนี้แสดงโฟลว์ระหว่างผู้ดําเนินการต่างๆ สําหรับการผสานรวมทั่วไป
