Google Wallet API
Mit der Google Wallet API können Sie Google Wallet-Pässe programmgesteuert erstellen, aktualisieren, auflisten und verwalten. Sie unterstützt dieselben Vorgänge, die der Pass-Builder im Control Panel durchführt.
Verwenden Sie sie, um Kundenkarten, Angebote, Geschenkkarten, Veranstaltungstickets, Flug-Bordkarten, Fahrkarten und generische Pässe auszustellen und um Live-Updates an Pässe zu senden, die bereits auf den Geräten Ihrer Benutzer gespeichert sind.
Basis-URL
Anchor link tohttps://apple-passkit.svc-nue.pushwoosh.comAlle Endpunkte werden über HTTPS bereitgestellt. Anfragen und Antworten verwenden application/json, sofern nicht anders angegeben.
Authentifizierung
Anchor link toJede Anfrage muss einen Authorization-Header mit Ihrem Pushwoosh API-Zugriffstoken enthalten:
Authorization: Token <api-token>Das Konto, dem das Token gehört, muss auch Eigentümer der Anwendung sein, auf die applicationCode verweist. Eine Anfrage für eine Anwendung, die zu einem anderen Konto gehört, gibt 403 Forbidden zurück.
Konventionen
Anchor link to- Feldnamen: JSON-Felder verwenden
lowerCamelCase(zum BeispielserialNumber,hexBackgroundColor,logoUrl). - Nicht ausgefüllte Felder: Antworten enthalten alle Felder, auch wenn sie leer sind oder den Wert Null haben.
- Identität: Die
serialNumberwird immer vom Server zugewiesen, wenn ein Pass erstellt wird. Jeder Wert, den Sie beim Erstellen senden, wird ignoriert. Die vollständige Google Wallet-Objekt-ID lautet{issuerId}.{serialNumber}. - Bilder:
logoUrlundheroImageUrlsind öffentliche HTTPS-URLs zu Bildern, die Google abruft – es sind keine hochgeladenen Dateien. - Pass-Stil: Genau ein Stilobjekt (
generic,offer,loyalty,eventTicket,giftCard,flightodertransit) muss für einen Pass festgelegt werden. Der Stil kann nach der Erstellung nicht mehr geändert werden.
Fehlerantworten
Anchor link to| HTTP-Status | Bedeutung |
|---|---|
400 Bad Request | Ungültiges Argument – ein erforderliches Feld fehlt oder ist fehlerhaft. |
401 Unauthorized | Fehlender oder ungültiger Authorization-Header. |
403 Forbidden | Die Anwendung gehört nicht zum Konto des Aufrufers. |
404 Not Found | Der Pass, die Vorlage oder die Anwendung wurde nicht gefunden. |
503 Service Unavailable | Der Dienst ist ausgelastet oder vorübergehend nicht verfügbar. |
Endpunkte
Anchor link to| Methode | Pfad | Beschreibung |
|---|---|---|
POST | /api/google/pass/validate | Eine Pass-Konfiguration validieren |
POST | /api/google/pass/create | Ein neues Pass-Objekt erstellen und einen Speicherlink erhalten |
POST | /api/google/pass/update/{serialNumber} | Einen bestehenden Pass aktualisieren; Google übermittelt die Änderung |
GET | /api/google/pass/{applicationCode}/{serialNumber}/save-link | Einen „Zu Google Wallet hinzufügen“-Speicherlink erhalten |
GET | /api/google/pass/{applicationCode}/{serialNumber} | Einen einzelnen Pass abrufen |
GET | /api/google/passes | Alle Pässe für eine Anwendung auflisten |
POST | /api/google/pass/{applicationCode}/{serialNumber}/state | Einen Pass aktivieren oder entwerten |
DELETE | /api/google/pass/{applicationCode}/{serialNumber} | Einen Pass löschen |
GET | /api/google/config | Die Google Wallet-Konfiguration der Anwendung abrufen |
GET | /api/google/templates | Verfügbare Pass-Vorlagen auflisten |
GET | /api/google/templates/{filename} | Eine einzelne Vorlage abrufen |
Einen Pass erstellen
Anchor link toErstellt die Pass-Klasse und das Pass-Objekt in Google Wallet und gibt dann die vom Server zugewiesene Seriennummer, die vollständige Objekt-ID und einen „Zu Google Wallet hinzufügen“-Speicherlink zurück.
POST /api/google/pass/create
Anfragekörper
Anchor link to| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
pass | object | Ja | Das Pass-Objekt, das den Pass beschreibt. Es muss genau ein Stil festgelegt werden. |
userId | string | Ja | Die Pushwoosh User ID, für die der Pass ausgestellt wird. |
applicationCode | string | Ja | Der Pushwoosh-Anwendungscode. |
Anfragebeispiel
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" } }}Antwort
Anchor link to| Feld | Typ | Beschreibung |
|---|---|---|
serialNumber | string | Vom Server zugewiesene eindeutige Identität des erstellten Passes. |
objectId | string | Vollständige Google Wallet-Objekt-ID: {issuerId}.{serialNumber}. |
saveLink | string | „Zu Google Wallet hinzufügen“-Link: https://pay.google.com/gp/v/save/{jwt}. |
message | string | Ergebnismeldung. |
Antwortbeispiel
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"}Einen Pass validieren
Anchor link toÜberprüft eine Pass-Konfiguration anhand der Anforderungen von Google, ohne sie zu erstellen. Nützlich vor dem Aufruf von create.
POST /api/google/pass/validate
Anfragekörper
Anchor link to| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
pass | object | Ja | Das zu validierende Pass-Objekt. |
Antwort
Anchor link to| Feld | Typ | Beschreibung |
|---|---|---|
valid | boolean | Ob der Pass die Validierung besteht. |
errors | array of strings | Blockierende Probleme, die behoben werden müssen. |
warnings | array of strings | Nicht blockierende Hinweise. |
Einen Pass aktualisieren
Anchor link toPatcht das Pass-Objekt mit neuem Inhalt. Google übermittelt dann die aktualisierte Version an jedes Gerät, das den Pass gespeichert hat. Optional wird eine Android-Benachrichtigung mit dem Update gesendet.
POST /api/google/pass/update/{serialNumber}
Pfadparameter
Anchor link to| Parameter | Typ | Beschreibung |
|---|---|---|
serialNumber | string | Die Seriennummer, die bei der Erstellung des Passes zurückgegeben wurde. |
Anfragekörper
Anchor link to| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
updates | object | Ja | Das Pass-Objekt mit dem neuen Inhalt. Der Stil kann nicht geändert werden. |
applicationCode | string | Ja | Der Pushwoosh-Anwendungscode. |
notifyMessage | string | Nein | Wenn nicht leer, wird eine Android-Benachrichtigung mit diesem Text an alle gesendet, die den Pass gespeichert haben. Ein leerer Wert bedeutet ein stilles Update. |
notifyOnUpdate | boolean | Nein | Fordert eine Benachrichtigung über eine Feldaktualisierung an. Nur loyalty-, eventTicket- und flight-Pässe benachrichtigen tatsächlich; andere Stile akzeptieren das Flag, senden aber nie eine Benachrichtigung. Benachrichtigungen werden nur innerhalb von 3 Stunden vor einer relevanten Startzeit ausgelöst, und Google beschränkt sie auf 3 Benachrichtigungen pro Pass pro 24 Stunden. |
Antwort
Anchor link to| Feld | Typ | Beschreibung |
|---|---|---|
success | boolean | Ob das Update erfolgreich war. |
message | string | Ergebnismeldung. |
Einen Speicherlink erhalten
Anchor link toGibt einen „Zu Google Wallet hinzufügen“-Speicherlink für einen bereits erstellten Pass zurück. Das Pass-Objekt muss bereits existieren (erstellt über Einen Pass erstellen).
GET /api/google/pass/{applicationCode}/{serialNumber}/save-link
Antwort
Anchor link to| Feld | Typ | Beschreibung |
|---|---|---|
saveLink | string | https://pay.google.com/gp/v/save/{jwt}. |
Einen Pass abrufen
Anchor link toGibt einen einzelnen gespeicherten Pass zurück, einschließlich seines vollständigen Pass-Objekts.
GET /api/google/pass/{applicationCode}/{serialNumber}
Antwort
Anchor link toGibt { "pass": { ... } } zurück, einen einzelnen Pass-Datensatz.
Pässe auflisten
Anchor link toGibt eine paginierte, sortierte Liste der für eine Anwendung gespeicherten Pässe zurück.
GET /api/google/passes?applicationCode=XXXXX-XXXXX&page=0&perPage=20
Abfrageparameter
Anchor link to| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
applicationCode | string | Ja | Der Pushwoosh-Anwendungscode. |
orderBy | string | Nein | Sortierfeld: UPDATED (Standard) oder CREATED. |
orderDirection | string | Nein | Sortierrichtung: DESC (Standard, neueste zuerst) oder ASC. |
page | integer | Nein | Nullbasierter Seitenindex. Standard ist 0. |
perPage | integer | Nein | Seitengröße. 0 oder weggelassen verwendet den Serverstandard. |
Antwort
Anchor link to| Feld | Typ | Beschreibung |
|---|---|---|
passes | array of objects | Die aktuelle Seite der Pass-Datensätze. |
page | integer | Der zurückgegebene Seitenindex. |
perPage | integer | Die für diese Antwort verwendete Seitengröße. |
total | integer | Gesamtzahl der Pässe für die Anwendung über alle Seiten hinweg. |
Pass-Status festlegen
Anchor link toAktiviert oder entwertet einen Pass. Ein entwerteter (inaktiver) Pass wird in den Bereich Abgelaufene Pässe des Benutzers in Google Wallet verschoben; der Datensatz wird beibehalten, damit er reaktiviert werden kann.
POST /api/google/pass/{applicationCode}/{serialNumber}/state
Anfragekörper
Anchor link to| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
active | boolean | Ja | true setzt den Pass auf ACTIVE; false entwertet ihn (INACTIVE). |
Antwort
Anchor link toGibt bei Erfolg ein leeres Objekt {} zurück.
Einen Pass löschen
Anchor link toEntwertet den Pass in Google und entfernt seinen gespeicherten Datensatz in Pushwoosh.
DELETE /api/google/pass/{applicationCode}/{serialNumber}
Antwort
Anchor link toGibt bei Erfolg ein leeres Objekt {} zurück.
Konfiguration abrufen
Anchor link toGibt den Konfigurationsstatus von Google Wallet für eine Anwendung zurück.
GET /api/google/config?applicationCode=XXXXX-XXXXX
Antwort
Anchor link to| Feld | Typ | Beschreibung |
|---|---|---|
hasServiceAccount | boolean | Ob ein Dienstkontoschlüssel konfiguriert ist. |
issuerId | string | Die konfigurierte Google Pay & Wallet Console Issuer ID. |
serviceAccountEmail | string | Die client_email des konfigurierten Dienstkontos. |
Vorlagen
Anchor link toListen Sie die verfügbaren Beispiel-Pass-Vorlagen auf oder rufen Sie eine als Pass-Objekt ab, das Sie als Ausgangspunkt verwenden können.
GET /api/google/templates — gibt { "templates": [ { "filename", "name", "description", "style" } ] } zurück.
GET /api/google/templates/{filename} — gibt { "template": { ...Pass-Objekt... } } zurück.
Objektreferenz
Anchor link toPass-Objekt
Anchor link to| Feld | Typ | Beschreibung |
|---|---|---|
serialNumber | string | Wird vom Server bei der Erstellung zugewiesen; identifiziert den Pass. |
generic / offer / loyalty / eventTicket / giftCard / flight / transit | object | Der Pass-Stil. Es muss genau einer festgelegt werden. Siehe die Stilobjekte unten. |
hexBackgroundColor | string | Kartenhintergrundfarbe, #rrggbb. |
logoUrl | string | Öffentliche HTTPS-URL des Logobildes. Erforderlich für Kundenkarten und Fahrkarten. |
heroImageUrl | string | Öffentliche HTTPS-URL eines breiten Bannerbildes. |
barcode | object | Barcode, der auf dem Pass angezeigt wird. |
textModules | array | Textmodule, die in der Detailansicht angezeigt werden. |
links | array | Linkmodule, die in der Detailansicht angezeigt werden. |
expirationTime | string | ISO 8601-Zeit, zu der Google den Pass automatisch ablaufen lässt. Ein leerer Wert bedeutet kein Ablaufdatum. |
appLink | object | App-Link: eine CTA-Schaltfläche auf der Vorderseite des Passes. |
locations | array | Standorte, die eine Geofence-Benachrichtigung auslösen (max. 10). |
holdersPolicy | string | Wer den Pass speichern darf: ONE_USER_ALL_DEVICES (Standard), ONE_USER_ONE_DEVICE oder MULTIPLE_HOLDERS. |
Generisches Objekt
Anchor link to| Feld | Typ | Beschreibung |
|---|---|---|
cardTitle | string | Erforderlich. Der Name des Ausstellers/Programms oben auf der Karte. |
header | string | Erforderlich. Der Haupttitel der Karte. |
subheader | string | Sekundärer Titel. |
cardFields | array | Bis zu 6 Textmodule, die auf der Vorderseite angeheftet sind (bis zu 3 Reihen mit je 2). |
Angebotsobjekt
Anchor link to| Feld | Typ | Beschreibung |
|---|---|---|
title | string | Erforderlich. Zum Beispiel 20 % auf alles. |
provider | string | Erforderlich. Der Name des Händlers. |
details | string | Angebotsdetails. |
finePrint | string | Allgemeine Geschäftsbedingungen. |
redemptionChannel | string | ONLINE, INSTORE, BOTH (Standard) oder TEMPORARY_PRICE_REDUCTION. |
issuerName | string | Wird auf den „ausgestellt von“-Oberflächen von Google angezeigt; Standard ist provider. |
Kundenkartenobjekt
Anchor link to| Feld | Typ | Beschreibung |
|---|---|---|
programName | string | Erforderlich. Benötigt logoUrl auf dem Pass. |
accountName | string | Name des Mitglieds, der auf der Karte angezeigt wird. |
accountId | string | Mitglieds-ID, die auf der Karte angezeigt wird. |
pointsLabel | string | Zum Beispiel Punkte. Wird nur mit einem Guthaben angezeigt. |
pointsBalance | string | Das Punktguthaben. |
rewardsTier | string | Zum Beispiel Gold. |
rewardsTierLabel | string | Bezeichnung neben der Stufe; Standard ist Stufe. |
issuerName | string | Standard ist programName. |
Veranstaltungsticket-Objekt
Anchor link to| Feld | Typ | Beschreibung |
|---|---|---|
eventName | string | Erforderlich. |
venueName / venueAddress | string | Details zum Veranstaltungsort. |
startDateTime / endDateTime | string | ISO 8601 mit Offset (zum Beispiel 2026-07-01T19:30:00+02:00). |
ticketHolderName / ticketNumber / ticketType | string | Details zum Inhaber und Ticket. |
section / row / seat / gate | string | Details zur Sitzplatzordnung. |
issuerName | string | Standard ist eventName. |
Geschenkkartenobjekt
Anchor link to| Feld | Typ | Beschreibung |
|---|---|---|
merchantName | string | Erforderlich. |
cardNumber | string | Erforderlich. |
pin | string | Karten-PIN. |
balance | string | Dezimalbetrag, zum Beispiel 25.00. Benötigt balanceCurrency. |
balanceCurrency | string | ISO 4217-Währungscode, zum Beispiel USD. |
issuerName | string | Standard ist merchantName. |
Flugobjekt
Anchor link to| Feld | Typ | Beschreibung |
|---|---|---|
carrierIataCode | string | Erforderlich. 2-stelliger IATA-Code, zum Beispiel LX. |
airlineName | string | Anzeigename der Fluggesellschaft. |
flightNumber | string | Erforderlich. Nur Ziffern, zum Beispiel 113. |
originAirportCode / destinationAirportCode | string | Erforderlich. 3-stellige IATA-Codes. |
originTerminal / originGate / destinationTerminal | string | Details zu Terminal und Gate. |
departureDateTime | string | Erforderlich. Ortszeit des Abflughafens, ISO 8601 ohne Offset (zum Beispiel 2026-09-01T06:30:00). |
boardingTime / arrivalDateTime | string | Gleiches lokales Format. arrivalDateTime ist die Ortszeit am Zielort. |
passengerName | string | Erforderlich. |
confirmationCode / seatNumber / seatClass / boardingGroup | string | Details zum Passagier. |
issuerName | string | Standard ist airlineName, dann der Carrier-Code. |
Fahrkartenobjekt
Anchor link to| Feld | Typ | Beschreibung |
|---|---|---|
transitType | string | Erforderlich. BUS, RAIL, TRAM, FERRY oder OTHER. |
transitOperatorName | string | Erforderlich. Benötigt logoUrl auf dem Pass. |
passengerName | string | Erforderlich. |
ticketNumber | string | Ticketnummer. |
tripType | string | ONE_WAY (Standard) oder ROUND_TRIP. |
legs | array | Eine oder mehrere Fahrtabschnitte in der Reihenfolge der Reise. |
issuerName | string | Standard ist transitOperatorName. |
Fahrtabschnitt-Objekt
Anchor link to| Feld | Typ | Beschreibung |
|---|---|---|
originName / destinationName | string | Erforderlich. |
departureDateTime / arrivalDateTime | string | ISO 8601; Offset optional (Ortszeit, wenn weggelassen). |
platform / coach / seat | string | Details zum Einstieg. |
fareName | string | Zum Beispiel Anytime Single. |
Barcode-Objekt
Anchor link to| Feld | Typ | Beschreibung |
|---|---|---|
format | string | QR_CODE, PDF_417, AZTEC, CODE_128, EAN_13 und andere Google Wallet-Barcodetypen. |
value | string | Im Barcode codierte Daten. |
altText | string | Text, der unter dem Barcode angezeigt wird. |
Textmodul-Objekt
Anchor link to| Feld | Typ | Beschreibung |
|---|---|---|
id | string | Identifikator des Moduls. |
header | string | Überschrift des Moduls. |
body | string | Text des Moduls. |
Linkmodul-Objekt
Anchor link to| Feld | Typ | Beschreibung |
|---|---|---|
uri | string | URL des externen Links. |
description | string | Link-Bezeichnung, die in der Detailansicht angezeigt wird. |
App-Link-Objekt
Anchor link to| Feld | Typ | Beschreibung |
|---|---|---|
uri | string | Web-URL oder Deep-Link-Ziel-URI. |
androidPackageName | string | Optional. Wenn festgelegt, wird die Android-App geöffnet. |
description | string | Interne Beschreibung der Ziel-URI (keine sichtbare Schaltflächenbeschriftung); Standard ist die URI. |
Standort-Objekt
Anchor link to| Feld | Typ | Beschreibung |
|---|---|---|
latitude | number | -90.0 bis +90.0. |
longitude | number | -180.0 bis +180.0. |
Pass-Datensatz-Objekt
Anchor link toWird von list/get-Endpunkten zurückgegeben.
| Feld | Typ | Beschreibung |
|---|---|---|
serialNumber | string | Seriennummer des Passes. |
objectId | string | Vollständige Google Wallet-Objekt-ID {issuerId}.{serialNumber}. |
cardTitle | string | Anzeigetitel/Überschrift für den Pass. |
header | string | Sekundärer Anzeigetitel. |
userId | string | Pushwoosh User ID, für die der Pass ausgestellt wurde. |
createdAt / updatedAt | string | Zeitstempel der Erstellung und der letzten Aktualisierung. |
state | string | ACTIVE oder INACTIVE. |
style | string | generic, offer, loyalty, eventTicket, giftCard, flight oder transit. |
pass | object | Das vollständige Pass-Objekt zur Bearbeitung. |