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 screenshot kode batang, terutama pencurian tiket atau penjualan kembali tiket yang tidak sah. Memutar kode batang juga dapat berfungsi sebagai penggantian untuk perangkat yang tidak dapat memanfaatkan Smart Tap, karena tidak mendukung NFC (kurangnya hardware, 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 ketukan pintar 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 yang berputar: Jika payload kode batang yang berputar ditentukan
- Kode batang statis: Jika payload kode batang ditentukan
Menentukan beberapa payload penukaran dapat memastikan semua pengguna didukung, tetapi dapat 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 berharap semua klien Google Wallet mendukung kode batang yang berputar.
Menyimpan Alur
Google Wallet API menawarkan beberapa alur, termasuk:
- Membuat class kartu voucher di waktu luang, atau di awal
- Mengirim objek lengkap dalam JWT, atau menyimpan objek terlebih dahulu, lalu mereferensikannya berdasarkan ID dalam JWT
- Memperbarui objek setelah disimpan
Kolom rotatingBarcode yang diusulkan kompatibel dengan semua alur ini, tetapi untuk meningkatkan keamanan, sebaiknya lakukan hal berikut:
-
Panggil
object:insert
API untuk menyisipkan kartu ke server Google Wallet dan konfigurasikan tombol Tambahkan ke Google Wallet untuk mereferensikan objek tertentu berdasarkan ID di JWT Anda. Hal ini memastikan bahwa JWT yang dihasilkan tidak menyertakan kunci rahasia kode batang yang berputar. - Menggunakan kunci rahasia OTP yang dicakupkan ke satu kartu
- Kunci tersebut, kecuali jika diperbarui, diharapkan valid selama masa aktif {i>pass <i}itu. Kami tidak mengharapkan kunci ini diperbarui sesuai frekuensi selama jalannya operasi secara normal.
Diagram urutan berikut mengilustrasikan alur antara berbagai aktor untuk integrasi standar:
