Botón web de JavaScript

La API de la Billetera de Google permite a tus usuarios agregar un objeto a la Billetera de Google desde la Web. Los usuarios pueden agregar sus tarjetas directamente desde tu sitio web.

En esta referencia, se proporcionan detalles sobre el elemento HTML g:savetoandroidpay que procesa un botón de la API de la Billetera de Google, así como el token web JSON que describe tu servicio web a Google.

JavaScript API de Google Wallet

Para analizar de forma automática las etiquetas HTML g:savetoandroidpay en la carga, incluye el código JavaScript estándar

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

Para aplicaciones AJAX y procesamiento explícito de los botones de la API de la Billetera de Google, incluye el parámetro "parsetags": "explicit".

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

g:savetoandroidpay etiqueta HTML

La etiqueta del espacio de nombres g:savetoandroidpay define la posición y varios atributos del botón Agregar a la Billetera de Google. Usa esta etiqueta si procesas HTML y JWT en el lado del servidor.

<g:savetoandroidpay jwt="JWT" onsuccess="successHandler" onfailure="failureHandler" />
Campo Tipo Obligatoria Descripción
height String N Altura del botón para mostrar. Los valores posibles son small (30 px de alto) y standard (38 px de alto). El valor predeterminado de height es small. Consulta los botones de la API de la Billetera de Google para ver ejemplos de botones con diferentes configuraciones de height.
jwt String JWT de la API de Google Wallet
onsuccess String N Nombre de string de la función de controlador de devolución de llamada para guardar correctamente.
onfailure String N Nombre de string de la función de controlador de devoluciones de llamada para guardar errores. A esta función se le pasa un objeto de error que contiene un errorCode y un errorMessage.
onprovidejwt String N Nombre de string de la función de controlador de JWT proporcionado. El propósito de esta función es interceptar y posiblemente manipular los datos de JWT antes de que el objeto se agregue a la Billetera de Google. Esta función no acepta parámetros y debe mostrar el JWT como string. Cuando implementas el controlador de eventos, los datos JWT originales se pueden recuperar en el campo this.getOpenParams().renderData.userParams.jwt.
size String N Ancho del botón para mostrar. Puedes configurar size como matchparent para que el ancho coincida con el ancho del elemento superior. También puedes dejar size sin definir de modo que el ancho se extienda para ajustarse al ancho de la configuración text. Consulta los botones de la API de la Billetera de Google para ver ejemplos de botones con diferentes configuraciones de size.
text String N Funciones obsoletas
textsize String N Cuando se especifica la textsize=large, se muestra un tamaño de texto y un tamaño de botón aumentados de forma significativa, para casos con requisitos especiales de IU.
theme String N Tema del botón para mostrar Los valores posibles son: dark y light. El tema predeterminado es dark. Consulta los botones de la API de la Billetera de Google para ver ejemplos de botones con diferentes configuraciones de theme.

JWT de la API de Google Wallet

El JWT de la API de Google Wallet define los objetos y las clases que se guardarán.

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"]
}

Nota: Estos JWT se firman con RSA-SHA256. La clave de firma es la clave generada de la cuenta de servicio de OAuth.

Campo Tipo Obligatoria Descripción
iss String Tu dirección de correo electrónico de cuenta de servicio de OAuth 2.0 generada
aud String Público. El público para los objetos de la API de la Billetera de Google siempre será google.
typ String Tipo de JWT. El público para los objetos de la API de la Billetera de Google siempre será savetoandroidpay.
iat Número entero Se emite en un tiempo en segundos desde la época.
payload Objeto Payload.
payload.eventTicketClasses Array N Clase del boleto del evento para guardar.
payload.eventTicketObjects Array N Objeto de la entrada del evento para guardar.
payload.flightClasses Array N Clase de vuelo para guardar.
payload.flightObjects Array N Vuelo para guardar.
payload.giftCardClasses Array N Se guardó la clase de tarjeta de regalo.
payload.giftCardObjects Array N Objeto de la tarjeta de regalo para guardar.
payload.loyaltyClasses Array N Clase de lealtad para guardar
payload.loyaltyObjects Array N Objeto de lealtad para guardar
payload.offerObjects Array N Objeto de la oferta para guardar.
payload.offerClasses Array N Clase de oferta para guardar.
payload.transitObjects Array N Transit para guardar.
payload.transitClasses Array N Clase de transporte público para guardar.
origins Array Arreglo de dominios que se deben aprobar para la funcionalidad de guardado de JWT. El botón de la API de la Billetera de Google no se procesará cuando no se defina el campo origins. Es posible que recibas el mensaje "Carga rechazada por X-Frame-Options" o "Se rechazó la visualización" en la consola del navegador cuando el campo de origen no está definido.

El JWT codificado debería ser similar al siguiente ejemplo:

eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJnb29nbGUiLCJvcmlnaW5zIjpbImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MCIsImh0dHA6Ly93d3cuZ29vZ2xlLmNvbSJdLCJpc3MiOiJzMmFwLXRvb2wuZ29vZ2xlLmNvbUBhcHBzcG90LmdzZXJ2aWNlYWNjb3VudC5jb20iLCJpYXQiOjE1NTE5ODcxNTEsInR5cCI6InNhdmV0b3dhbGxldCIsInBheWxvYWQiOnsib2ZmZXJPYmplY3RzIjpbeyJpZCI6IjMyMDI0MTMyNDE4NDM2OTk0MDEuMDFfT2ZmZXJPYmplY3RJZCJ9XX19.maHX40WWT29TC_kEb90EKQBH9AiTYAZR3153K8UI7fznVnfjVdlwsH_GKTECV3PGXdNnKCcmatUbKsONC0bxrnAHYG02kuvA1D3hSctz_amU66ntsvGIDe13mpxTzhI8fPvt9KMP1iaO7uOJuLQIHwipu4uRFAjyFaHGVaSFaP9c53qQyb_Zgyyk50M-MhH2n4kDpstNCqUJKWaadQkOWjrtMjwGzQ_ME04lbR4wb_mfK1A7Rc1UieWkxM9aMl5TOPubBKxKRRk_CqillN8XoTl9MI5RRGPuElVO28zGpYlFS6BarzDaaUfmbRZGvfF8ZiKrHZKxVrJjfZIJ2TCcDw

Función gapi.savetoandroidpay.render

Esta función te permite representar de forma explícita el botón API de Google Wallet.

gapi.savetoandroidpay.render("dom-container",{
  "jwt": "JWT",
  "onsuccess": "successHandler",
  "onfailure": "failureHandler"
});
Campo Tipo Obligatoria Descripción
dom-container String ID del contenedor para colocar el botón de la API de la Billetera de Google.
jwt String JWT que define el contenido que se guardará.
onsuccess String N Nombre de string de la función de controlador de devolución de llamada para guardar correctamente.
onfailure String N Nombre de string de la función de controlador de devoluciones de llamada para guardar errores. A esta función se le pasa un objeto de error que contiene un errorCode y un errorMessage.
onprovidejwt String N Nombre de string de la función de controlador de JWT proporcionado. El propósito de esta función es interceptar y posiblemente manipular los datos de JWT antes de que el objeto se agregue a la Billetera de Google. Esta función no acepta parámetros y debe mostrar el JWT como string. Cuando implementas el controlador de eventos, los datos JWT originales se pueden recuperar en el campo this.getOpenParams().renderData.userParams.jwt.

Códigos de error y mensajes de la API de la Billetera de Google

En las siguientes tablas, se enumeran los códigos de error y los mensajes de error predeterminados que se pasan en el objeto de error a la función de devolución de llamada de error, cuando un objeto no se guarda correctamente con el botón de JavaScript.

        {
          "errorCode": "errorCode",
          "errorMessage": "errorMessage"
        }
errorCode errorMessage
SERVICE_FAILURE Se produjo un error en el servidor de Google Wallet.
CLASS_NOT_FOUND No se encontró la clase a la que se hace referencia en el objeto.
CLASS_MISMATCH El objeto debe estar presente, del mismo tipo, y debe hacer referencia a la clase delimitada.
ORIGIN_MISMATCH El origen del botón no coincide con los especificados en la lista de orígenes.
INVALID_NUM_TYPES Se puede especificar solo un tipo de objeto.
INVALID_SIGNATURE No se pudo verificar la firma.
INVALID_DUPLICATE_IDS No se permiten los objetos o clases duplicados.
INVALID_JWT JWT no válido
INVALID_EXP_IAT JWT vencido o emitido en el futuro.
INVALID_AUD Valor no válido para el campo AUD.
INVALID_TYP Valor no válido para el campo TYP.
INVALID_NUM_OBJECTS Solo se puede especificar un objeto y una clase para las tarjetas de lealtad, las tarjetas de regalo y las ofertas.
MALFORMED_ORIGIN_URL El formato de URL de origen es incorrecto. La URL debe contener un protocolo y un dominio.
MISSING_ORIGIN Se debe especificar el origen.
MISSING_FIELDS Faltan campos obligatorios en el objeto o la clase que está cerrado.

Localización

El idioma del botón JavaScript cambia según los siguientes criterios:

  1. Si el usuario accedió a Google, el botón se procesa en el idioma preferido que aparece en el perfil de la Cuenta de Google del usuario. Un usuario puede leer Cómo cambiar el idioma para saber cómo cambiarlo.
  2. Si el usuario no accedió a Google, el botón usa el valor ACCEPT-LANGUAGE en el encabezado HTTP.

Si notas que el botón no se procesa en el idioma correcto según la lógica anterior o si la redacción no es natural, comunícate con nuestro equipo de asistencia al cliente.