Pengantar
Kode batang yang berputar terlihat seperti kode batang biasa tetapi berubah secara berkala, biasanya setiap menit, dan terminal/pembaca diprogram agar hanya menerima yang terbaru. Langkah keamanan ini mengurangi risiko yang terkait dengan tangkapan layar kode batang, khususnya pencurian tiket atau tiket tidak sah penjualan kembali. Memutar kode batang juga dapat bertindak sebagai penggantian perangkat yang tidak dapat memanfaatkan Smart Tap, karena tidak mendukung NFC (kurangnya perangkat keras, atau software dinonaktifkan).
Referensi API
Untuk detail teknis tentang Memutar Kode Batang, lihat
Jenis RotatingBarcode
.
Contoh payload
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" } ] } } } |
Mekanisme Penggantian
Pada perangkat pengguna, hanya satu mekanisme penukaran yang digunakan pada waktu tertentu, tergantung cara {i>pass <i}dikonfigurasi dan kemampuan perangkat. Dalam urutan prioritas, jenis penukaran berikut digunakan:
-
Smart Tap: Jika payload smart-tap ditentukan dan jika perangkat mendukung
NFC/HCE
- Perhatikan, ini dapat diganti oleh pengguna dengan mengklik "{i>Show code<i}", yang akan memaksa tampilan kode batang/kode batang statis yang berputar.
- Kode batang berputar: Jika payload kode batang berputar ditentukan
- Kode batang statis: Jika payload kode batang ditentukan
Menentukan beberapa payload penukaran dapat memastikan semua pengguna didukung, tetapi mungkin memiliki implikasi keamanan. Secara khusus, menggunakan{i> code<i} statis sebagai untuk kode batang yang berputar meniadakan sebagian besar manfaat keamanan dari penggunaan kode batang berputar. Penggantian kode batang statis hanya akan ditampilkan dalam tampilan web atau pada klien yang tidak mendukung pengubahan kode batang. Mulai hari ini, kami memperkirakan semua klien Google Wallet untuk mendukung rotasi kode batang.
Simpan Alur
Google Wallet API menawarkan beberapa alur, termasuk:
- Membuat kelas transportasi umum pada waktu yang tepat atau lebih awal
- Mengirim objek lengkap di JWT Anda, atau menyimpan objek sebelum waktu, kemudian mereferensikannya berdasarkan ID di JWT Anda
- Memperbarui objek setelah disimpan
Isian {i>rotatingBarcode<i} yang diusulkan kompatibel dengan semua alur ini, Namun, untuk meningkatkan keamanan, sebaiknya lakukan hal berikut:
-
Memanggil
object:insert
API untuk menyisipkan kartu ke Server Google Wallet dan konfigurasikan tombol Tambahkan ke Google Wallet untuk merujuk ke objek tertentu berdasarkan ID di JWT Anda. Hal ini memastikan bahwa JWT yang dihasilkan tidak menyertakan kunci rahasia dari kode batang yang berputar. - Gunakan kunci rahasia OTP yang dicakupkan ke satu penerusan
- Kunci tersebut, kecuali jika diperbarui, diharapkan valid selama masa aktif {i>pass <i}itu. Kami tidak mengharapkan kunci ini diperbarui pada frekuensi apa pun selama jalannya operasi secara normal.
Diagram urutan berikut mengilustrasikan alur antara berbagai aktor untuk integrasi standar: