Przegląd
Interfejs Seller API używa interfejsu Pub/Sub API do dostarczania powiadomień push o różnych zdarzeniach subskrypcji Google Workspace. Możesz na przykład skonfigurować powiadomienia push, aby otrzymywać informacje o zmianach stanu subskrypcji swoich klientów.
Wymagania wstępne
- Włącz w projekcie Google Cloud interfejs Pub/Sub API.
- Przypisz role uprawnień Pub/Sub do konta usługi w projekcie Cloud. Przypisanie roli
roles/pubsub.editor
to dobry kompromis (prosty i niezbyt szeroki), ale warto użyć bardziej konkretnych uprawnień Pub/Sub.
Tworzenie tematu
Aby utworzyć temat, musisz zarejestrować się w interfejsie Seller API, korzystając z metody resellernotify.register
.
Metoda resellernotify.register
wykorzystuje adres e-mail konta usługi jako parametr. Tylko konta usługi autoryzowane przy użyciu tej metody mogą subskrybować Twój nowo utworzony temat.
POST https://reseller.googleapis.com/apps/reseller/v1/resellernotify/register
{
"serviceAccountEmailAddress": "reseller@reseller-project.iam.gserviceaccount.com"
}
Pomyślna odpowiedź zwraca kod stanu HTTP 200
i odpowiedź JSON zawierającą nazwę tematu Pub/Sub.
Oto przykładowa odpowiedź:
{
"topicName": "projects/partner-watch/topics/C0abcdefg"
}
Aby autoryzować dodatkowe konta usługi do korzystania z tematu, możesz ponownie wywołać metodę resellernotify.register
.
Anulowanie dostępu konta usługi
Interfejs Seller API umożliwia też wyrejestrowanie kont usługi za pomocą punktu końcowego resellernotify.unregister
:
POST https://reseller.googleapis.com/apps/reseller/v1/resellernotify/unregister
{
"serviceAccountEmailAddress": "reseller@reseller-project.iam.gserviceaccount.com"
}
Subskrybowanie tematu
Po utworzeniu tematu Pub/Sub musisz skonfigurować sposób wykorzystania przez aplikację zdarzeń zmiany. Wybierz jedną z tych opcji:
- Subskrypcja push: podajesz wywołanie zwrotne HTTP
POST
. Pub/Sub używa tego wywołania zwrotnego do powiadamiania aplikacji o nowych zdarzeniach. - Subskrypcja pull: aplikacja okresowo wykonuje wywołanie HTTP, aby pobrać wszystkie zmiany w kolejce.
Oto przykładowa prośba o zasubskrybowanie tematu:
PUT https://pubsub.googleapis.com/v1/projects/PROJECT/subscriptions/SUBSCRIPTION_NAME { "topic": "TOPIC_NAME" // Only needed for push configurations "pushConfig": { "pushEndpoint": "PUSH_NOTIFICATION_ENDPOINT" }, }
Zastąp następujące elementy:
PROJECT
: Twój projekt Google Cloud.SUBSCRIPTION_NAME
: nazwa identyfikująca Twoją subskrypcję.TOPIC_NAME
: utworzony wcześniej temat Pub/Sub.PUSH_NOTIFICATION_ENDPOINT
: punkt końcowy modułu obsługi powiadomień push.
Pomyślna odpowiedź zwraca kod stanu HTTP 200
. Oto przykładowa odpowiedź:
{ "name": "projects/PROJECT/subscriptions/SUBSCRIPTION_NAME", "topic": "TOPIC_NAME", "pushConfig": { "pushEndpoint": "PUSH_NOTIFICATION_ENDPOINT" }, "ackDeadlineSeconds": 10 }
Formaty powiadomień
Poniżej znajdziesz przykładowe powiadomienie Pub/Sub. Dane wiadomości są przesyłane w postaci ciągu znaków JSON zakodowanego w formacie base64.
{ "message": { "attributes": {}, "data": "eyJza3VfaWQiOiAiR29vZ2xlLUFwcHMtVW5saW1pdGVkIiwgImV2ZW50X3R5cGUiOiAiU1VCU0NSSVBUSU9OX0NBTkNFTExFRCIsICJjdXN0b21lcl9kb21haW5fbmFtZSI6ICJkb21haW4uY29tIiwgInN1YnNjcmlwdGlvbl9pZCI6ICIxMjM0NTY3IiwgImN1c3RvbWVyX2lkIjogIkMwYWJjZGVmIiwgIm1lc3NhZ2VfaWQiOiAiODY3NTMwOSIsICJwdWJsaXNoX3RpbWUiOiB7InNlY29uZHMiOiAxNDU3NzMxODQ2LCAibmFub3MiOiAzNDkwMDAwMDB9LCAicmVzZWxsZXJfY3VzdG9tZXJfaWQiOiAiQzByZXNlbGxlciJ9", "message_id": 1234567891012131 }, "subscription": "projects/PROJECT/subscriptions/SUBSCRIPTION_NAME" }
Oto przykładowy obiekt message.data
po zdekodowaniu:
{
"customer_id": "C0abcdef",
"customer_domain_name": "domain.com",
"event_type": "SUBSCRIPTION_CANCELLED",
"sku_id": "Google-Apps-Unlimited",
"subscription_id": "1234567",
// Optional fields depended on event_type
"subscription_suspension_reasons": [],
"subscription_cancellation_reason": "REASON"
}
Typy zdarzeń
Poniższa lista zawiera wszystkie możliwe typy zdarzeń:
NEW_SUBSCRIPTION_CREATED
: utworzono nową subskrypcję.SUBSCRIPTION_TRIAL_ENDED
: zakończył się okres próbny subskrypcji.PRICE_PLAN_SWITCHED
: klient przeszedł z abonamentu elastycznego na abonament roczny. To zdarzenie nie jest wywoływane, jeśli w ramach odnowienia klient przejdzie z abonamentu opartego na zobowiązaniach na abonament elastyczny.COMMITMENT_CHANGED
: roczne zobowiązanie zostało zwiększone lub zmniejszone.SUBSCRIPTION_RENEWED
: subskrypcja roczna została odnowiona.SUBSCRIPTION_SUSPENDED
: subskrypcja została zawieszona. Zobacz polesubscription_suspension_reasons
.SUBSCRIPTION_SUSPENSION_REVOKED
: zawieszenie subskrypcji, która została wcześniej zawieszona, zostało odwołane.SUBSCRIPTION_CANCELLED
: subskrypcja została anulowana. Zobacz polesubscription_cancellation_reason
. Może też służyć do wykrywania transferów.SUBSCRIPTION_CONVERTED
: subskrypcja została przekonwertowana. Oto kilka przykładów tego zdarzenia:- Zmień subskrypcję bezpośrednią na subskrypcję sprzedawcy.
- Przekształć płatną subskrypcję na ofertę z odroczoną płatnością.
- Przekonwertuj subskrypcję online na subskrypcję offline.
SUBSCRIPTION_UPGRADE
: przeszedłeś na wyższą wersję SKU subskrypcji. Na przykład przenieśliśmy subskrypcję z Google Workspace Business Starter na Business Standard.SUBSCRIPTION_DOWNGRADE
: kod SKU subskrypcji został obniżony. np. zmieniono subskrypcję z Google Workspace Business Standard na wersję Business Starter.LICENSE_ASSIGNMENT_CHANGED
: licencja została przypisana użytkownikowi lub mu odebrana. Możesz użyć tego zdarzenia do reaktywnego śledzenia zmian liczby stanowisk w przypadku subskrypcji elastycznych.
Powody anulowania subskrypcji
Powód anulowania subskrypcji jest podawany, gdy event_type
ma wartość SUBSCRIPTION_CANCELLED
. Oto możliwe przyczyny anulowania:
TRANSFERRED_OUT
: klient przeszedł na rozliczenia bezpośrednie lub do innego sprzedawcy.PURCHASE_OF_SUBSUMING_SKU
: klient przeszedł na SKU, który zastępuje inny kod SKU. Jeśli na przykład klient korzystający z Google Workspace Business Starter i Google Vault przejdzie na Google Workspace Business Plus, subskrypcja Vault zostanie podliczona, ponieważ jest dostępna w Google Workspace Business Plus.RESELLER_INITIATED
: sprzedawca anulował subskrypcję.OTHER
: subskrypcja została anulowana z innego powodu niż podano na liście.
Przyczyny zawieszenia subskrypcji
Powód zawieszenia subskrypcji jest podawany, gdy event_type
ma wartość SUBSCRIPTION_SUSPENDED
. Oto możliwe przyczyny zawieszenia:
PENDING_TOS_ACCEPTANCE
: klient nie zalogował się i nie zaakceptował Warunków sprzedaży Google Workspace.RENEWAL_WITH_TYPE_CANCEL
: zobowiązanie klienta zakończyło się, a jego usługa została anulowana z końcem umowy.RESELLER_INITIATED
: sprzedawca ręcznie zawiesił subskrypcję.TRIAL_ENDED
: okres próbny klienta dobiegł końca, a klient nie wybrał abonamentu innego niż okres próbny.OTHER
: klient został zawieszony z powodów wewnętrznych Google, na przykład wskutek nadużycia.
Ograniczenia Pub/Sub
Kolejność powiadomień push nie jest gwarantowana. Wiadomości mogą być dostarczane wiele razy i w ekstremalnych sytuacjach, ale wcale nie. Zalecamy użycie reseller.subscriptions.get
w przypadku wszystkich zmienionych subskrypcji, aby pobrać bieżący stan.