Sie können die Notifications Sub-API verwenden, um Push-Benachrichtigungen zu erhalten, wenn sich Daten in Ihren Merchant Center-Konten ändern. Anstatt die API regelmäßig abzufragen, um Änderungen zu erkennen, können Sie Echtzeit-Ereignisfeeds abonnieren, die direkt an einen von Ihnen konfigurierten HTTPS-Endpunkt gesendet werden.
Die Notifications API unterstützt Benachrichtigungen für:
- Änderungen des Produktstatus: Sie erhalten Echtzeitbenachrichtigungen, wenn sich der Freigabestatus eines Produkts in einem Ihrer verknüpften Konten oder Unterkonten ändert, z. B. wenn ein Produkt abgelehnt oder freigegeben wird.
- Änderungen am Kontodienst:
Sie erhalten Echtzeitbenachrichtigungen, wenn eine
AccountService-Ressource erstellt, aktualisiert oder gelöscht wird (z. B. wenn eine Kontodienstbeziehung hergestellt, geändert oder entfernt wird).
Voraussetzungen und Einrichtung des Callback-URI
Wenn Sie Push-Benachrichtigungen erhalten möchten, müssen Sie eine callBackUri angeben. Der Callback-URI muss die folgenden Anforderungen erfüllen:
- Muss eine öffentlich zugängliche HTTPS-Adresse mit einem gültigen SSL-Zertifikat sein, das von einer anerkannten Zertifizierungsstelle signiert wurde.
- Muss HTTP-
POST-Anfragen akzeptieren, bei denen der HeaderContent-Typeaufapplication/jsongesetzt ist. Muss einen der folgenden HTTP-Statuscodes zurückgeben, um den Empfang der Benachrichtigung zu bestätigen:
102200201202204
Sie können denselben Callback-URI für mehrere Abos verwenden. Um die Last auf einem einzelnen Endpunkt zu minimieren, verwenden Sie für jedes erweiterte Konto und jeden Ereignistyp einen eindeutigen Callback-URI.
Abos verwalten
Die Notifications-Sub-API bietet Methoden zum Erstellen, Auflisten, Abrufen, Aktualisieren und Löschen von Benachrichtigungskonfigurationen.
Abo erstellen
Die Erstellung eines Abos ist spezifisch für den Ereignistyp, den Sie erhalten möchten. Für jeden Ereignistyp sind unterschiedliche Konfigurationsfelder erforderlich und es werden unterschiedliche Nutzlaststrukturen bereitgestellt.
Informationen zum Erstellen von Abos und zum Aufrufen von Beispielanfragen für die einzelnen Ereignistypen finden Sie in den entsprechenden Leitfäden:
- Benachrichtigungen zu Änderungen des Produktstatus abonnieren
- Änderungen an Kontodiensten abonnieren
Abos auflisten
Wenn Sie alle Benachrichtigungsabos für ein Konto auflisten möchten, senden Sie eine GET-Anfrage an die Sammlung notificationsubscriptions:
GET https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions
Abo abrufen
Wenn Sie Details zu einem bestimmten Abo abrufen möchten, verwenden Sie den Ressourcennamen des Abos:
GET https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/{SUBSCRIPTION_ID}
Abos aktualisieren
Wenn Sie den Callback-URI für ein vorhandenes Abo aktualisieren möchten, senden Sie eine PATCH-Anfrage mit einer update_mask, in der die zu aktualisierenden Felder angegeben sind:
PATCH https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/{SUBSCRIPTION_ID}?update_mask=callBackUri
{
"callBackUri": "https://example.com/updated-callback"
}
Abos löschen
Wenn Sie keine Benachrichtigungen mehr erhalten möchten, löschen Sie das Abo:
DELETE https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/{SUBSCRIPTION_ID}
Benachrichtigungen decodieren
Wenn ein Ereignis auftritt, sendet Google eine Benachrichtigung an die registrierte callBackUri. Die Push-Benachrichtigung wird in einem JSON-Umschlag mit einer base64-codierten data-Nutzlast gesendet:
{"message":{"data":"{base64_encoded_string}"}}
Decodieren Sie den Datenstring, um auf die JSON-Ereignisnutzlast zuzugreifen. Der folgende Spring Boot-Beispielcontroller zeigt, wie Push-Benachrichtigungen empfangen und decodiert werden:
@RestController
public class ExampleController {
@RequestMapping(value = "/push",
method = RequestMethod.POST,
consumes = {"application/json"},
produces = {"text/plain"})
@ResponseStatus(HttpStatus.OK)
public void handleNotification(@RequestBody String message) {
JSONObject jsonObject = new JSONObject(message);
JSONObject jsonMessage = jsonObject.getJSONObject("message");
String encodedData = jsonMessage.getString("data");
byte[] decodedBytes = Base64.getDecoder().decode(encodedData);
String decodedPayload = new String(decodedBytes);
// Process decodedPayload according to the registered event type
}
}
Nächste Schritte
Informationen zum Konfigurieren von Abos und zum Verarbeiten decodierter Nutzlasten für bestimmte Ereignisse finden Sie hier:
- Push-Benachrichtigungen bei Änderungen des Produktstatus erhalten:
Hier erfahren Sie, wie Sie Updates zu Produktablehnungen und -genehmigungen abonnieren und die
ProductStatusChangeMessage-Nutzlast parsen. - Push-Benachrichtigungen für Änderungen an Kontodiensten erhalten:
Hier erfahren Sie, wie Sie Updates zu Kontobeziehungen abonnieren und die
ResourceChangeMessage-Nutzlast parsen.