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 générateur de cartes dans le 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, et 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
  • Nom des champs : Les champs JSON utilisent 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 complet de l’objet 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 mal formé.
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 de la carte créée, attribuée par le serveur.
objectIdchaîneID complet de l’objet 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": "Pass created successfully"
}

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înesAvertissements 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îneNonSi non vide, envoie une notification push Android avec ce texte à tous ceux qui ont enregistré la carte. Vide signifie une mise à jour silencieuse.
notifyOnUpdatebooléenNonDemande une notification de mise à jour de champ. Seules les cartes loyalty, eventTicket et flight 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îneNonDirection du tri : DESC (par défaut, les plus récents en premier) ou ASC.
pageentierNonIndex de page basé sur zéro. Par défaut à 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 carte.
pageentierL’index de la page renvoyée.
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é pour pouvoir être réactivé.

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

Corps de la requête

Anchor link to
ParamètreTypeRequisDescription
activebooléenOuitrue définit la carte à 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 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 Google Pay & Wallet Console 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 (Pass object)

Anchor link to
ChampTypeDescription
serialNumberchaîneAttribué par le serveur lors de la création ; identifie la carte.
generic / offer / loyalty / eventTicket / giftCard / flight / transitobjetLe style de la carte. Un seul 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 image de bannière large.
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.
locationstableauEmplacements 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 (Generic object)

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 (Offer object)

Anchor link to
ChampTypeDescription
titlechaîneRequis. Par exemple, 20% de réduction sur tout.
providerchaîneRequis. Le nom du marchand.
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 ; par défaut à provider.

Objet de fidélité (Loyalty object)

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 ; par défaut à Niveau.
issuerNamechaînePar défaut à programName.

Objet de billet d’événement (Event ticket object)

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înePar défaut à eventName.

Objet de carte-cadeau (Gift card object)

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înePar défaut à merchantName.

Objet de vol (Flight object)

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 d’embarquement.
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înePar défaut à airlineName, puis au code du transporteur.

Objet de transport (Transit object)

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.
legstableauUn ou plusieurs tronçons de transport dans l’ordre du voyage.
issuerNamechaînePar défaut à transitOperatorName.

Objet de tronçon de transport (Transit leg object)

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

Objet de code-barres (Barcode object)

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 (Text module object)

Anchor link to
ChampTypeDescription
idchaîneIdentifiant du module.
headerchaîneTitre du module.
bodychaîneTexte du module.
Anchor link to
ChampTypeDescription
urichaîneURL du lien externe.
descriptionchaîneÉtiquette du lien affichée dans la vue détaillée.
Anchor link to
ChampTypeDescription
urichaîneURL web ou URI cible de lien profond.
androidPackageNamechaîneOptionnel. Si défini, ouvre l’application Android.
descriptionchaîneDescription interne de l’URI cible (pas une étiquette de bouton visible) ; par défaut à l’URI.

Objet d’emplacement (Location object)

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

Objet d’enregistrement de carte (Pass record object)

Anchor link to

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

ChampTypeDescription
serialNumberchaîneNuméro de série de la carte.
objectIdchaîneID complet de l’objet Google Wallet {issuerId}.{serialNumber}.
cardTitlechaîneTitre/en-tête d’affichage de 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.