Notifications Sub-API – Übersicht

Mit der Unter-API „Notifications“ können Sie Push-Benachrichtigungen erhalten, wenn sich Daten in Ihren Merchant Center-Konten ändern. Anstatt die API regelmäßig abzufragen, um Änderungen zu erkennen, können Sie Ereignis-Feeds in Echtzeit abonnieren, die direkt an einen von Ihnen konfigurierten HTTPS-Endpunkt gesendet werden.

Die Notifications-Unter-API unterstützt Benachrichtigungen für:

  • Änderungen des Produktstatus: Sie erhalten Echtzeitbenachrichtigungen, wenn sich der Freigabestatus eines Produkts ändert (z. B. wenn ein Produkt abgelehnt oder freigegeben wird). Das gilt für alle Ihre verknüpften Konten oder Unterkonten.
  • Änderungen am Kontoservice: Sie erhalten Echtzeitbenachrichtigungen, wenn eine AccountService-Ressource erstellt, aktualisiert oder gelöscht wird, z. B. wenn eine Kontoservicebeziehung eingerichtet, geändert oder entfernt wird.

Voraussetzungen und Einrichtung der Callback-URI

Wenn Sie Push-Benachrichtigungen erhalten möchten, müssen Sie eine callBackUri angeben. Ihr 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.
  • HTTP-POST-Anfragen mit dem Header Content-Type, der auf application/json gesetzt ist, müssen akzeptiert werden.
  • Es muss einer der folgenden HTTP-Statuscodes zurückgegeben werden, um zu bestätigen, dass die Benachrichtigung empfangen wurde:

    • 102
    • 200
    • 201
    • 202
    • 204

Sie können dieselbe Callback-URI für mehrere Abos verwenden. Um die Last auf einen einzelnen Endpunkt zu minimieren, verwenden Sie für jedes erweiterte Konto und jeden Ereignistyp einen eindeutigen Callback-URI.

Abos verwalten

Die Unter-API „Notifications“ bietet Methoden zum Erstellen, Auflisten, Abrufen, Aktualisieren und Löschen von Benachrichtigungskonfigurationen.

Abo erstellen

Das Erstellen von Abos ist spezifisch für den Ereignistyp, den Sie empfangen 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 Anleitungen:

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 bestehendes Abo aktualisieren möchten, senden Sie eine PATCH-Anfrage mit einem update_mask, in dem 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 entschlüsseln

Wenn ein Ereignis eintritt, sendet Google eine Benachrichtigung an Ihr registriertes callBackUri. Die Push-Benachrichtigung wird in einem JSON-Umschlag mit einer base64-codierten data-Nutzlast empfangen:

{"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: