บาร์โค้ดแบบหมุน

บทนำ

บาร์โค้ดมีรูปแบบคล้ายกับบาร์โค้ดปกติ แต่จะเปลี่ยนแปลงเป็นระยะ ๆ มักเกิดขึ้นทุกนาที และเทอร์มินัล/โปรแกรมอ่านหน้าจอถูกตั้งค่าให้ยอมรับเฉพาะโค้ดล่าสุดเท่านั้น มาตรการรักษาความปลอดภัยนี้ช่วยลดความเสี่ยงที่เกี่ยวข้องกับการสกรีนบาร์โค้ด โดยเฉพาะการโจรกรรมตั๋วหรือการขายตั๋วที่ไม่ได้รับอนุญาต บาร์โค้ดแบบสับเปลี่ยนได้เป็นทางเลือกสํารองสําหรับอุปกรณ์ที่ใช้ประโยชน์จากการแตะอัจฉริยะไม่ได้ เนื่องจากระบบไม่รองรับ 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 รายการเท่านั้น ทั้งนี้ขึ้นอยู่กับการกําหนดค่าบัตรและความสามารถของอุปกรณ์ ระบบจะใช้การแลกสิทธิ์ประเภทต่อไปนี้ โดยเรียงตามลําดับความสําคัญ

  1. Smart Tap: หากมีการระบุเพย์โหลด Smart Tap และอุปกรณ์รองรับ NFC/HCE
    • โปรดทราบว่าผู้ใช้จะลบล้างค่านี้ได้โดยคลิก "แสดงโค้ด" ซึ่งจะบังคับให้แสดงบาร์โค้ดแบบหมุน/บาร์โค้ดแบบคงที่
  2. การหมุนบาร์โค้ด: หากมีการระบุเพย์โหลดบาร์โค้ดแบบหมุนเวียน
  3. บาร์โค้ดแบบคงที่: หากระบุเพย์โหลดบาร์โค้ดไว้

การระบุเพย์โหลดการแลกสิทธิ์หลายรายการช่วยให้มั่นใจได้ว่าผู้ใช้ทุกคนจะได้รับการสนับสนุน แต่อาจส่งผลกระทบต่อความปลอดภัย โดยเฉพาะอย่างยิ่ง การใช้บาร์โค้ดแบบคงที่เป็นอุปกรณ์สํารองสําหรับบาร์โค้ดหมุนเวียนซึ่งจะข้ามประโยชน์ด้านความปลอดภัยส่วนใหญ่จากการใช้บาร์โค้ดแบบหมุน สํารองของบาร์โค้ดแบบคงที่จะแสดงในมุมมองเว็บหรือบนไคลเอ็นต์ที่ไม่รองรับบาร์โค้ดแบบหมุนเท่านั้น นับตั้งแต่วันนี้ เราหวังว่าไคลเอ็นต์ Google Wallet ทั้งหมดจะรองรับบาร์โค้ดแบบหมุนเวียน

บันทึกโฟลว์

Google Wallet API มีขั้นตอนหลายขั้นตอน ดังนี้

  • สร้างชั้นโดยสารตามเวลาออมแสงหรือล่วงหน้า
  • ส่งออบเจ็กต์ที่สมบูรณ์ใน JWT หรือบันทึกออบเจ็กต์ไว้ล่วงหน้า จากนั้นอ้างอิงออบเจ็กต์ด้วยรหัสใน JWT
  • การอัปเดตออบเจ็กต์หลังจากที่บันทึกแล้ว

ช่อง rotatingBarcode ที่เสนอจะเข้ากันกับกระบวนการเหล่านี้ทั้งหมด แต่หากต้องการปรับปรุงความปลอดภัย เราขอแนะนําดังนี้

  • เรียก API ของ object:insert เพื่อแทรกบัตรไปยังเซิร์ฟเวอร์ Google Wallet และกําหนดค่าปุ่ม "เพิ่มลงใน Google Wallet" เพื่ออ้างอิงถึงออบเจ็กต์ที่ระบุด้วยรหัสใน JWT ซึ่งจะช่วยให้มั่นใจว่า JWT ที่ได้ไม่มีคีย์ลับของบาร์โค้ดที่หมุน
  • ใช้คีย์ข้อมูลลับ OTP ที่มีขอบเขตเป็นบัตรผ่านเดียว
  • คาดว่าคีย์จะใช้งานได้ตลอดอายุการใช้งานของบัตร เว้นแต่จะมีการอัปเดต เราคาดว่าจะไม่อัปเดตคีย์นี้ในด้านความถี่ในระหว่างการดําเนินการตามปกติ

แผนภาพลําดับต่อไปนี้แสดงโฟลว์ระหว่างผู้ดําเนินการต่างๆ สําหรับการผสานรวมทั่วไป

แผนภาพลําดับสําหรับการใช้บาร์โค้ดแบบหมุน