Notifications Sub-API – Übersicht

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 Header Content-Type auf application/json gesetzt ist.
  • Muss einen der folgenden HTTP-Statuscodes zurückgeben, um den Empfang der Benachrichtigung zu bestätigen:

    • 102
    • 200
    • 201
    • 202
    • 204

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:

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: