Omówienie interfejsu Notifications API

Za pomocą interfejsu Notifications API możesz otrzymywać powiadomienia push, gdy dane na Twoich kontach Merchant Center ulegną zmianie. Zamiast okresowo odpytywać interfejs API w celu wykrywania zmian, możesz subskrybować kanały zdarzeń w czasie rzeczywistym dostarczane bezpośrednio do skonfigurowanego przez Ciebie punktu końcowego HTTPS.

Podinterfejs 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 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ązane, zmodyfikowane lub usunięte połączenie z usługą konta).

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

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

  • Musi to być publicznie dostępny adres HTTPS z prawidłowym certyfikatem SSL podpisanym przez uznawany 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ć, że powiadomienie zostało odebrane:

    • 102
    • 200
    • 201
    • 202
    • 204

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

Zarządzaj subskrypcjami

Podinterfejs API powiadomień 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 ma inną strukturę ł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 nazwy zasobu subskrypcji:

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

Aktualizowanie subskrypcji

Aby zaktualizować adres URI wywołania zwrotnego w przypadku istniejącej subskrypcji, wyślij żądanie PATCH z elementem 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 wyśle powiadomienie na zarejestrowane urządzenie callBackUri. Powiadomienie push przychodzi w kopercie JSON z zakodowanym w formacie base64 ładunkiem data:

{"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 określonych zdarzeń, zapoznaj się z tymi artykułami: