Omówienie interfejsu Notifications API

Możesz użyć podrzędnego interfejsu API powiadomień, aby otrzymywać powiadomienia push, gdy dane na Twoich kontach Merchant Center ulegną zmianie. Zamiast okresowo odpytywać interfejs API w celu wykrycia zmian, możesz zasubskrybować kanały zdarzeń w czasie rzeczywistym dostarczane bezpośrednio do skonfigurowanego przez Ciebie punktu końcowego HTTPS.

Interfejs API powiadomień obsługuje powiadomienia dotyczące:

  • Zmiany stanu produktu: otrzymuj alerty w czasie rzeczywistym, gdy zmieni się stan zatwierdzenia produktu (np. gdy produkt zostanie odrzucony lub zatwierdzony) na dowolnym z Twoich połączonych kont lub subkont.
  • Zmiany w usługach konta: otrzymuj alerty w czasie rzeczywistym, gdy zasób AccountService zostanie utworzony, zaktualizowany lub usunięty (np. gdy zostanie nawiązana, zmodyfikowana lub usunięta relacja usługi konta).

Wymagania wstępne i konfiguracja identyfikatora URI wywołania zwrotnego

Aby otrzymywać powiadomienia push, musisz podać callBackUri. Identyfikator URI wywołania zwrotnego musi spełniać te wymagania:

  • Musi być publicznie dostępnym adresem HTTPS z prawidłowym certyfikatem SSL podpisanym przez uznany urząd certyfikacji.
  • Musi akceptować żądania HTTP POST z nagłówkiem Content-Type ustawionym na application/json.
  • Musi zwracać jeden z tych kodów stanu HTTP, aby potwierdzić otrzymanie powiadomienia:

    • 102
    • 200
    • 201
    • 202
    • 204

Możesz używać tego samego identyfikatora URI wywołania zwrotnego w przypadku wielu subskrypcji. Aby zminimalizować obciążenie pojedynczego punktu końcowego, użyj unikalnego identyfikatora URI wywołania zwrotnego dla każdego konta zaawansowanego i typu zdarzenia.

Zarządzaj subskrypcjami

Interfejs Notifications sub-API udostępnia metody tworzenia, wyświetlania, pobierania, aktualizowania i usuwania konfiguracji powiadomień.

Tworzenie subskrypcji

Tworzenie subskrypcji zależy od typu zdarzenia, które chcesz otrzymywać. Każdy typ zdarzenia wymaga innych pól konfiguracji i dostarcza różne struktury ładunku.

Aby dowiedzieć się, jak tworzyć subskrypcje i wyświetlać przykładowe żądania dla każdego typu zdarzenia, zapoznaj się z odpowiednimi przewodnikami:

Wyświetlanie listy subskrypcji

Aby wyświetlić listę wszystkich subskrypcji powiadomień na koncie, wyślij żądanie GET do kolekcji notificationsubscriptions:

GET https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions

Pobieranie subskrypcji

Aby uzyskać szczegółowe informacje o konkretnej subskrypcji, użyj jej nazwy zasobu:

GET https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/{SUBSCRIPTION_ID}

Aktualizowanie subskrypcji

Aby zaktualizować identyfikator URI wywołania zwrotnego dla istniejącej subskrypcji, wyślij żądanie PATCH z parametrem update_mask określającym pola do zaktualizowania:

PATCH https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/{SUBSCRIPTION_ID}?update_mask=callBackUri
{
  "callBackUri": "https://example.com/updated-callback"
}

Usuwanie subskrypcji

Aby przestać otrzymywać powiadomienia, usuń subskrypcję:

DELETE https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/{SUBSCRIPTION_ID}

Dekodowanie powiadomień

Gdy wystąpi zdarzenie, Google wysyła powiadomienie do zarejestrowanego callBackUri. Powiadomienie push jest dostarczane w kopercie JSON z ładunkiem data zakodowanym w formacie base64:

{"message":{"data":"{base64_encoded_string}"}}

Zdekoduj ciąg danych, aby uzyskać dostęp do ładunku zdarzenia JSON. Poniższy przykładowy kontroler Spring Boot pokazuje, jak odbierać i dekodować powiadomienia push:

@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
  }
}

Dalsze kroki

Aby skonfigurować subskrypcje i obsługiwać zdekodowane ładunki w przypadku konkretnych zdarzeń, zapoznaj się z tymi artykułami: