Wstęp
Obracające się kody kreskowe wyglądają tak samo jak zwykłe kody kreskowe, ale zmieniają się okresowo, zwykle co minutę, a terminal/czytnik jest zaprogramowany tak, by akceptować tylko najnowsze kody. Te środki bezpieczeństwa zmniejszają ryzyko związane ze zrzutami ekranu kodów kreskowych, w szczególności przy kradzieży biletów lub ich nieautoryzowanej sprzedaży. Obracające się kody kreskowe mogą być też stosowane w przypadku urządzeń, które nie obsługują smart tap z powodu braku obsługi NFC (brak sprzętu lub wyłączonego oprogramowania).
Dokumentacja API
Szczegóły techniczne dotyczące obracania kodów kreskowych znajdziesz w artykule o typie RotatingBarcode
.
Przykładowy ładunek
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" } ] } } } |
Mechanizmy awaryjne
Na urządzeniu użytkownika w danym momencie używany jest tylko 1 mechanizm realizacji promocji. Zależy to od konfiguracji karty i możliwości urządzenia. Używane są te typy promocji (w kolejności według priorytetu):
-
Smart tap: jeśli określono ładunek smart tap i urządzenie obsługuje komunikację NFC/HCE
- Użytkownik może ją zastąpić, klikając „Pokaż kod”. Spowoduje to wymuszenie wyświetlenia obracającego się kodu kreskowego lub statycznego kodu kreskowego.
- Obracający się kod kreskowy: jeśli określono obracający się ładunek kodu kreskowego
- Statyczny kod kreskowy: jeśli określono ładunek kodu kreskowego
Określenie wielu ładunków wykorzystania może zapewnić obsługę wszystkim użytkownikom, ale może mieć wpływ na bezpieczeństwo. W szczególności zastosowanie statycznego kodu kreskowego jako opcji zastępczej w przypadku obracającego się kodu neguje większość korzyści związanych z bezpieczeństwem takich kodów. Zastępcza statyczny kod kreskowy będzie wyświetlany tylko w widokach witryny lub na klientach, które nie obsługują obracających się kodów kreskowych. Od dzisiaj wszyscy klienci Portfela Google powinni obsługiwać kody kreskowe zmieniające się.
Zapisz przepływ
W interfejsie Google Wallet API jest dostępnych kilka procesów, w tym:
- Tworzenie klas transportu publicznego – oszczędzanie lub z wyprzedzeniem
- Wysyłanie kompletnych obiektów w tokenie JWT lub zapisywanie obiektów z wyprzedzeniem i odwoływanie się do nich za pomocą identyfikatora w tokenie JWT
- aktualizowanie obiektów po ich zapisaniu.
Proponowane pole rotatingBarcode jest zgodne ze wszystkimi tymi przepływami, jednak aby zwiększyć bezpieczeństwo, zalecamy wykonanie tych czynności:
-
Wywołaj interfejs API
object:insert
, aby wstawić kartę na serwer Portfela Google i skonfigurować przycisk Dodaj do Portfela Google, aby odwoływał się do konkretnego obiektu za pomocą identyfikatora w tokenie JWT. Dzięki temu utworzony token JWT nie będzie zawierał tajnego klucza obracającego się kodu kreskowego. - Użyj tajnego klucza dla hasła jednorazowego, którego zakres jest ograniczony do pojedynczej karty
- Jeśli klucz nie zostanie zaktualizowany, powinien być ważny przez cały okres ważności karty. Nie oczekujemy, że ten klucz będzie aktualizowany w żadnej częstotliwości podczas normalnego działania.
Poniższy diagram przedstawia przepływ między różnymi podmiotami w typowej integracji:
![Diagram sekwencji w przypadku obracających się kodów kreskowych](https://developers-dot-devsite-v2-prod.appspot.com/static/wallet/images/rotating-barcodes-sequence-diagram.png?authuser=7&hl=pl)