مقدمه
بارکدهای چرخان مانند بارکدهای معمولی به نظر می رسند، اما به طور دوره ای، معمولاً هر دقیقه تغییر می کنند، و ترمینال/خواننده طوری برنامه ریزی شده است که فقط جدیدترین را بپذیرد. این اقدام امنیتی خطرات مربوط به اسکرین شات گرفتن بارکد، به ویژه سرقت بلیط یا فروش مجدد غیرمجاز بلیط را کاهش می دهد. بارکدهای چرخان همچنین می توانند به عنوان بازگشتی برای دستگاه هایی عمل کنند که به دلیل پشتیبانی نکردن از NFC (عدم سخت افزار یا نرم افزار غیرفعال) نمی توانند از مزیت Smart Tap استفاده کنند.
مرجع 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" } ] } } } |
مکانیسم های بازگشتی
در دستگاه کاربر، بسته به نحوه پیکربندی پاس و قابلیتهای دستگاه، تنها از یک مکانیسم بازخرید در یک زمان معین استفاده میشود. به ترتیب اولویت، از انواع بازخرید زیر استفاده می شود:
- Smart Tap: اگر یک محموله ضربه ای هوشمند مشخص شده باشد و اگر دستگاه از NFC/HCE پشتیبانی می کند
- توجه داشته باشید، کاربر میتواند با کلیک کردن روی «نمایش کد»، این مورد را لغو کند، که نمایش بارکد در حال چرخش/بارکد ثابت را مجبور میکند.
- بارکد چرخشی: اگر بار بارکد چرخشی مشخص شده باشد
- بارکد استاتیک: اگر بار کد بارکد مشخص شده باشد
تعیین بارهای بازخرید چندگانه می تواند اطمینان حاصل کند که همه کاربران پشتیبانی می شوند اما ممکن است پیامدهای امنیتی داشته باشد. به طور خاص، استفاده از یک بارکد ثابت به عنوان جایگزین برای بارکد چرخان، بسیاری از مزایای امنیتی استفاده از بارکدهای چرخان را نفی می کند. بازگشتی بارکد ثابت فقط در نماهای وب یا در کلاینت هایی نشان داده می شود که از بارکدهای چرخشی پشتیبانی نمی کنند. از امروز، انتظار داریم همه مشتریان Google Wallet از بارکدهای چرخشی پشتیبانی کنند.
ذخیره جریان
Google Wallet API چندین جریان را ارائه می دهد، از جمله:
- ایجاد کلاس های شبانه روزی در زمان صرفه جویی یا زودتر از موعد
- ارسال اشیاء کامل در JWT یا ذخیره اشیاء قبل از زمان و سپس ارجاع آنها با شناسه در JWT شما
- به روز رسانی اشیاء پس از ذخیره شدن
فیلد بارکد چرخشی پیشنهادی با تمام این جریانها سازگار است، اما به منظور بهبود امنیت، موارد زیر را پیشنهاد میکنیم:
- برای درج پاس به سرور Google Wallet
object:insert
API را فراخوانی کنید و دکمه Add to Google Wallet را برای ارجاع به شی خاص با شناسه در JWT خود پیکربندی کنید. این تضمین می کند که JWT حاصل کلید مخفی بارکد چرخان را شامل نمی شود. - از یک کلید مخفی OTP استفاده کنید که به یک پاس اختصاص داده شده است
- انتظار می رود که کلید، مگر اینکه به روز شود، برای طول عمر پاس معتبر باشد. ما انتظار نداریم که این کلید در هیچ فرکانسی در طول کارکرد عادی به روز شود.
نمودار توالی زیر جریان بین بازیگران مختلف را برای یک ادغام معمولی نشان می دهد:
![نمودار توالی استفاده از بارکدهای چرخشی](https://developers.google.cn/static/wallet/images/rotating-barcodes-sequence-diagram.png?hl=fa)