Com a API Google Wallet, os usuários podem adicionar um objeto da Web à Carteira do Google. Os usuários podem adicionar os cartões diretamente pelo site.
Esta referência fornece detalhes sobre o elemento HTML g:savetoandroidpay que
renderiza um botão da API Google Wallet
e o JSON Web Token
que descreva seu serviço da Web para o Google.
JavaScript da API Google Wallet
Para analisar automaticamente as tags HTML g:savetoandroidpay no carregamento, inclua o parâmetro
    JavaScript
<script src="https://apis.google.com/js/platform.js" type="text/javascript"></script>
Para aplicativos AJAX e renderização explícita dos botões da API Google Wallet, inclua o parâmetro "parsetags": "explicit".
<script src="https://apis.google.com/js/platform.js" type="text/javascript">
  {"parsetags": "explicit"}
</script>Tag HTML g:savetoandroidpay
    A tag de namespace g:savetoandroidpay define
      posicionamento e vários atributos da opção
      Botão "Carteira do Google".  Use essa tag se você estiver renderizando HTML e JWTs
      lado do servidor.
<g:savetoandroidpay jwt="JWT" onsuccess="successHandler" onfailure="failureHandler" />
| Campo | Tipo | Obrigatório | Descrição | 
|---|---|---|---|
height | 
        String | N | Altura do botão a ser exibido.  Os valores possíveis são: small (30 px de altura) e
          standard (38 px de altura). O padrão de height é small.
          Consulte os botões da API Google Wallet.
          para conferir exemplos de botões com diferentes configurações de height. | 
      
jwt | 
        String | S | JWT da API Google Wallet. | 
onsuccess | 
        String | N | String com nome da função gerenciadora de callback de sucesso na gravação. | 
onfailure | 
        String | N | Nome da string da função do gerenciador de callback de falha na gravação. Essa função recebe um que contém um errorCode e errorMessage. | 
onprovidejwt | 
        String | N | Nome da string da função do gerenciador JWT fornecido. O objetivo dessa função é
        interceptar e talvez manipular os dados do JWT antes que o objeto seja adicionado à Carteira do Google.
        Essa função não recebe nenhum parâmetro e precisa retornar o JWT como String.
        Ao implementar o manipulador de eventos, os dados do JWT originais podem ser recuperados
        no campo this.getOpenParams().renderData.userParams.jwt. | 
      
size | 
        String | N | Largura do botão a ser exibido.  Você pode definir size como matchparent
        para que a largura corresponda à largura do elemento pai. Ou saia do size
        indefinido para que a largura se estenda para se ajustar à largura da configuração de text.
        Consulte os botões da API Google Wallet.
        para conferir exemplos de botões com diferentes configurações de size. | 
      
text | 
        String | N | Suspenso | 
textsize | 
        String | N | Quando textsize=large é especificado, mostra
          o tamanho do texto aumenta drasticamente
         tamanho do botão, para casos com requisitos especiais de interface. | 
       
theme | 
        String | N | Tema do botão a ser exibido.  Os valores possíveis são: dark e
        light. O tema padrão é dark. Consulte
        Botões da API Google Wallet
        para conferir exemplos de botões com diferentes configurações de theme. | 
      
JWT da API Google Wallet
O JWT da API Google Wallet define os objetos e as classes a serem salvos.
Representação 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"] }
Campos
| Campo | Tipo | Obrigatório | Descrição | 
|---|---|---|---|
iss | 
    String | S | O endereço de e-mail gerado pela conta de serviço do Google Cloud. | 
aud | 
    String | S | Público-alvo. O público-alvo dos objetos da API Google Wallet será sempre
    google: | 
  
typ | 
    String | S | Tipo de JWT. O público-alvo dos objetos da API Google Wallet será sempre
    savetowallet: | 
  
iat | 
    Número inteiro | S | Emitido em tempo hábil, em segundos, desde o período. | 
payload | 
    Objeto | S | Objeto de payload. | 
payload.eventTicketClasses | 
    Matriz | N | Classe de ingresso de evento a ser salva. | 
payload.eventTicketObjects | 
    Matriz | N | Objeto de ingresso de evento a ser salvo. | 
payload.flightClasses | 
    Matriz | N | Classe de voo a ser salva. | 
payload.flightObjects | 
    Matriz | N | Objeto de voo a ser salvo. | 
payload.giftCardClasses | 
    Matriz | N | Classe de vale-presente a ser salva. | 
payload.giftCardObjects | 
    Matriz | N | Objeto de vale-presente a ser salvo. | 
payload.loyaltyClasses | 
    Matriz | N | Classe de fidelidade a ser salva. | 
payload.loyaltyObjects | 
    Matriz | N | Objeto de fidelidade a ser salvo. | 
payload.offerObjects | 
    Matriz | N | Objeto de oferta a ser salvo. | 
payload.offerClasses | 
    Matriz | N | Classe de oferta a ser salva. | 
payload.transitObjects | 
    Matriz | N | Objeto de transporte a ser salvo. | 
payload.transitClasses | 
    Matriz | N | Classe de transporte a ser salva. | 
origins | 
    Matriz | S | Matriz de domínios aprovados para a funcionalidade de salvamento do JWT. API Google Wallet
    O botão não será renderizado quando o campo origins não estiver definido. Você pode
    pode receber uma mensagem de
"Carregamento negado por X-Frame-Options" ou "Exibição recusada" no
    console do navegador quando o campo de origem não está definido. | 
  
O JWT codificado pode ser semelhante ao seguinte exemplo:
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJnb29nbGUiLCJvcmlnaW5zIjpbImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MCIsImh0dHA6Ly93d3cuZ29vZ2xlLmNvbSJdLCJpc3MiOiJzMmFwLXRvb2wuZ29vZ2xlLmNvbUBhcHBzcG90LmdzZXJ2aWNlYWNjb3VudC5jb20iLCJpYXQiOjE1NTE5ODcxNTEsInR5cCI6InNhdmV0b3dhbGxldCIsInBheWxvYWQiOnsib2ZmZXJPYmplY3RzIjpbeyJpZCI6IjMyMDI0MTMyNDE4NDM2OTk0MDEuMDFfT2ZmZXJPYmplY3RJZCJ9XX19.maHX40WWT29TC_kEb90EKQBH9AiTYAZR3153K8UI7fznVnfjVdlwsH_GKTECV3PGXdNnKCcmatUbKsONC0bxrnAHYG02kuvA1D3hSctz_amU66ntsvGIDe13mpxTzhI8fPvt9KMP1iaO7uOJuLQIHwipu4uRFAjyFaHGVaSFaP9c53qQyb_Zgyyk50M-MhH2n4kDpstNCqUJKWaadQkOWjrtMjwGzQ_ME04lbR4wb_mfK1A7Rc1UieWkxM9aMl5TOPubBKxKRRk_CqillN8XoTl9MI5RRGPuElVO28zGpYlFS6BarzDaaUfmbRZGvfF8ZiKrHZKxVrJjfZIJ2TCcDw
Função gapi.savetoandroidpay.render
    Essa função permite renderizar explicitamente o botão da API Google Wallet.
gapi.savetoandroidpay.render("dom-container",{
  "jwt": "JWT",
  "onsuccess": "successHandler",
  "onfailure": "failureHandler"
});| Campo | Tipo | Obrigatório | Descrição | 
|---|---|---|---|
dom-container | 
        String | S | ID do contêiner onde o botão da API Google Wallet será colocado. | 
jwt | 
        String | S | JWT que define o conteúdo a ser salvo. | 
onsuccess | 
        String | N | String com nome da função gerenciadora de callback de sucesso na gravação. | 
onfailure | 
        String | N | Nome da string da função do gerenciador de callback de falha na gravação. Essa função recebe um que contém um errorCode e errorMessage. | 
onprovidejwt | 
        String | N | Nome da string da função do gerenciador JWT fornecido. O objetivo dessa função é
        interceptar e talvez manipular os dados do JWT antes que o objeto seja adicionado à Carteira do Google.
        Essa função não recebe nenhum parâmetro e precisa retornar o JWT como String.
        Ao implementar o manipulador de eventos, os dados do JWT originais podem ser recuperados
        no campo this.getOpenParams().renderData.userParams.jwt. | 
      
Códigos de erro e mensagens da API Google Wallet
As tabelas a seguir listam os códigos e as mensagens de erro padrão transmitidos no erro para a função de callback com falha, quando um objeto não é salvo corretamente usando o botão JavaScript.
        {
          "errorCode": "errorCode",
          "errorMessage": "errorMessage"
        }errorCode | 
        errorMessage | 
      
|---|---|
SERVICE_FAILURE | 
        Ocorreu um erro no servidor da Carteira do Google. | 
CLASS_NOT_FOUND | 
        A classe referenciada no objeto não foi encontrada. | 
CLASS_MISMATCH | 
        O objeto precisa estar presente, ser do mesmo tipo e fazer referência à classe incluída. | 
ORIGIN_MISMATCH | 
        A origem do botão não corresponde à especificada na lista de origens. | 
INVALID_NUM_TYPES | 
        Exatamente um tipo de objeto pode ser especificado. | 
INVALID_SIGNATURE | 
        Não foi possível verificar a assinatura. | 
INVALID_DUPLICATE_IDS | 
        Não é permitido duplicar objetos ou classes. | 
INVALID_JWT | 
        O JWT é inválido. | 
INVALID_EXP_IAT | 
        O JWT expirou ou foi emitido no futuro. | 
INVALID_AUD | 
        O valor é inválido para o campo AUD. | 
INVALID_TYP | 
        O valor é inválido para o campo TYP. | 
INVALID_NUM_OBJECTS | 
        Exatamente um objeto e no máximo uma classe podem ser especificados para cartões de fidelidade, vales-presente e ofertas. | 
MALFORMED_ORIGIN_URL | 
        URL de origem malformado. Ele precisa conter um protocolo e um domínio. | 
MISSING_ORIGIN | 
        É necessário especificar a origem. | 
MISSING_FIELDS | 
        O objeto ou a classe incluídos não continham os campos obrigatórios. | 
Localização
O idioma no botão JavaScript é alterado com base nos seguintes critérios:
- Se o usuário estiver conectado ao Google, o botão será processado no idioma preferencial fornecido no perfil da Conta do Google de um usuário. Um usuário pode ler Mudar idioma para saber como alterar o idioma preferido da Conta do Google.
 - Se o usuário não estiver conectado ao Google, o botão usará o valor 
ACCEPT-LANGUAGE. no cabeçalho HTTP. 
Se você perceber que o botão não está renderizado no idioma correto com base na lógica acima, ou se o texto não é natural, entre em contato com nossa equipe de suporte.