Botão da Web do JavaScript

Com a API Google Wallet, os usuários adicionam um objeto da Web à Carteira do Google. Os usuários podem salvar os cartões diretamente pelo site.

Esta referência inclui detalhes sobre o elemento HTML g:savetoandroidpay, que renderiza um botão da API Google Wallet, e sobre o JSON Web Token, que descreve o serviço da Web para o Google.

JavaScript da API Google Wallet

Para analisar automaticamente as tags HTML g:savetoandroidpay no carregamento, inclua o JavaScript padrão.

<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 o posicionamento e vários atributos do botão "Adicionar na Carteira do Google". Use essa tag se você estiver renderizando HTML e JWTs no 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 ver 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 callbacks de falha na gravação. Essa função recebe um objeto de erro contendo 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 na 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 deixe 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 ver exemplos de botões com diferentes configurações de size.
text String N Descontinuado
textsize String N Quando textsize=large é especificado, ele exibe o tamanho de botão e o tamanho do texto drasticamente maiores, para casos com requisitos de IU especiais.
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 os 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.

Protocolo

        {
  "iss": "example_service_account@developer.gserviceaccount.com",
  "aud": "google",
  "typ": "savetoandroidpay",
  "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"]
}

Observação: estes JWTs são assinados usando RSA-SHA256. A chave de assinatura é a chave gerada pela conta de serviço do OAuth.

Campo Tipo Obrigatório Descrição
iss String S O endereço de e-mail gerado pela conta de serviço do OAuth 2.0.
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 savetoandroidpay.
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 gravação do JWT. O botão da API Google Wallet não será renderizado quando o campo origins não for definido. É possível receber uma mensagem "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

Com essa função, é possível 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 callbacks de falha na gravação. Essa função recebe um objeto de erro contendo 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 na 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

Nas tabelas a seguir, mostramos os códigos de erro e as mensagens de erro padrão transmitidos no objeto de 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 A origem precisa ser especificada.
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:

  1. Se o usuário estiver conectado ao Google, o botão será processado no idioma preferencial fornecido no perfil da Conta do Google do usuário. Consulte Alterar idioma para saber como alterar o idioma preferido da sua Conta do Google.
  2. 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 é renderizado no idioma correto com base na lógica acima ou se o texto não for natural, entre em contato com nossa equipe de suporte.