Otrzymywanie powiadomień push o zmianach w usługach na koncie

Możesz subskrybować powiadomienia ACCOUNT_SERVICE_CHANGE, aby otrzymywać alerty w czasie rzeczywistym, gdy zasoby AccountService są tworzone, aktualizowane lub usuwane. Jest to szczególnie przydatne w przypadku dostawców zewnętrznych i firm zarządzających relacjami z klientami w ramach usług obejmujących wiele kont.

Subskrypcja zmian w usługach konta umożliwia natychmiastowe wykrywanie, kiedy usługa konta jest proponowana, zatwierdzana, aktualizowana lub usuwana, bez konieczności odpytywania interfejsu API.

Zanim zaczniesz, upewnij się, że identyfikator URI wywołania zwrotnego jest skonfigurowany zgodnie z wymaganiami opisanymi w omówieniu podrzędnego interfejsu API powiadomień.

Subskrybowanie zmian w usługach na koncie

Aby zasubskrybować zmiany w usłudze konta, wyślij żądanie POST do zasobu notificationsubscriptions z parametrem registeredEvent ustawionym na ACCOUNT_SERVICE_CHANGE.

Subskrybowanie konkretnego konta docelowego

Przykładowa prośba o subskrypcję zmian w usłudze konta dla konkretnego konta sprzedawcy:

POST https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/
{
  "registeredEvent": "ACCOUNT_SERVICE_CHANGE",
  "targetAccount": "accounts/{TARGETACCOUNT_ID}",
  "callBackUri": "https://example.com/callback"
}

Zastąp te elementy:

  • ACCOUNT_ID: identyfikator konta, do którego należy subskrypcja i na które są wysyłane powiadomienia.
  • TARGETACCOUNT_ID: identyfikator konta, o którym chcesz otrzymywać powiadomienia.

Subskrybuj wszystkie zarządzane konta

Dostawcy i firmy zarządzające wieloma kontami sprzedawcy mogą subskrybować zmiany w usługach kont na wszystkich zarządzanych kontach, ustawiając:allManagedAccounts: true

POST https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/
{
  "registeredEvent": "ACCOUNT_SERVICE_CHANGE",
  "allManagedAccounts": true,
  "callBackUri": "https://example.com/callback"
}

Wywołania zakończone powodzeniem zwracają identyfikator subskrypcji name, w tym unikalny identyfikator subskrypcji:

{
  "name":"accounts/{ACCOUNT_ID}/notificationsubscriptions/{SUBSCRIPTION_ID}",
  "registeredEvent": "ACCOUNT_SERVICE_CHANGE",
  "allManagedAccounts": true,
  "callBackUri": "https://example.com/callback"
}

Dekodowanie ładunków zmian w usłudze konta

Gdy nastąpi zmiana usługi konta, Twój identyfikator URI wywołania zwrotnego otrzyma zakodowaną w formacie base64 wiadomość. Po zdekodowaniu ładunek jest zgodny z formatem ResourceChangeMessage:

{
  "account": "accounts/{TARGETACCOUNT_ID}",
  "managingAccount": "accounts/{ACCOUNT_ID}",
  "resourceType": "ACCOUNT_SERVICE",
  "resource": "accounts/{TARGETACCOUNT_ID}/services/{SERVICE_ID}",
  "operation": "CREATE",
  "eventTime": "2026-08-25T10:00:00Z"
}

Pola i reguły ładunku

  • account: konto docelowe, do którego należy zmieniony podmiot usługi (accounts/{merchant_id}).
  • managingAccount: konto, które zarządza kontem sprzedawcy (accounts/{service_provider_id}).
  • resourceType: typ zasobu, który uległ zmianie (ACCOUNT_SERVICE).
  • resource: pełna nazwa zasobu usługi konta (np. accounts/{account}/services/{service}).
  • operation: operacja wykonana na zasobie:
    • CREATE: utworzono nową relację konta usługi.
    • UPDATE: istniejąca konfiguracja usługi konta lub uprawnienia zostały zmienione.
    • DELETE: usunięto relację między kontem a usługą.
  • eventTime: sygnatura czasowa wygenerowania zdarzenia. Użyj tej sygnatury czasowej, aby zapewnić prawidłową kolejność zdarzeń.

Powiadomienia o zmianach w usługach na koncie testowym

Użyj poniższej przykładowej prośby, aby sprawdzić, czy punkt końcowy wywołania zwrotnego prawidłowo odbiera, potwierdza i dekoduje wiadomości o zmianach w usłudze konta:

curl --request POST \
'https://{YOUR_CALLBACK_URI}' \
--header 'Content-Type: application/json' \
--header 'Accept: text/plain' \
--data '{"message":{"data": "ewogICJhY2NvdW50IjogImFjY291bnRzLzEyMzQiLAogICJtYW5hZ2luZ0FjY291bnQiOiAiYWNjb3VudHMvNTY3OCIsCiAgInJlc291cmNlVHlwZSI6ICJBQ0NPVU5UX1NFUlZJQ0UiLAogICJyZXNvdXJjZSI6ICJhY2NvdW50cy8xMjM0L3NlcnZpY2VzLzEyMyIsCiAgIm9wZXJhdGlvbiI6ICJDUkVBVEUiLAogICJldmVudFRpbWUiOiAiMjAyNi0wOC0yNVQxMDowMDowMFoiCn0="}}'

W odpowiedzi na to wywołanie identyfikator URI wywołania zwrotnego powinien zwrócić akceptowalny kod stanu HTTP (np. 200 OK). Zdekodowana wiadomość ma następującą treść:

{
  "account": "accounts/1234",
  "managingAccount": "accounts/5678",
  "resourceType": "ACCOUNT_SERVICE",
  "resource": "accounts/1234/services/123",
  "operation": "CREATE",
  "eventTime": "2026-08-25T10:00:00Z"
}