Obracanie kodów kreskowych

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):

  1. 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.
  2. Obracający się kod kreskowy: jeśli określono obracający się ładunek kodu kreskowego
  3. 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 kart podarunkowych – szybciej 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