Saltar al contenido

API de Google Wallet

La API de Google Wallet te permite crear, actualizar, listar y gestionar pases de Google Wallet de forma programática. Admite las mismas operaciones que realiza el creador de pases en el Panel de Control.

Utilízala para emitir tarjetas de fidelización, ofertas, tarjetas de regalo, entradas para eventos, tarjetas de embarque de vuelos, billetes de transporte y pases genéricos, y para enviar actualizaciones en tiempo real a los pases ya guardados en los dispositivos de tus usuarios.

https://apple-passkit.svc-nue.pushwoosh.com

Todos los endpoints se sirven a través de HTTPS. Las solicitudes y respuestas utilizan application/json a menos que se indique lo contrario.

Autenticación

Anchor link to

Cada solicitud debe incluir un encabezado Authorization con tu token de acceso a la API de Pushwoosh:

Authorization: Token <api-token>

La cuenta propietaria del token debe ser propietaria de la aplicación a la que hace referencia applicationCode. Una solicitud para una aplicación que pertenece a otra cuenta devuelve 403 Forbidden.

Convenciones

Anchor link to
  • Nomenclatura de campos: Los campos JSON utilizan lowerCamelCase (por ejemplo, serialNumber, hexBackgroundColor, logoUrl).
  • Campos no poblados: las respuestas incluyen todos los campos, incluso cuando están vacíos o con valor cero.
  • Identidad: el serialNumber siempre es asignado por el servidor cuando se crea un pase. Cualquier valor que envíes al crearlo se ignora. El ID de objeto completo de Google Wallet es {issuerId}.{serialNumber}.
  • Imágenes: logoUrl y heroImageUrl son URL HTTPS públicas de imágenes que Google obtiene, no archivos subidos.
  • Estilo de pase: se debe establecer exactamente un objeto de estilo (generic, offer, loyalty, eventTicket, giftCard, flight o transit) en un pase. El estilo no se puede cambiar después de la creación.

Respuestas de error

Anchor link to
Estado HTTPSignificado
400 Bad RequestArgumento no válido: falta un campo obligatorio o está mal formado.
401 UnauthorizedEncabezado Authorization faltante o no válido.
403 ForbiddenLa aplicación no pertenece a la cuenta del solicitante.
404 Not FoundNo se encontró el pase, la plantilla o la aplicación.
503 Service UnavailableEl servicio está al máximo de su capacidad o no está disponible temporalmente.
MétodoRutaDescripción
POST/api/google/pass/validateValidar una configuración de pase
POST/api/google/pass/createCrear un nuevo objeto de pase y obtener un enlace para guardarlo
POST/api/google/pass/update/{serialNumber}Actualizar un pase existente; Google entrega el cambio
GET/api/google/pass/{applicationCode}/{serialNumber}/save-linkObtener un enlace para guardar “Añadir a Google Wallet”
GET/api/google/pass/{applicationCode}/{serialNumber}Obtener un único pase
GET/api/google/passesListar todos los pases de una aplicación
POST/api/google/pass/{applicationCode}/{serialNumber}/stateActivar o invalidar un pase
DELETE/api/google/pass/{applicationCode}/{serialNumber}Eliminar un pase
GET/api/google/configObtener la configuración de Google Wallet de la aplicación
GET/api/google/templatesListar las plantillas de pase disponibles
GET/api/google/templates/{filename}Obtener una única plantilla

Crear un pase

Anchor link to

Crea la clase y el objeto del pase en Google Wallet, y luego devuelve el número de serie asignado por el servidor, el ID completo del objeto y un enlace para guardar “Añadir a Google Wallet”.

POST /api/google/pass/create

Cuerpo de la solicitud

Anchor link to
ParámetroTipoRequeridoDescripción
passobjetoEl objeto de pase que describe el pase. Se debe establecer exactamente un estilo.
userIdstringEl ID de Usuario de Pushwoosh al que se emite el pase.
applicationCodestringEl código de aplicación de Pushwoosh.
Ejemplo de solicitud
Anchor link to
{
"applicationCode": "XXXXX-XXXXX",
"userId": "user-123",
"pass": {
"hexBackgroundColor": "#3c414c",
"logoUrl": "https://cdn.acme.com/logo.png",
"loyalty": {
"programName": "Acme Rewards",
"accountName": "Jane Doe",
"accountId": "1234567890",
"pointsLabel": "Points",
"pointsBalance": "1200",
"rewardsTier": "Gold"
},
"barcode": {
"format": "QR_CODE",
"value": "1234567890"
}
}
}
CampoTipoDescripción
serialNumberstringIdentidad única asignada por el servidor del pase creado.
objectIdstringID de objeto completo de Google Wallet: {issuerId}.{serialNumber}.
saveLinkstringEnlace “Añadir a Google Wallet”: https://pay.google.com/gp/v/save/{jwt}.
messagestringMensaje de resultado.
Ejemplo de respuesta
Anchor link to
{
"serialNumber": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"objectId": "XXXXXXXXXXXXXXX.XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"saveLink": "https://pay.google.com/gp/v/save/{jwt}",
"message": "Pass created successfully"
}

Validar un pase

Anchor link to

Comprueba la configuración de un pase con los requisitos de Google sin crearlo. Útil antes de llamar a crear.

POST /api/google/pass/validate

Cuerpo de la solicitud

Anchor link to
ParámetroTipoRequeridoDescripción
passobjetoEl objeto de pase a validar.
CampoTipoDescripción
validbooleanIndica si el pase supera la validación.
errorsarray de stringsProblemas bloqueantes que deben ser solucionados.
warningsarray de stringsAdvertencias no bloqueantes.

Actualizar un pase

Anchor link to

Aplica un parche al objeto del pase con nuevo contenido. Google luego entrega la versión actualizada a cada dispositivo que guardó el pase. Opcionalmente, envía una notificación de Android con la actualización.

POST /api/google/pass/update/{serialNumber}

Parámetros de ruta

Anchor link to
ParámetroTipoDescripción
serialNumberstringEl número de serie devuelto cuando se creó el pase.

Cuerpo de la solicitud

Anchor link to
ParámetroTipoRequeridoDescripción
updatesobjetoEl objeto de pase con el nuevo contenido. El estilo no se puede cambiar.
applicationCodestringEl código de aplicación de Pushwoosh.
notifyMessagestringNoCuando no está vacío, envía una notificación push de Android con este texto a todos los que guardaron el pase. Vacío significa una actualización silenciosa.
notifyOnUpdatebooleanNoSolicita una notificación de actualización de campo. Solo los pases loyalty, eventTicket y flight realmente notifican; otros estilos aceptan la bandera pero nunca envían una. Las notificaciones se activan solo dentro de las 3 horas de una hora de inicio relevante, y Google las limita a 3 notificaciones por pase cada 24 horas.
CampoTipoDescripción
successbooleanIndica si la actualización tuvo éxito.
messagestringMensaje de resultado.

Obtener un enlace para guardar

Anchor link to

Devuelve un enlace para guardar “Añadir a Google Wallet” para un pase ya creado. El objeto del pase ya debe existir (creado a través de Crear un pase).

GET /api/google/pass/{applicationCode}/{serialNumber}/save-link

CampoTipoDescripción
saveLinkstringhttps://pay.google.com/gp/v/save/{jwt}.

Obtener un pase

Anchor link to

Devuelve un único pase almacenado, incluyendo su objeto de pase completo.

GET /api/google/pass/{applicationCode}/{serialNumber}

Devuelve { "pass": { ... } }, un único registro de pase.

Listar pases

Anchor link to

Devuelve una lista paginada y ordenada de los pases almacenados para una aplicación.

GET /api/google/passes?applicationCode=XXXXX-XXXXX&page=0&perPage=20

Parámetros de consulta

Anchor link to
ParámetroTipoRequeridoDescripción
applicationCodestringEl código de aplicación de Pushwoosh.
orderBystringNoCampo de ordenación: UPDATED (predeterminado) o CREATED.
orderDirectionstringNoDirección de ordenación: DESC (predeterminado, los más nuevos primero) o ASC.
pageintegerNoÍndice de página basado en cero. El valor predeterminado es 0.
perPageintegerNoTamaño de la página. 0 u omitido utiliza el valor predeterminado del servidor.
CampoTipoDescripción
passesarray de objetosLa página actual de registros de pase.
pageintegerEl índice de la página devuelta.
perPageintegerEl tamaño de página utilizado para esta respuesta.
totalintegerNúmero total de pases para la aplicación en todas las páginas.

Establecer el estado del pase

Anchor link to

Activa o invalida un pase. Un pase invalidado (inactivo) se mueve a la sección Pases caducados del usuario en Google Wallet; el registro se mantiene para que pueda ser reactivado.

POST /api/google/pass/{applicationCode}/{serialNumber}/state

Cuerpo de la solicitud

Anchor link to
ParámetroTipoRequeridoDescripción
activebooleantrue establece el pase en ACTIVE; false lo invalida (INACTIVE).

Devuelve un objeto vacío {} si tiene éxito.

Eliminar un pase

Anchor link to

Invalida el pase en Google y elimina su registro almacenado en Pushwoosh.

DELETE /api/google/pass/{applicationCode}/{serialNumber}

Devuelve un objeto vacío {} si tiene éxito.

Obtener configuración

Anchor link to

Devuelve el estado de la configuración de Google Wallet para una aplicación.

GET /api/google/config?applicationCode=XXXXX-XXXXX

CampoTipoDescripción
hasServiceAccountbooleanIndica si una clave de cuenta de servicio está configurada.
issuerIdstringEl ID de emisor de la Consola de Google Pay y Wallet configurado.
serviceAccountEmailstringEl client_email de la cuenta de servicio configurada.

Plantillas

Anchor link to

Lista las plantillas de pase de ejemplo disponibles, o busca una como un objeto de pase que puedas usar como punto de partida.

GET /api/google/templates — devuelve { "templates": [ { "filename", "name", "description", "style" } ] }.

GET /api/google/templates/{filename} — devuelve { "template": { ...objeto de pase... } }.

Referencia de objetos

Anchor link to

Objeto de pase

Anchor link to
CampoTipoDescripción
serialNumberstringAsignado por el servidor en la creación; identifica el pase.
generic / offer / loyalty / eventTicket / giftCard / flight / transitobjetoEl estilo del pase. Se debe establecer exactamente uno. Consulta los objetos de estilo a continuación.
hexBackgroundColorstringColor de fondo de la tarjeta, #rrggbb.
logoUrlstringURL HTTPS pública de la imagen del logotipo. Requerido para fidelización y transporte.
heroImageUrlstringURL HTTPS pública de una imagen de banner ancha.
barcodeobjetoCódigo de barras que se muestra en el pase.
textModulesarrayMódulos de texto que se muestran en la vista de detalles.
linksarrayMódulos de enlace que se muestran en la vista de detalles.
expirationTimestringHora ISO 8601 en la que Google hace caducar automáticamente el pase. Vacío significa que no caduca.
appLinkobjetoEnlace de aplicación: un botón de llamada a la acción en la parte frontal del pase.
locationsarrayUbicaciones que activan una notificación geocercada (máximo 10).
holdersPolicystringQuién puede guardar el pase: ONE_USER_ALL_DEVICES (predeterminado), ONE_USER_ONE_DEVICE o MULTIPLE_HOLDERS.

Objeto genérico

Anchor link to
CampoTipoDescripción
cardTitlestringRequerido. El nombre del emisor/programa en la parte superior de la tarjeta.
headerstringRequerido. El título principal de la tarjeta.
subheaderstringTítulo secundario.
cardFieldsarrayHasta 6 módulos de texto fijados en el frente (hasta 3 filas de 2).

Objeto de oferta

Anchor link to
CampoTipoDescripción
titlestringRequerido. Por ejemplo, 20% de descuento en todo.
providerstringRequerido. El nombre del comerciante.
detailsstringDetalles de la oferta.
finePrintstringTérminos y condiciones.
redemptionChannelstringONLINE, INSTORE, BOTH (predeterminado), o TEMPORARY_PRICE_REDUCTION.
issuerNamestringSe muestra en las superficies de “emitido por” de Google; el valor predeterminado es provider.

Objeto de fidelización

Anchor link to
CampoTipoDescripción
programNamestringRequerido. Requiere logoUrl en el pase.
accountNamestringNombre del miembro que se muestra en la tarjeta.
accountIdstringID del miembro que se muestra en la tarjeta.
pointsLabelstringPor ejemplo, Puntos. Se muestra solo con un saldo.
pointsBalancestringEl saldo de puntos.
rewardsTierstringPor ejemplo, Oro.
rewardsTierLabelstringEtiqueta junto al nivel; el valor predeterminado es Nivel.
issuerNamestringEl valor predeterminado es programName.

Objeto de entrada de evento

Anchor link to
CampoTipoDescripción
eventNamestringRequerido.
venueName / venueAddressstringDetalles del lugar.
startDateTime / endDateTimestringISO 8601 con desplazamiento (por ejemplo, 2026-07-01T19:30:00+02:00).
ticketHolderName / ticketNumber / ticketTypestringDetalles del titular y de la entrada.
section / row / seat / gatestringDetalles del asiento.
issuerNamestringEl valor predeterminado es eventName.

Objeto de tarjeta de regalo

Anchor link to
CampoTipoDescripción
merchantNamestringRequerido.
cardNumberstringRequerido.
pinstringPIN de la tarjeta.
balancestringCantidad decimal, por ejemplo 25.00. Requiere balanceCurrency.
balanceCurrencystringCódigo de moneda ISO 4217, por ejemplo USD.
issuerNamestringEl valor predeterminado es merchantName.

Objeto de vuelo

Anchor link to
CampoTipoDescripción
carrierIataCodestringRequerido. Código IATA de 2 letras, por ejemplo LX.
airlineNamestringNombre de visualización de la aerolínea.
flightNumberstringRequerido. Solo dígitos, por ejemplo 113.
originAirportCode / destinationAirportCodestringRequerido. Códigos IATA de 3 letras.
originTerminal / originGate / destinationTerminalstringDetalles de la terminal y la puerta de embarque.
departureDateTimestringRequerido. Hora local del aeropuerto de origen, ISO 8601 sin desplazamiento (por ejemplo, 2026-09-01T06:30:00).
boardingTime / arrivalDateTimestringMismo formato local. arrivalDateTime es la hora local de destino.
passengerNamestringRequerido.
confirmationCode / seatNumber / seatClass / boardingGroupstringDetalles del pasajero.
issuerNamestringEl valor predeterminado es airlineName, luego el código de la aerolínea.

Objeto de transporte

Anchor link to
CampoTipoDescripción
transitTypestringRequerido. BUS, RAIL, TRAM, FERRY, o OTHER.
transitOperatorNamestringRequerido. Requiere logoUrl en el pase.
passengerNamestringRequerido.
ticketNumberstringNúmero de billete.
tripTypestringONE_WAY (predeterminado) o ROUND_TRIP.
legsarrayUno o más tramos de transporte en orden de viaje.
issuerNamestringEl valor predeterminado es transitOperatorName.

Objeto de tramo de transporte

Anchor link to
CampoTipoDescripción
originName / destinationNamestringRequerido.
departureDateTime / arrivalDateTimestringISO 8601; desplazamiento opcional (hora local cuando se omite).
platform / coach / seatstringDetalles de embarque.
fareNamestringPor ejemplo, Sencillo Cualquier Hora.

Objeto de código de barras

Anchor link to
CampoTipoDescripción
formatstringQR_CODE, PDF_417, AZTEC, CODE_128, EAN_13, y otros tipos de códigos de barras de Google Wallet.
valuestringDatos codificados en el código de barras.
altTextstringTexto que se muestra debajo del código de barras.

Objeto de módulo de texto

Anchor link to
CampoTipoDescripción
idstringIdentificador del módulo.
headerstringEncabezado del módulo.
bodystringTexto del módulo.

Objeto de módulo de enlace

Anchor link to
CampoTipoDescripción
uristringURL del enlace externo.
descriptionstringEtiqueta del enlace que se muestra en la vista de detalles.

Objeto de enlace de aplicación

Anchor link to
CampoTipoDescripción
uristringURL web o URI de destino de enlace profundo.
androidPackageNamestringOpcional. Cuando se establece, abre la aplicación de Android.
descriptionstringDescripción interna de la URI de destino (no es una etiqueta de botón visible); el valor predeterminado es la URI.

Objeto de ubicación

Anchor link to
CampoTipoDescripción
latitudenumber-90.0 a +90.0.
longitudenumber-180.0 a +180.0.

Objeto de registro de pase

Anchor link to

Devuelto por los endpoints de listar/obtener.

CampoTipoDescripción
serialNumberstringNúmero de serie del pase.
objectIdstringID de objeto completo de Google Wallet {issuerId}.{serialNumber}.
cardTitlestringTítulo/encabezado de visualización para el pase.
headerstringTítulo de visualización secundario.
userIdstringID de Usuario de Pushwoosh al que se emitió el pase.
createdAt / updatedAtstringMarcas de tiempo de creación y última actualización.
statestringACTIVE o INACTIVE.
stylestringgeneric, offer, loyalty, eventTicket, giftCard, flight, o transit.
passobjetoEl objeto de pase completo, para editar.