การหมุนเวียนบาร์โค้ด

บทนำ

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

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

บันทึกโฟลว์

Google Wallet API มีขั้นตอนต่างๆ ดังนี้

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

ฟิลด์ RotatingBarcode ที่เสนอใช้ได้กับขั้นตอนเหล่านี้ทั้งหมด แต่เพื่อปรับปรุงความปลอดภัย เราขอแนะนำการดำเนินการดังต่อไปนี้

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

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

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