Przycisk w JavaScript na stronę

Google Wallet API umożliwia użytkownikom dodawanie obiektów do Portfela Google z internetu. Użytkownicy mogą dodawać karty bezpośrednio w Twojej witrynie.

Ten artykuł zawiera informacje o elemencie HTML g:savetoandroidpay, który renderuje przycisk interfejsu API Portfela Google, i tokenie sieciowym JSON, który opisuje Google Twoją usługę internetową.

JavaScript API Portfela Google

Aby automatycznie przeanalizować tagi HTML g:savetoandroidpay przy wczytywaniu, dodaj standardowy kod JavaScript.

<script src="https://apis.google.com/js/platform.js" type="text/javascript"></script>

W przypadku aplikacji AJAX i jawnego renderowania przycisków interfejsu API Portfela Google dołącz parametr "parsetags": "explicit".

<script src="https://apis.google.com/js/platform.js" type="text/javascript">
  {"parsetags": "explicit"}
</script>

Tag HTML g:savetoandroidpay

Tag przestrzeni nazw g:savetoandroidpay definiuje miejsce docelowe i różne atrybuty przycisku Dodaj do Portfela Google. Użyj tego tagu, jeśli renderujesz kod HTML i tokeny JWT po stronie serwera.

<g:savetoandroidpay jwt="JWT" onsuccess="successHandler" onfailure="failureHandler" />
Pole Typ Wymagane Opis
height Ciąg znaków N Wysokość wyświetlanego przycisku. Możliwe wartości to small (wysokość 30 pikseli) i standard (wysokość 38 pikseli). height ma domyślnie wartość small. Przykładowe przyciski z różnymi ustawieniami parametru height znajdziesz w opisie przycisków interfejsu API Portfela Google.
jwt Ciąg znaków Y JWT API Portfela Google.
onsuccess Ciąg znaków N Ciąg znaków z nazwą funkcji obsługi wywołań zwrotnych po zapisaniu.
onfailure Ciąg znaków N Ciąg znaków z nazwą funkcji obsługi wywołań zwrotnych w przypadku niepowodzenia zapisu. Do tej funkcji jest przekazywany obiekt błędu zawierający errorCode i errorMessage.
onprovidejwt Ciąg znaków N Ciąg znaków z nazwą funkcji obsługi udostępniania JWT. Ta funkcja służy do przechwytywania danych JWT i ewentualnego manipulowania nimi przed dodaniem obiektu do Portfela Google. Ta funkcja nie przyjmuje żadnych parametrów i musi zwrócić token JWT w postaci ciągu znaków. Podczas implementowania modułu obsługi zdarzeń oryginalne dane JWT można pobrać z pola this.getOpenParams().renderData.userParams.jwt.
size Ciąg znaków N Szerokość wyświetlanego przycisku. Możesz ustawić size na matchparent, aby szerokość była taka sama jak szerokość elementu nadrzędnego. Możesz też pozostawić size bez wartości, aby dopasować przycisk do szerokości w ustawieniu text. Przykładowe przyciski z różnymi ustawieniami parametru size znajdziesz w opisie przycisków interfejsu API Portfela Google.
text Ciąg znaków N Wycofano
textsize Ciąg znaków N Jeśli podasz textsize=large, rozmiar tekstu i przycisków znacznie się zwiększy, co może być przydatne w przypadku specjalnych wymagań interfejsu.
theme Ciąg znaków N Motyw wyświetlanego przycisku. Możliwe wartości to dark i light. Domyślny motyw to dark. Przykłady przycisków z różnymi ustawieniami parametru theme znajdziesz w opisie przycisków interfejsu API Portfela Google.

JWT API Portfela Google

Token JWT API Portfela Google definiuje obiekty i klasy, które mają zostać zapisane.

Zapis JSON

{
  "iss": "example_service_account@developer.gserviceaccount.com",
  "aud": "google",
  "typ": "savetowallet",
  "iat": 1368029586,
  "payload": {
    "eventTicketClasses": [{
      ... //Event ticket Class JSON
    }],
    "eventTicketObjects": [{
      // Event ticket Object JSON
    }],
    "flightClasses": [{
      // Flight Class JSON
    }],
    "flightObjects": [{
      // Flight Object JSON
    }],
    "giftCardClasses": [{
      // Gift card Class JSON
    }],
    "giftCardObjects": [{
      // Gift card Object JSON
    }],
    "loyaltyClasses": [{
      // Loyalty Class JSON
    }],
    "loyaltyObjects": [{
      // Loyalty Object JSON
    }],
    "offerClasses": [{
      // Offer Class JSON
    }],
    "offerObjects": [{
      // Offer Object JSON
    }],
    "transitClasses": [{
      // Transit Class JSON
    }],
    "transitObjects": [{
      // Transit Object JSON
    }]
  },
  "origins": ["http://baconrista.com", "https://baconrista.com"]
}

Pola

Pole Typ Wymagane Opis
iss Ciąg znaków Y Adres e-mail wygenerowany przez konto usługi Google Cloud.
aud Ciąg znaków Y Odbiorcy. Odbiorcą obiektów interfejsu Google Wallet API będzie zawsze google.
typ Ciąg znaków Y Typ tokena JWT. Odbiorcą obiektów interfejsu Google Wallet API będzie zawsze savetowallet.
iat Liczba całkowita Y Czas wydania w sekundach od początku epoki.
payload Obiekt Y Obiekt ładunku.
payload.eventTicketClasses Tablica N Klasa biletu na wydarzenie, która ma być zapisana.
payload.eventTicketObjects Tablica N Obiekt biletu na wydarzenie, który ma być zapisany.
payload.flightClasses Tablica N Klasa lotu do zapisania.
payload.flightObjects Tablica N Obiekt lotu do zapisania.
payload.giftCardClasses Tablica N Klasa karty podarunkowej do zapisania.
payload.giftCardObjects Tablica N Obiekt karty podarunkowej do zapisania.
payload.loyaltyClasses Tablica N Klasa lojalnościowa do zapisania.
payload.loyaltyObjects Tablica N Obiekt lojalnościowy do zapisania.
payload.offerObjects Tablica N Obiekt oferty specjalnej do zapisania.
payload.offerClasses Tablica N Zaproponuj zajęcia do zapisania.
payload.transitObjects Tablica N Obiekt transportu publicznego do zapisania.
payload.transitClasses Tablica N Klasa biletu do zapisania.
origins Tablica Y Tablica domen do zatwierdzenia na potrzeby funkcji zapisywania JWT. Przycisk interfejsu Google Wallet API nie wyświetla się, jeśli pole origins nie jest określone. Jeśli pole „origins” nie będzie ustawione, w konsoli przeglądarki może wyświetlić się komunikat o odrzuceniu przez ustawienie X-Frame-Options lub o nieudanej próbie wyświetlenia.

Zakodowany token JWT powinien wyglądać podobnie do tego:

eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJnb29nbGUiLCJvcmlnaW5zIjpbImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MCIsImh0dHA6Ly93d3cuZ29vZ2xlLmNvbSJdLCJpc3MiOiJzMmFwLXRvb2wuZ29vZ2xlLmNvbUBhcHBzcG90LmdzZXJ2aWNlYWNjb3VudC5jb20iLCJpYXQiOjE1NTE5ODcxNTEsInR5cCI6InNhdmV0b3dhbGxldCIsInBheWxvYWQiOnsib2ZmZXJPYmplY3RzIjpbeyJpZCI6IjMyMDI0MTMyNDE4NDM2OTk0MDEuMDFfT2ZmZXJPYmplY3RJZCJ9XX19.maHX40WWT29TC_kEb90EKQBH9AiTYAZR3153K8UI7fznVnfjVdlwsH_GKTECV3PGXdNnKCcmatUbKsONC0bxrnAHYG02kuvA1D3hSctz_amU66ntsvGIDe13mpxTzhI8fPvt9KMP1iaO7uOJuLQIHwipu4uRFAjyFaHGVaSFaP9c53qQyb_Zgyyk50M-MhH2n4kDpstNCqUJKWaadQkOWjrtMjwGzQ_ME04lbR4wb_mfK1A7Rc1UieWkxM9aMl5TOPubBKxKRRk_CqillN8XoTl9MI5RRGPuElVO28zGpYlFS6BarzDaaUfmbRZGvfF8ZiKrHZKxVrJjfZIJ2TCcDw

funkcja gapi.savetoandroidpay.render

Ta funkcja umożliwia jawne wyrenderowanie przycisku Google Wallet API.

gapi.savetoandroidpay.render("dom-container",{
  "jwt": "JWT",
  "onsuccess": "successHandler",
  "onfailure": "failureHandler"
});
Pole Typ Wymagane Opis
dom-container Ciąg znaków Y Identyfikator kontenera przycisku Google Wallet API.
jwt Ciąg znaków Y Token JWT określający zawartość do zapisania.
onsuccess Ciąg znaków N Ciąg znaków z nazwą funkcji obsługi wywołań zwrotnych po zapisaniu.
onfailure Ciąg znaków N Ciąg znaków z nazwą funkcji obsługi wywołań zwrotnych w przypadku niepowodzenia zapisu. Do tej funkcji jest przekazywany obiekt błędu zawierający errorCode i errorMessage.
onprovidejwt Ciąg znaków N Ciąg znaków z nazwą funkcji obsługi udostępniania JWT. Ta funkcja służy do przechwytywania danych JWT i ewentualnego manipulowania nimi przed dodaniem obiektu do Portfela Google. Ta funkcja nie przyjmuje żadnych parametrów i musi zwrócić token JWT w postaci ciągu znaków. Podczas implementowania modułu obsługi zdarzeń oryginalne dane JWT można pobrać z pola this.getOpenParams().renderData.userParams.jwt.

Kody błędów i komunikaty o błędach interfejsu Google Wallet API

W tabelach poniżej znajdziesz kody błędów i domyślne komunikaty o błędach, które są przekazywane w obiekcie błędu do funkcji wywołań zwrotnych, gdy nie uda się zapisać obiektu za pomocą przycisku JavaScript.

        {
          "errorCode": "errorCode",
          "errorMessage": "errorMessage"
        }
errorCode errorMessage
SERVICE_FAILURE Na serwerze Portfela Google wystąpił błąd.
CLASS_NOT_FOUND Nie znaleziono klasy, do której odwołuje się obiekt.
CLASS_MISMATCH Obiekt musi być obecny, mieć ten sam typ i odwoływać się do dołączonej klasy.
ORIGIN_MISMATCH Źródło przycisku nie odpowiada źródłom określonym na liście źródeł.
INVALID_NUM_TYPES Można określić dokładnie 1 typ obiektu.
INVALID_SIGNATURE Nie udało się zweryfikować podpisu.
INVALID_DUPLICATE_IDS Zduplikowane obiekty lub klasy są niedozwolone.
INVALID_JWT Nieprawidłowy token JWT.
INVALID_EXP_IAT Token JWT wygasł lub został wydany w przyszłości.
INVALID_AUD Nieprawidłowa wartość w polu AUD.
INVALID_TYP Nieprawidłowa wartość pola TYP.
INVALID_NUM_OBJECTS Dla kart lojalnościowych, kart podarunkowych i ofert specjalnych możesz określić dokładnie 1 obiekt i maksymalnie jedną klasę.
MALFORMED_ORIGIN_URL Nieprawidłowy format adresu URL źródła. URL musi zawierać protokół i domenę.
MISSING_ORIGIN Musisz określić źródło.
MISSING_FIELDS W dołączonym obiekcie lub klasie brakuje wymaganych pól.

Lokalizacja

Język przycisku JavaScript zmienia się w zależności od następujących kryteriów:

  1. Jeśli użytkownik jest zalogowany w Google, przycisk wyświetla się w preferowanym języku podanym w profilu konta Google użytkownika. Użytkownik może wybrać Zmień język, aby dowiedzieć się, jak zmienić język konta Google.
  2. Jeśli użytkownik nie jest zalogowany w Google, przycisk używa wartości ACCEPT-LANGUAGE w nagłówku HTTP.

Jeśli przycisk nie renderuje się we właściwym języku zgodnie z powyższymi założeniami lub jeśli wyświetla się nietypowy tekst, skontaktuj się z naszym zespołem pomocy.