In diesem Leitfaden wird erläutert, wie du Callbacks mit der Google Wallet API verwendest. Wenn ein Wert erstellt oder gelöscht wird, kann Google einen Callback zu einem HTTPS-Endpunkt deiner Wahl vornehmen. Dieser Callback ist klassenspezifisch und beinhaltet Daten über das Ereignis, wie zum Beispiel Klasse, Objekt und Ereignistyp. Dies ermöglicht eine synchrone Abstimmung mit der Anzahl der von Nutzern hinzugefügten und gelöschten Daten. So können Callbacks beispielsweise dazu konfiguriert werden, Ereignisse an eine Analyseanwendung zu senden, um Kundeninteraktionen bei Werbeaktionen nachzuvollziehen.
Voraussetzungen
Bevor du beginnst, müssen die folgenden Voraussetzungen erfüllt sein:
- Richte einen HTTPS-Endpunkt ein, der POST-Anfragen verarbeitet. Dieser Endpunkt muss öffentlich verfügbar sein.
-
Aktualisiere den Callback-Endpunkt für jede Klasse programmatisch. Siehe Attribut
callbackOptions
nach Klasse in der REST API. - Empfohlen: Verwende die Tink-Bibliothek, um die Signaturen zu überprüfen.
Callbacks implementieren
Google sendet bei jedem Hinzufügen oder Löschen, das der Nutzer für ein Objekt ausführt, Callbacks an die Händler. Diese enthalten Details zum hinzugefügten oder gelöschten Element für jede einzelne URL. Händler müssen zuerst die Authentizität der Nachricht anhand der öffentlichen Schlüssel prüfen. Nachdem die Callbacks die Nachricht verifiziert haben, können sie für nachgelagerte Vorgänge verwendet werden.
Signatur überprüfen
Wir empfehlen, beim Implementieren des HTTPS-Endpunkts die Tink-Mediathek zur Prüfung der Nachrichtensignatur zu verwenden. Die Tink-Mediathek stellt PaymentMethodTokenRecipient
bereit. Dieses Dienstprogramm überprüft die Signatur automatisch und gibt die Nachricht bei erfolgreicher Bestätigung zurück.
Das folgende Beispiel zeigt, wie die Tink-Mediathek zum Implementieren von PaymentMethodTokenRecipient
verwendet wird:
import java.io.IOException; import javax.servlet.http.*; import com.google.common.io.CharStreams; import com.google.crypto.tink.apps.paymentmethodtoken.*; // Replace ISSUER_ID with your issuer id private static final String RECIPIENT_ID = "ISSUER_ID"; private static final String PUBLIC_KEY_URL = "https://pay.google.com/gp/m/issuer/keys"; private static final String SENDER_ID = "GooglePayPasses"; private static final String PROTOCOL = "ECv2SigningOnly"; private static final GooglePaymentsPublicKeysManager keysManager = new GooglePaymentsPublicKeysManager.Builder() .setKeysUrl(PUBLIC_KEY_URL) .build(); public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { try { // Extract signed message with signature from POST request body. String signedMessage = CharStreams.toString(request.getReader()); PaymentMethodTokenRecipient recipient = new PaymentMethodTokenRecipient.Builder() .protocolVersion(PROTOCOL) .fetchSenderVerifyingKeysWith(keysManager) .senderId(SENDER_ID) .recipientId(RECIPIENT_ID) .build(); String serializedJsonMessage = recipient.unseal(signedMessage); // Use serializedJsonMessage to extract the details } catch (Exception e) { // Handle the error } }
Expected message format
The message format is JSON that's serialized into a string with the following properties:
Identifier | Description |
---|---|
classId |
Fully qualified class ID. Uses the following format: <issuer_id.class_id> objectId
Voll qualifizierte Objekt-ID. Verwendet das folgende Format: <issuer_id.object_id> expTimeMillis
Ablaufzeit in Millisekunden seit EPOCH. Danach muss die Nachricht als ungültig eingestuft werden.
eventType
Kann entweder del oder save für
DELETE und SAVE sein.
nonce
Nonce zur Nachverfolgung von doppelten Übermittlungen.
Anfrage von einem Google-Server verarbeitenIm Folgenden findest du eine Liste der wichtigsten Felder im Header der Anfrage, die an deinen Callback-Endpunkt gesendet wird:
Konfiguriere deinen Server so, dass er die Anfrage nicht ablehnt. Dazu kannst du in User-agent: Google-Valuables Disallow: WiederholungsversucheCallbacks werden bestmöglich umgesetzt. Im Falle von vorübergehenden Fehlern versucht Google drei Tage lang, die Nachricht zu senden. Nach drei Tagen löscht Google die Nachricht. Erneute Sendeversuche werden nicht mehr unternommen. Doppelte Übermittlungen
In einigen Fällen kann es zu doppelten Übermittlungen kommen. Wir empfehlen die Verwendung von Sofern nicht anders angegeben, sind die Inhalte dieser Seite unter der Creative Commons Attribution 4.0 License und Codebeispiele unter der Apache 2.0 License lizenziert. Weitere Informationen finden Sie in den Websiterichtlinien von Google Developers. Java ist eine eingetragene Marke von Oracle und/oder seinen Partnern. Zuletzt aktualisiert: 2023-09-26 (UTC).
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"Benötigte Informationen nicht gefunden"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"Zu umständlich/zu viele Schritte"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"Nicht mehr aktuell"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"Problem mit der Übersetzung"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"Problem mit Beispielen/Code"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"Sonstiges"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"Leicht verständlich"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"Mein Problem wurde gelöst"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"Sonstiges"
}]
|