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 HeaderContent-Type, der aufapplication/jsongesetzt ist, müssen akzeptiert werden. Es muss einer der folgenden HTTP-Statuscodes zurückgegeben werden, um zu bestätigen, dass die Benachrichtigung empfangen wurde:
102200201202204
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:
- Push-Benachrichtigungen für Änderungen des Produktstatus erhalten: Hier erfahren Sie, wie Sie sich für Benachrichtigungen zu Produktablehnungen und ‑genehmigungen anmelden und die
ProductStatusChangeMessage-Nutzlast parsen. - Push-Benachrichtigungen für Änderungen am Kontoservice erhalten: Hier erfahren Sie, wie Sie Updates zu Kontobeziehungen abonnieren und die
ResourceChangeMessage-Nutzlast parsen.