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 tohttps://apple-passkit.svc-nue.pushwoosh.comTous les points de terminaison sont servis via HTTPS. Les requêtes et les réponses utilisent application/json sauf indication contraire.
Authentification
Anchor link toChaque 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
serialNumberest 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 :
logoUrletheroImageUrlsont 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,flightoutransit) 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 HTTP | Signification |
|---|---|
400 Bad Request | Argument invalide — un champ obligatoire est manquant ou malformé. |
401 Unauthorized | En-tête Authorization manquant ou invalide. |
403 Forbidden | L’application n’appartient pas au compte de l’appelant. |
404 Not Found | La carte, le modèle ou l’application n’a pas été trouvé(e). |
503 Service Unavailable | Le service est à pleine capacité ou temporairement indisponible. |
Points de terminaison
Anchor link to| Méthode | Chemin | Description |
|---|---|---|
POST | /api/google/pass/validate | Valider une configuration de carte |
POST | /api/google/pass/create | Cré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-link | Obtenir un lien de sauvegarde « Ajouter à Google Wallet » |
GET | /api/google/pass/{applicationCode}/{serialNumber} | Obtenir une seule carte |
GET | /api/google/passes | Lister toutes les cartes pour une application |
POST | /api/google/pass/{applicationCode}/{serialNumber}/state | Activer ou invalider une carte |
DELETE | /api/google/pass/{applicationCode}/{serialNumber} | Supprimer une carte |
GET | /api/google/config | Obtenir la configuration Google Wallet de l’application |
GET | /api/google/templates | Lister les modèles de cartes disponibles |
GET | /api/google/templates/{filename} | Obtenir un seul modèle |
Créer une carte
Anchor link toCré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ètre | Type | Requis | Description |
|---|---|---|---|
pass | objet | Oui | L’objet de carte décrivant la carte. Un seul style doit être défini. |
userId | chaîne | Oui | L’ID utilisateur Pushwoosh auquel la carte est émise. |
applicationCode | chaîne | Oui | Le 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" } }}Réponse
Anchor link to| Champ | Type | Description |
|---|---|---|
serialNumber | chaîne | Identité unique attribuée par le serveur à la carte créée. |
objectId | chaîne | ID d’objet complet de Google Wallet : {issuerId}.{serialNumber}. |
saveLink | chaîne | Lien « Ajouter à Google Wallet » : https://pay.google.com/gp/v/save/{jwt}. |
message | chaîne | Message 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 toVé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ètre | Type | Requis | Description |
|---|---|---|---|
pass | objet | Oui | L’objet de carte à valider. |
Réponse
Anchor link to| Champ | Type | Description |
|---|---|---|
valid | booléen | Indique si la carte passe la validation. |
errors | tableau de chaînes | Problèmes bloquants qui doivent être corrigés. |
warnings | tableau de chaînes | Avis non bloquants. |
Mettre à jour une carte
Anchor link toMet à 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ètre | Type | Description |
|---|---|---|
serialNumber | chaîne | Le numéro de série renvoyé lors de la création de la carte. |
Corps de la requête
Anchor link to| Paramètre | Type | Requis | Description |
|---|---|---|---|
updates | objet | Oui | L’objet de carte avec le nouveau contenu. Le style ne peut pas être modifié. |
applicationCode | chaîne | Oui | Le code d’application Pushwoosh. |
notifyMessage | chaîne | Non | Lorsqu’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. |
notifyOnUpdate | booléen | Non | Demander 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. |
Réponse
Anchor link to| Champ | Type | Description |
|---|---|---|
success | booléen | Indique si la mise à jour a réussi. |
message | chaîne | Message de résultat. |
Obtenir un lien de sauvegarde
Anchor link toRenvoie 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
Réponse
Anchor link to| Champ | Type | Description |
|---|---|---|
saveLink | chaîne | https://pay.google.com/gp/v/save/{jwt}. |
Obtenir une carte
Anchor link toRenvoie une seule carte stockée, y compris son objet de carte complet.
GET /api/google/pass/{applicationCode}/{serialNumber}
Réponse
Anchor link toRenvoie { "pass": { ... } }, un seul enregistrement de carte.
Lister les cartes
Anchor link toRenvoie 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ètre | Type | Requis | Description |
|---|---|---|---|
applicationCode | chaîne | Oui | Le code d’application Pushwoosh. |
orderBy | chaîne | Non | Champ de tri : UPDATED (par défaut) ou CREATED. |
orderDirection | chaîne | Non | Sens de tri : DESC (par défaut, le plus récent en premier) ou ASC. |
page | entier | Non | Index de page basé sur zéro. La valeur par défaut est 0. |
perPage | entier | Non | Taille de la page. 0 ou omis utilise la valeur par défaut du serveur. |
Réponse
Anchor link to| Champ | Type | Description |
|---|---|---|
passes | tableau d’objets | La page actuelle des enregistrements de cartes. |
page | entier | L’index de page renvoyé. |
perPage | entier | La taille de page utilisée pour cette réponse. |
total | entier | Nombre total de cartes pour l’application sur toutes les pages. |
Définir l’état de la carte
Anchor link toActive 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ètre | Type | Requis | Description |
|---|---|---|---|
active | booléen | Oui | true définit la carte sur ACTIVE ; false l’invalide (INACTIVE). |
Réponse
Anchor link toRenvoie un objet vide {} en cas de succès.
Supprimer une carte
Anchor link toInvalide la carte dans Google et supprime son enregistrement stocké dans Pushwoosh.
DELETE /api/google/pass/{applicationCode}/{serialNumber}
Réponse
Anchor link toRenvoie un objet vide {} en cas de succès.
Obtenir la configuration
Anchor link toRenvoie l’état de la configuration de Google Wallet pour une application.
GET /api/google/config?applicationCode=XXXXX-XXXXX
Réponse
Anchor link to| Champ | Type | Description |
|---|---|---|
hasServiceAccount | booléen | Indique si une clé de compte de service est configurée. |
issuerId | chaîne | L’ID d’émetteur de la console Google Pay & Wallet configuré. |
serviceAccountEmail | chaîne | Le client_email du compte de service configuré. |
Modèles
Anchor link toListez 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 toObjet de carte
Anchor link to| Champ | Type | Description |
|---|---|---|
serialNumber | chaîne | Attribué par le serveur à la création ; identifie la carte. |
generic / offer / loyalty / eventTicket / giftCard / flight / transit | objet | Le style de la carte. Exactement un doit être défini. Voir les objets de style ci-dessous. |
hexBackgroundColor | chaîne | Couleur de fond de la carte, #rrggbb. |
logoUrl | chaîne | URL HTTPS publique de l’image du logo. Requis pour les cartes de fidélité et de transport. |
heroImageUrl | chaîne | URL HTTPS publique d’une large image de bannière. |
barcode | objet | Code-barres affiché sur la carte. |
textModules | tableau | Modules de texte affichés dans la vue détaillée. |
links | tableau | Modules de lien affichés dans la vue détaillée. |
expirationTime | chaîne | Heure ISO 8601 à laquelle Google fait expirer automatiquement la carte. Vide signifie pas d’expiration. |
appLink | objet | Lien d’application : un bouton CTA sur le recto de la carte. |
locations | tableau | Lieux qui déclenchent une notification géolocalisée (max 10). |
holdersPolicy | chaîne | Qui 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| Champ | Type | Description |
|---|---|---|
cardTitle | chaîne | Requis. Le nom de l’émetteur/programme en haut de la carte. |
header | chaîne | Requis. Le titre principal de la carte. |
subheader | chaîne | Titre secondaire. |
cardFields | tableau | Jusqu’à 6 modules de texte épinglés au recto (jusqu’à 3 rangées de 2). |
Objet d’offre
Anchor link to| Champ | Type | Description |
|---|---|---|
title | chaîne | Requis. Par exemple, 20 % de réduction sur tout. |
provider | chaîne | Requis. Le nom du commerçant. |
details | chaîne | Détails de l’offre. |
finePrint | chaîne | Termes et conditions. |
redemptionChannel | chaîne | ONLINE, INSTORE, BOTH (par défaut), ou TEMPORARY_PRICE_REDUCTION. |
issuerName | chaîne | Affiché sur les surfaces « émis par » de Google ; la valeur par défaut est provider. |
Objet de fidélité
Anchor link to| Champ | Type | Description |
|---|---|---|
programName | chaîne | Requis. Nécessite logoUrl sur la carte. |
accountName | chaîne | Nom du membre affiché sur la carte. |
accountId | chaîne | ID du membre affiché sur la carte. |
pointsLabel | chaîne | Par exemple, Points. Affiché uniquement avec un solde. |
pointsBalance | chaîne | Le solde de points. |
rewardsTier | chaîne | Par exemple, Or. |
rewardsTierLabel | chaîne | Étiquette à côté du niveau ; la valeur par défaut est Niveau. |
issuerName | chaîne | La valeur par défaut est programName. |
Objet de billet d’événement
Anchor link to| Champ | Type | Description |
|---|---|---|
eventName | chaîne | Requis. |
venueName / venueAddress | chaîne | Détails du lieu. |
startDateTime / endDateTime | chaîne | ISO 8601 avec décalage (par exemple, 2026-07-01T19:30:00+02:00). |
ticketHolderName / ticketNumber / ticketType | chaîne | Détails du détenteur et du billet. |
section / row / seat / gate | chaîne | Détails des places. |
issuerName | chaîne | La valeur par défaut est eventName. |
Objet de carte-cadeau
Anchor link to| Champ | Type | Description |
|---|---|---|
merchantName | chaîne | Requis. |
cardNumber | chaîne | Requis. |
pin | chaîne | PIN de la carte. |
balance | chaîne | Montant décimal, par exemple 25.00. Nécessite balanceCurrency. |
balanceCurrency | chaîne | Code de devise ISO 4217, par exemple USD. |
issuerName | chaîne | La valeur par défaut est merchantName. |
Objet de vol
Anchor link to| Champ | Type | Description |
|---|---|---|
carrierIataCode | chaîne | Requis. Code IATA à 2 lettres, par exemple LX. |
airlineName | chaîne | Nom d’affichage de la compagnie aérienne. |
flightNumber | chaîne | Requis. Chiffres uniquement, par exemple 113. |
originAirportCode / destinationAirportCode | chaîne | Requis. Codes IATA à 3 lettres. |
originTerminal / originGate / destinationTerminal | chaîne | Détails du terminal et de la porte. |
departureDateTime | chaîne | Requis. Heure locale de l’aéroport d’origine, ISO 8601 sans décalage (par exemple, 2026-09-01T06:30:00). |
boardingTime / arrivalDateTime | chaîne | Même format local. arrivalDateTime est l’heure locale de destination. |
passengerName | chaîne | Requis. |
confirmationCode / seatNumber / seatClass / boardingGroup | chaîne | Détails du passager. |
issuerName | chaîne | La valeur par défaut est airlineName, puis le code du transporteur. |
Objet de transport
Anchor link to| Champ | Type | Description |
|---|---|---|
transitType | chaîne | Requis. BUS, RAIL, TRAM, FERRY, ou OTHER. |
transitOperatorName | chaîne | Requis. Nécessite logoUrl sur la carte. |
passengerName | chaîne | Requis. |
ticketNumber | chaîne | Numéro de billet. |
tripType | chaîne | ONE_WAY (par défaut) ou ROUND_TRIP. |
legs | tableau | Une ou plusieurs étapes de transport dans l’ordre du voyage. |
issuerName | chaîne | La valeur par défaut est transitOperatorName. |
Objet d’étape de transport
Anchor link to| Champ | Type | Description |
|---|---|---|
originName / destinationName | chaîne | Requis. |
departureDateTime / arrivalDateTime | chaîne | ISO 8601 ; décalage facultatif (heure locale si omis). |
platform / coach / seat | chaîne | Détails de l’embarquement. |
fareName | chaîne | Par exemple, Anytime Single. |
Objet de code-barres
Anchor link to| Champ | Type | Description |
|---|---|---|
format | chaîne | QR_CODE, PDF_417, AZTEC, CODE_128, EAN_13, et autres types de codes-barres de Google Wallet. |
value | chaîne | Données encodées dans le code-barres. |
altText | chaîne | Texte affiché sous le code-barres. |
Objet de module de texte
Anchor link to| Champ | Type | Description |
|---|---|---|
id | chaîne | Identifiant du module. |
header | chaîne | Titre du module. |
body | chaîne | Texte du module. |
Objet de module de lien
Anchor link to| Champ | Type | Description |
|---|---|---|
uri | chaîne | URL du lien externe. |
description | chaîne | Étiquette du lien affichée dans la vue détaillée. |
Objet de lien d’application
Anchor link to| Champ | Type | Description |
|---|---|---|
uri | chaîne | URL Web ou URI cible de lien profond. |
androidPackageName | chaîne | Facultatif. Si défini, ouvre l’application Android. |
description | chaîne | Description 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| Champ | Type | Description |
|---|---|---|
latitude | nombre | -90.0 à +90.0. |
longitude | nombre | -180.0 à +180.0. |
Objet d’enregistrement de carte
Anchor link toRenvoyé par les points de terminaison de liste/d’obtention.
| Champ | Type | Description |
|---|---|---|
serialNumber | chaîne | Numéro de série de la carte. |
objectId | chaîne | ID d’objet complet de Google Wallet {issuerId}.{serialNumber}. |
cardTitle | chaîne | Titre/en-tête d’affichage pour la carte. |
header | chaîne | Titre d’affichage secondaire. |
userId | chaîne | ID utilisateur Pushwoosh auquel la carte a été émise. |
createdAt / updatedAt | chaîne | Horodatages de création et de dernière mise à jour. |
state | chaîne | ACTIVE ou INACTIVE. |
style | chaîne | generic, offer, loyalty, eventTicket, giftCard, flight, ou transit. |
pass | objet | L’objet de carte complet, pour l’édition. |