Passer au contenu

API Google Wallet

L’API Google Wallet vous permet de créer, mettre à jour, lister et gérer les cartes Google Wallet par programmation. Elle prend en charge les mêmes opérations que le constructeur de cartes du Panneau de Contrôle.

Utilisez-la pour émettre des cartes de fidélité, des offres, des cartes-cadeaux, des billets d’événement, des cartes d’embarquement, des titres de transport et des cartes génériques, ainsi que pour envoyer des mises à jour en direct aux cartes déjà enregistrées sur les appareils de vos utilisateurs.

URL de base

Anchor link to
https://apple-passkit.svc-nue.pushwoosh.com

Tous les points de terminaison sont servis via HTTPS. Les requêtes et les réponses utilisent application/json sauf indication contraire.

Authentification

Anchor link to

Chaque requête doit inclure un en-tête Authorization avec votre jeton d’accès à l’API Pushwoosh :

Authorization: Token <api-token>

Le compte propriétaire du jeton doit être propriétaire de l’application référencée par applicationCode. Une requête pour une application appartenant à un autre compte renverra 403 Forbidden.

Conventions

Anchor link to
  • Nommage des champs : Les champs JSON utilisent le lowerCamelCase (par exemple, serialNumber, hexBackgroundColor, logoUrl).
  • Champs non renseignés : les réponses incluent tous les champs, même lorsqu’ils sont vides ou nuls.
  • Identité : le serialNumber est toujours attribué par le serveur lors de la création d’une carte. Toute valeur que vous envoyez lors de la création est ignorée. L’ID d’objet complet de Google Wallet est {issuerId}.{serialNumber}.
  • Images : logoUrl et heroImageUrl sont des URL HTTPS publiques vers des images que Google récupère — ce ne sont pas des fichiers téléversés.
  • Style de carte : un seul objet de style (generic, offer, loyalty, eventTicket, giftCard, flight ou transit) doit être défini sur une carte. Le style ne peut pas être modifié après la création.

Réponses d’erreur

Anchor link to
Statut HTTPSignification
400 Bad RequestArgument invalide — un champ obligatoire est manquant ou malformé.
401 UnauthorizedEn-tête Authorization manquant ou invalide.
403 ForbiddenL’application n’appartient pas au compte de l’appelant.
404 Not FoundLa carte, le modèle ou l’application n’a pas été trouvé(e).
503 Service UnavailableLe service est à pleine capacité ou temporairement indisponible.

Points de terminaison

Anchor link to
MéthodeCheminDescription
POST/api/google/pass/validateValider une configuration de carte
POST/api/google/pass/createCréer un nouvel objet de carte et obtenir un lien de sauvegarde
POST/api/google/pass/update/{serialNumber}Mettre à jour une carte existante ; Google livre la modification
GET/api/google/pass/{applicationCode}/{serialNumber}/save-linkObtenir un lien de sauvegarde « Ajouter à Google Wallet »
GET/api/google/pass/{applicationCode}/{serialNumber}Obtenir une seule carte
GET/api/google/passesLister toutes les cartes pour une application
POST/api/google/pass/{applicationCode}/{serialNumber}/stateActiver ou invalider une carte
DELETE/api/google/pass/{applicationCode}/{serialNumber}Supprimer une carte
GET/api/google/configObtenir la configuration Google Wallet de l’application
GET/api/google/templatesLister les modèles de cartes disponibles
GET/api/google/templates/{filename}Obtenir un seul modèle

Créer une carte

Anchor link to

Crée la classe et l’objet de la carte dans Google Wallet, puis renvoie le numéro de série attribué par le serveur, l’ID complet de l’objet et un lien de sauvegarde « Ajouter à Google Wallet ».

POST /api/google/pass/create

Corps de la requête

Anchor link to
ParamètreTypeRequisDescription
passobjetOuiL’objet de carte décrivant la carte. Un seul style doit être défini.
userIdchaîneOuiL’ID utilisateur Pushwoosh auquel la carte est émise.
applicationCodechaîneOuiLe code d’application Pushwoosh.
Exemple de requête
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"
}
}
}
ChampTypeDescription
serialNumberchaîneIdentité unique attribuée par le serveur à la carte créée.
objectIdchaîneID d’objet complet de Google Wallet : {issuerId}.{serialNumber}.
saveLinkchaîneLien « Ajouter à Google Wallet » : https://pay.google.com/gp/v/save/{jwt}.
messagechaîneMessage de résultat.
Exemple de réponse
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": "Carte créée avec succès"
}

Valider une carte

Anchor link to

Vérifie une configuration de carte par rapport aux exigences de Google sans la créer. Utile avant d’appeler la création.

POST /api/google/pass/validate

Corps de la requête

Anchor link to
ParamètreTypeRequisDescription
passobjetOuiL’objet de carte à valider.
ChampTypeDescription
validbooléenIndique si la carte passe la validation.
errorstableau de chaînesProblèmes bloquants qui doivent être corrigés.
warningstableau de chaînesAvis non bloquants.

Mettre à jour une carte

Anchor link to

Met à jour l’objet de la carte avec un nouveau contenu. Google livre ensuite la version mise à jour à chaque appareil qui a enregistré la carte. Envoie éventuellement une notification Android avec la mise à jour.

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

Paramètres de chemin

Anchor link to
ParamètreTypeDescription
serialNumberchaîneLe numéro de série renvoyé lors de la création de la carte.

Corps de la requête

Anchor link to
ParamètreTypeRequisDescription
updatesobjetOuiL’objet de carte avec le nouveau contenu. Le style ne peut pas être modifié.
applicationCodechaîneOuiLe code d’application Pushwoosh.
notifyMessagechaîneNonLorsqu’il n’est pas vide, envoie une notification push Android avec ce texte à tous ceux qui ont enregistré la carte. Vide signifie une mise à jour silencieuse.
notifyOnUpdatebooléenNonDemander une notification de mise à jour de champ. Seules les cartes de fidélité, de billet d’événement et de vol notifient réellement ; les autres styles acceptent l’indicateur mais n’en envoient jamais. Les notifications ne se déclenchent que dans les 3 heures précédant une heure de début pertinente, et Google les limite à 3 notifications par carte par 24 heures.
ChampTypeDescription
successbooléenIndique si la mise à jour a réussi.
messagechaîneMessage de résultat.

Obtenir un lien de sauvegarde

Anchor link to

Renvoie un lien de sauvegarde « Ajouter à Google Wallet » pour une carte déjà créée. L’objet de la carte doit déjà exister (créé via Créer une carte).

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

ChampTypeDescription
saveLinkchaînehttps://pay.google.com/gp/v/save/{jwt}.

Obtenir une carte

Anchor link to

Renvoie une seule carte stockée, y compris son objet de carte complet.

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

Renvoie { "pass": { ... } }, un seul enregistrement de carte.

Lister les cartes

Anchor link to

Renvoie une liste paginée et triée des cartes stockées pour une application.

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

Paramètres de requête

Anchor link to
ParamètreTypeRequisDescription
applicationCodechaîneOuiLe code d’application Pushwoosh.
orderBychaîneNonChamp de tri : UPDATED (par défaut) ou CREATED.
orderDirectionchaîneNonSens de tri : DESC (par défaut, le plus récent en premier) ou ASC.
pageentierNonIndex de page basé sur zéro. La valeur par défaut est 0.
perPageentierNonTaille de la page. 0 ou omis utilise la valeur par défaut du serveur.
ChampTypeDescription
passestableau d’objetsLa page actuelle des enregistrements de cartes.
pageentierL’index de page renvoyé.
perPageentierLa taille de page utilisée pour cette réponse.
totalentierNombre total de cartes pour l’application sur toutes les pages.

Définir l’état de la carte

Anchor link to

Active ou invalide une carte. Une carte invalidée (inactive) est déplacée vers la section Cartes expirées de l’utilisateur dans Google Wallet ; l’enregistrement est conservé afin qu’elle puisse être réactivée.

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

Corps de la requête

Anchor link to
ParamètreTypeRequisDescription
activebooléenOuitrue définit la carte sur ACTIVE ; false l’invalide (INACTIVE).

Renvoie un objet vide {} en cas de succès.

Supprimer une carte

Anchor link to

Invalide la carte dans Google et supprime son enregistrement stocké dans Pushwoosh.

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

Renvoie un objet vide {} en cas de succès.

Obtenir la configuration

Anchor link to

Renvoie l’état de la configuration de Google Wallet pour une application.

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

ChampTypeDescription
hasServiceAccountbooléenIndique si une clé de compte de service est configurée.
issuerIdchaîneL’ID d’émetteur de la console Google Pay & Wallet configuré.
serviceAccountEmailchaîneLe client_email du compte de service configuré.

Listez les modèles de cartes d’exemple disponibles, ou récupérez-en un en tant qu’objet de carte que vous pouvez utiliser comme point de départ.

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

GET /api/google/templates/{filename} — renvoie { "template": { ...objet de carte... } }.

Référence d’objet

Anchor link to

Objet de carte

Anchor link to
ChampTypeDescription
serialNumberchaîneAttribué par le serveur à la création ; identifie la carte.
generic / offer / loyalty / eventTicket / giftCard / flight / transitobjetLe style de la carte. Exactement un doit être défini. Voir les objets de style ci-dessous.
hexBackgroundColorchaîneCouleur de fond de la carte, #rrggbb.
logoUrlchaîneURL HTTPS publique de l’image du logo. Requis pour les cartes de fidélité et de transport.
heroImageUrlchaîneURL HTTPS publique d’une large image de bannière.
barcodeobjetCode-barres affiché sur la carte.
textModulestableauModules de texte affichés dans la vue détaillée.
linkstableauModules de lien affichés dans la vue détaillée.
expirationTimechaîneHeure ISO 8601 à laquelle Google fait expirer automatiquement la carte. Vide signifie pas d’expiration.
appLinkobjetLien d’application : un bouton CTA sur le recto de la carte.
locationstableauLieux qui déclenchent une notification géolocalisée (max 10).
holdersPolicychaîneQui peut enregistrer la carte : ONE_USER_ALL_DEVICES (par défaut), ONE_USER_ONE_DEVICE, ou MULTIPLE_HOLDERS.

Objet générique

Anchor link to
ChampTypeDescription
cardTitlechaîneRequis. Le nom de l’émetteur/programme en haut de la carte.
headerchaîneRequis. Le titre principal de la carte.
subheaderchaîneTitre secondaire.
cardFieldstableauJusqu’à 6 modules de texte épinglés au recto (jusqu’à 3 rangées de 2).

Objet d’offre

Anchor link to
ChampTypeDescription
titlechaîneRequis. Par exemple, 20 % de réduction sur tout.
providerchaîneRequis. Le nom du commerçant.
detailschaîneDétails de l’offre.
finePrintchaîneTermes et conditions.
redemptionChannelchaîneONLINE, INSTORE, BOTH (par défaut), ou TEMPORARY_PRICE_REDUCTION.
issuerNamechaîneAffiché sur les surfaces « émis par » de Google ; la valeur par défaut est provider.

Objet de fidélité

Anchor link to
ChampTypeDescription
programNamechaîneRequis. Nécessite logoUrl sur la carte.
accountNamechaîneNom du membre affiché sur la carte.
accountIdchaîneID du membre affiché sur la carte.
pointsLabelchaînePar exemple, Points. Affiché uniquement avec un solde.
pointsBalancechaîneLe solde de points.
rewardsTierchaînePar exemple, Or.
rewardsTierLabelchaîneÉtiquette à côté du niveau ; la valeur par défaut est Niveau.
issuerNamechaîneLa valeur par défaut est programName.

Objet de billet d’événement

Anchor link to
ChampTypeDescription
eventNamechaîneRequis.
venueName / venueAddresschaîneDétails du lieu.
startDateTime / endDateTimechaîneISO 8601 avec décalage (par exemple, 2026-07-01T19:30:00+02:00).
ticketHolderName / ticketNumber / ticketTypechaîneDétails du détenteur et du billet.
section / row / seat / gatechaîneDétails des places.
issuerNamechaîneLa valeur par défaut est eventName.

Objet de carte-cadeau

Anchor link to
ChampTypeDescription
merchantNamechaîneRequis.
cardNumberchaîneRequis.
pinchaînePIN de la carte.
balancechaîneMontant décimal, par exemple 25.00. Nécessite balanceCurrency.
balanceCurrencychaîneCode de devise ISO 4217, par exemple USD.
issuerNamechaîneLa valeur par défaut est merchantName.

Objet de vol

Anchor link to
ChampTypeDescription
carrierIataCodechaîneRequis. Code IATA à 2 lettres, par exemple LX.
airlineNamechaîneNom d’affichage de la compagnie aérienne.
flightNumberchaîneRequis. Chiffres uniquement, par exemple 113.
originAirportCode / destinationAirportCodechaîneRequis. Codes IATA à 3 lettres.
originTerminal / originGate / destinationTerminalchaîneDétails du terminal et de la porte.
departureDateTimechaîneRequis. Heure locale de l’aéroport d’origine, ISO 8601 sans décalage (par exemple, 2026-09-01T06:30:00).
boardingTime / arrivalDateTimechaîneMême format local. arrivalDateTime est l’heure locale de destination.
passengerNamechaîneRequis.
confirmationCode / seatNumber / seatClass / boardingGroupchaîneDétails du passager.
issuerNamechaîneLa valeur par défaut est airlineName, puis le code du transporteur.

Objet de transport

Anchor link to
ChampTypeDescription
transitTypechaîneRequis. BUS, RAIL, TRAM, FERRY, ou OTHER.
transitOperatorNamechaîneRequis. Nécessite logoUrl sur la carte.
passengerNamechaîneRequis.
ticketNumberchaîneNuméro de billet.
tripTypechaîneONE_WAY (par défaut) ou ROUND_TRIP.
legstableauUne ou plusieurs étapes de transport dans l’ordre du voyage.
issuerNamechaîneLa valeur par défaut est transitOperatorName.

Objet d’étape de transport

Anchor link to
ChampTypeDescription
originName / destinationNamechaîneRequis.
departureDateTime / arrivalDateTimechaîneISO 8601 ; décalage facultatif (heure locale si omis).
platform / coach / seatchaîneDétails de l’embarquement.
fareNamechaînePar exemple, Anytime Single.

Objet de code-barres

Anchor link to
ChampTypeDescription
formatchaîneQR_CODE, PDF_417, AZTEC, CODE_128, EAN_13, et autres types de codes-barres de Google Wallet.
valuechaîneDonnées encodées dans le code-barres.
altTextchaîneTexte affiché sous le code-barres.

Objet de module de texte

Anchor link to
ChampTypeDescription
idchaîneIdentifiant du module.
headerchaîneTitre du module.
bodychaîneTexte du module.

Objet de module de lien

Anchor link to
ChampTypeDescription
urichaîneURL du lien externe.
descriptionchaîneÉtiquette du lien affichée dans la vue détaillée.

Objet de lien d’application

Anchor link to
ChampTypeDescription
urichaîneURL Web ou URI cible de lien profond.
androidPackageNamechaîneFacultatif. Si défini, ouvre l’application Android.
descriptionchaîneDescription interne de l’URI cible (pas une étiquette de bouton visible) ; la valeur par défaut est l’URI.

Objet de lieu

Anchor link to
ChampTypeDescription
latitudenombre-90.0 à +90.0.
longitudenombre-180.0 à +180.0.

Objet d’enregistrement de carte

Anchor link to

Renvoyé par les points de terminaison de liste/d’obtention.

ChampTypeDescription
serialNumberchaîneNuméro de série de la carte.
objectIdchaîneID d’objet complet de Google Wallet {issuerId}.{serialNumber}.
cardTitlechaîneTitre/en-tête d’affichage pour la carte.
headerchaîneTitre d’affichage secondaire.
userIdchaîneID utilisateur Pushwoosh auquel la carte a été émise.
createdAt / updatedAtchaîneHorodatages de création et de dernière mise à jour.
statechaîneACTIVE ou INACTIVE.
stylechaînegeneric, offer, loyalty, eventTicket, giftCard, flight, ou transit.
passobjetL’objet de carte complet, pour l’édition.