Xoay mã vạch

Giới thiệu

Mã vạch xoay trông giống như mã vạch thông thường nhưng thay đổi định kỳ, thường là mỗi phút và thiết bị đầu cuối/máy đọc được lập trình để chỉ chấp nhận mã vạch gần đây nhất. Biện pháp bảo mật này giúp giảm các rủi ro liên quan đến việc chụp ảnh màn hình mã vạch, đặc biệt là hành vi trộm vé hoặc bán lại vé trái phép. Việc xoay mã vạch cũng có thể đóng vai trò là phương án dự phòng cho các thiết bị không thể tận dụng công nghệ Chạm thông minh do không hỗ trợ NFC (thiếu phần cứng, hoặc phần mềm bị tắt).

Tài liệu tham khảo API

Để biết thông tin kỹ thuật về Mã vạch xoay, hãy xem loại RotatingBarcode.

Tải trọng mẫu

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"
        }
      ]
    }
  }
}

Cơ chế dự phòng

Trên thiết bị của người dùng, chỉ một cơ chế sử dụng được dùng tại một thời điểm nhất định, tuỳ thuộc vào cách thiết lập thẻ và vé cũng như chức năng của thiết bị. Theo thứ tự ưu tiên, các loại mã sử dụng sau đây sẽ được dùng:

  1. Chạm thông minh: Nếu tải trọng chạm thông minh được chỉ định và nếu thiết bị hỗ trợ NFC/HCE
    • Lưu ý rằng người dùng có thể ghi đè giá trị này bằng cách nhấp vào "Hiển thị mã". sẽ buộc hiển thị mã vạch/mã vạch tĩnh đang xoay.
  2. Mã vạch xoay: Nếu tải trọng mã vạch xoay được chỉ định
  3. Mã vạch tĩnh: Nếu tải trọng mã vạch được chỉ định

Việc chỉ định nhiều tải trọng đổi thưởng có thể đảm bảo tất cả người dùng đều được hỗ trợ nhưng có thể ảnh hưởng đến tính bảo mật. Cụ thể, việc sử dụng mã vạch tĩnh làm phương án dự phòng cho mã vạch xoay sẽ làm mất hầu hết các lợi ích bảo mật của việc sử dụng mã vạch xoay. Mã vạch dự phòng tĩnh sẽ chỉ xuất hiện trong các chế độ xem trên web hoặc trên các ứng dụng không hỗ trợ mã vạch xoay. Kể từ hôm nay, chúng tôi dự kiến tất cả ứng dụng khách Google Wallet hỗ trợ mã vạch xoay.

Lưu luồng

API Ví Google cung cấp một số luồng, bao gồm:

  • Tạo lớp thẻ quà tặng khi có thời gian rảnh hoặc trước khi lớp học diễn ra
  • Gửi các đối tượng hoàn chỉnh trong JWT hoặc lưu các đối tượng trước rồi tham chiếu các đối tượng đó theo mã nhận dạng trong JWT
  • Cập nhật đối tượng sau khi lưu

Trường rotatingBarcode được đề xuất tương thích với tất cả các luồng này, tuy nhiên, để cải thiện tính bảo mật, bạn nên làm như sau:

  • Gọi API object:insert để chèn thẻ và vé vào máy chủ Google Wallet và định cấu hình nút Thêm vào Google Wallet để tham chiếu đối tượng cụ thể theo mã nhận dạng trong JWT. Điều này đảm bảo rằng kết quả JWT không bao gồm khoá bí mật của mã vạch xoay.
  • Sử dụng khoá bí mật OTP có phạm vi là một thẻ và vé
  • Khoá này (trừ phi được cập nhật) dự kiến sẽ hợp lệ trong suốt thời gian sử dụng thẻ và vé. Chúng tôi không dự kiến khoá này sẽ được cập nhật theo tần suất nào trong quá trình hoạt động bình thường.

Sơ đồ trình tự sau đây minh hoạ quy trình giữa các thực thể khác nhau cho một quá trình tích hợp thông thường:

Sơ đồ trình tự sử dụng mã vạch xoay