Poniższy diagram przedstawia typowy przepływ komunikacji podczas wstawiania klasy, zapisu obiektu i aktualizacji obiektu. Wdrożenie wszystkich działań między serwerem, przeglądarką i Google Pay API for Passes jest Twoim zadaniem. Poniższy diagram przedstawia jako przykład kartę lojalnościową, ale pozostałe karty mają podobny przepływ.
![](https://developers.google.cn/static/pay/passes/images/LoyaltyFlows.png?authuser=6&hl=pl)
Typowy przepływ interfejsu API w przyciskach JS i internetowych linkach JWT
Poniżej przedstawiono bardziej szczegółowy opis tego samego procesu co na rysunku 1. Obejmuje on typowy przepływ interfejsu API w przyciskach JavaScript (JS) i tokenach sieciowych JSON (JWT):
- Wydawca karty lojalnościowej tworzy
LoyaltyClass
. - Serwer określa
LoyaltyClass
. - Serwer wykonuje żądanie
POST
, aby wstawićLoyaltyClass
na serwerze Google Pay API for Passes. - Serwer używa usługi, która tworzy token JWT dla
LoyaltyObject
w określonejLoyaltyClass
. Ten obiekt reprezentuje kartę lojalnościową użytkownika. - Serwer renderuje przycisk Zapisz w Google Pay za pomocą tokena JWT:
- W witrynach użyj naszego przycisku w JavaScript.
- W e-mailach, SMS-ach i aplikacjach użyj linku JWT z przyciskiem Zapisz w Google Pay.
- Użytkownik klika lub naciska Zapisz w Google Pay w witrynie, e-mailu, aplikacji lub SMS-ie wydawcy karty lojalnościowej.
- Użytkownik trafia na stronę docelową, na której może zapisać obiekt
LoyaltyClass
. Obiekt do zapisania jest renderowany na stronie docelowej zgodnie z tokenem JWT. Jeśli użytkownik naciśnie przycisk w aplikacji, wyświetli się prośba o zapisanie w aplikacji Google Pay. - Użytkownik klika Zapisz w Google Pay w usłudze wydawcy, aby zapisać
LoyaltyObject
. LoyaltyObject
jest wstawiany na serwerze Google i przekazywany do aplikacji Google Pay.LoyaltyObject
jest nazywany ofertą Loyalty Pass.- Wydawca karty aktualizuje dane karty:
- Wydawca karty lojalnościowej wykonuje żądanie
GET
dotycząceLoyaltyObject
przy użyciuObject.id
. - Wydawca karty lojalnościowej aktualizuje
LoyaltyObject
. - Wydawca karty lojalnościowej wykonuje żądanie
PUT
lubPATCH
, aby wstawić zaktualizowanyLoyaltyObject
na serwerze Google Pay API for Passes. LoyaltyObject
jest przekazywany do aplikacji Google Pay.
Skrócona odmiana tokena JWT
Ze względu na limity długości w przeglądarkach tokeny JWT w linkach internetowych nie mogą być dłuższe niż 1800 znaków. Jeśli jest to problem, być może warto wstawić klasę i obiekt wcześniej. Wtedy token JWT będzie musiał zawierać tylko pole identyfikatora obiektu.
Poniższy diagram przedstawia przepływ interfejsu API, który ma na celu dodanie przycisku Zapisz w Google Pay do e-maila lub SMS-a.
![](https://developers.google.cn/static/pay/passes/images/skinny-jwt-variation.png?authuser=6&hl=pl)
Przepływ interfejsu API z żądaniem POST tokena JWT
Często trudno jest wdrożyć backend niezbędny do utworzenia i wstawienia klasy przed zapisem obiektu, ale tokeny JWT zwykle przekraczają limit 1800 znaków. Ta metoda najlepiej sprawdza się przy biletach na wydarzenia i kartach pokładowych, ponieważ dla nich można tworzyć wiele klas.
Oto przykładowy przepływ z klasą lotu:
- Serwer tworzy token JWT dla
FlightObject
iFlightClass
. Oba są zdefiniowane w kodzie JSON, aFlightObject
odwołuje się doFlightClass
. - Token JWT jest wysyłany z serwera do aplikacji klienckiej, w której wyświetla się przycisk Zapisz w Google Pay. Przycisk musi być zgodny ze wskazówkami dotyczącymi marki.
- Użytkownik klika przycisk Zapisz w Google Pay w aplikacji klienckiej.
- Wysyłane jest żądanie
POST
do punktu końcowego tokena JWT. Powoduje to wstawienie identyfikatorów klas i obiektów. Jeśli identyfikatory klas lub obiektów w tokenie JWT są już obecne w systemie, nie zostaną wstawione ponownie. Informacje o tym, jak aktualizować obecne klasy i obiekty, znajdziesz w dokumentacji API. Jeśli zostały już one wstawione, wystąpi błąd. - Zwrócona odpowiedź identyfikatora URI otwiera się u użytkownika, dzięki czemu może on zapisać kartę. Ten identyfikator jest ważny tylko przez tydzień po zwróceniu.
- Wysyłane jest żądanie
Aby wdrożyć interfejs API, przeczytaj artykuł Użycie metody żądania POST tokena JWT.
![](https://developers.google.cn/static/pay/passes/images/jwt-post-request-flow.png?authuser=6&hl=pl)
Na rysunku 3 nie ma strzałek między Twoim serwerem i serwerem Google w przepływie zapisywania. To podstawowa różnica między żądaniem POST tokena JWT a linkiem JWT i metodą intencji. Zalecamy jednak wdrożenie aktualizacji kart z użyciem komunikacji między serwerami.