Bu sayfada, push bildirimlerinin Reseller API ile nasıl kullanılacağı açıklanmaktadır.
Genel Bakış
Reseller API, Google Workspace abonelik etkinlikleri hakkında push bildirimleri göndermek için Pub/Sub API'yi kullanır. Örneğin, müşteri abonelik durumları değiştiğinde bildirim almak için push bildirimlerini ayarlayabilirsiniz.
Ön koşullar
- Google Cloud projeniz için Pub/Sub API'yi etkinleştirin.
- Cloud projenizde hizmet hesabınıza Pub/Sub IAM rolleri atayın.
roles/pubsub.editorrolünün verilmesi önerilir ancak daha spesifik Pub/Sub izinleri kullanabilirsiniz.
Konu oluşturma
Konu oluşturmak için resellernotify.register yöntemini kullanarak Reseller API'ye kaydolun. Bu yöntem, parametre olarak bir hizmet hesabı e-posta adresi alır.
Yalnızca bu yöntemle yetkilendirilmiş hizmet hesapları konunuza abone olabilir.
POST https://reseller.googleapis.com/apps/reseller/v1/resellernotify/register
{
"serviceAccountEmailAddress": "reseller@reseller-project.iam.gserviceaccount.com"
}
Başarılı bir yanıt, HTTP 200 durum kodu ve Pub/Sub konu adınızı içeren bir JSON yanıtı döndürür.
Örnek yanıt:
{
"topicName": "projects/partner-watch/topics/C0abcdefg"
}
Daha fazla hizmet hesabı yetkilendirmek için resellernotify.register işlevini tekrar çağırın.
Bir hizmet hesabının erişimini iptal etme
Reseller API, resellernotify.unregister uç noktasını kullanarak hizmet hesaplarının kaydını silebilir:
POST https://reseller.googleapis.com/apps/reseller/v1/resellernotify/unregister
{
"serviceAccountEmailAddress": "reseller@reseller-project.iam.gserviceaccount.com"
}
Bir konuya abone olma
Pub/Sub konusunu oluşturduktan sonra uygulamanızın değişiklik etkinliklerini nasıl tüketeceğini ayarlayın. Aşağıdakilerden birini seçin:
- Push aboneliği: HTTP
POSTgeri çağırma işlevi sağlarsınız. Pub/Sub, uygulamanızı yeni etkinlikler hakkında bilgilendirmek için bu geri çağırmayı kullanır. - Çekme aboneliği: Uygulamanız, sıraya alınmış değişiklikleri almak için düzenli olarak bir HTTP çağrısı yapar.
Bir konuya abone olma isteği örneği:
PUT https://pubsub.googleapis.com/v1/projects/PROJECT/subscriptions/SUBSCRIPTION_NAME
{
"topic": "TOPIC_NAME"
// Only needed for push configurations
"pushConfig": {
"pushEndpoint": "PUSH_NOTIFICATION_ENDPOINT"
},
}
Aşağıdakini değiştirin:
PROJECT: Google Cloud projeniz.SUBSCRIPTION_NAME: Aboneliğiniz için tanımlayıcı bir ad.TOPIC_NAME: Daha önce oluşturduğunuz Pub/Sub konusu.PUSH_NOTIFICATION_ENDPOINT: Push bildirimi işleyici uç noktanız.
Başarılı bir yanıt, HTTP 200 durum kodu döndürür. Örnek yanıt:
{
"name": "projects/PROJECT/subscriptions/SUBSCRIPTION_NAME",
"topic": "TOPIC_NAME",
"pushConfig": {
"pushEndpoint": "PUSH_NOTIFICATION_ENDPOINT"
},
"ackDeadlineSeconds": 10
}
Bildirim biçimleri
Aşağıda örnek bir Pub/Sub bildirimi verilmiştir. İleti verileri, base64 kodlu bir JSON dizesidir.
{
"message": {
"attributes": {},
"data": "eyJza3VfaWQiOiAiR29vZ2xlLUFwcHMtVW5saW1pdGVkIiwgImV2ZW50X3R5cGUiOiAiU1VCU0NSSVBUSU9OX0NBTkNFTExFRCIsICJjdXN0b21lcl9kb21haW5fbmFtZSI6ICJkb21haW4uY29tIiwgInN1YnNjcmlwdGlvbl9pZCI6ICIxMjM0NTY3IiwgImN1c3RvbWVyX2lkIjogIkMwYWJjZGVmIiwgIm1lc3NhZ2VfaWQiOiAiODY3NTMwOSIsICJwdWJsaXNoX3RpbWUiOiB7InNlY29uZHMiOiAxNDU3NzMxODQ2LCAibmFub3MiOiAzNDkwMDAwMDB9LCAicmVzZWxsZXJfY3VzdG9tZXJfaWQiOiAiQzByZXNlbGxlciJ9",
"message_id": 1234567891012131
},
"subscription": "projects/PROJECT/subscriptions/SUBSCRIPTION_NAME"
}
Kod çözme işleminden sonraki örnek message.data nesnesi:
{
"customer_id": "C0abcdef",
"customer_domain_name": "domain.com",
"event_type": "SUBSCRIPTION_CANCELLED",
"sku_id": "Google-Apps-Unlimited",
"subscription_id": "1234567",
// Optional fields dependent on event_type
"subscription_suspension_reasons": [],
"subscription_cancellation_reason": "REASON"
}
Etkinlik türleri
Olası etkinlik türleri:
NEW_SUBSCRIPTION_CREATED: Yeni bir abonelik oluşturuldu.SUBSCRIPTION_TRIAL_ENDED: Bir aboneliğin deneme süresi sona erdi.PRICE_PLAN_SWITCHED: Müşteri, esnek plandan yıllık plana geçti. Müşteri, yenileme kapsamında yıllık plandan esnek plana geçerse bu etkinlik tetiklenmez.COMMITMENT_CHANGED: Yıllık taahhüt artırıldı veya azaltıldı.SUBSCRIPTION_RENEWED: Yıllık abonelik yenilendi.SUBSCRIPTION_SUSPENDED: Abonelik askıya alındı.subscription_suspension_reasonssayfasına göz atın.SUBSCRIPTION_SUSPENSION_REVOKED: Askıya alma işlemi iptal edildi.SUBSCRIPTION_CANCELLED: Abonelik iptal edildi.subscription_cancellation_reasonsayfasına göz atın. Transferleri de algılayabilir.SUBSCRIPTION_CONVERTED: Abonelik dönüştürüldü. Örnek durumlar:- Doğrudan aboneliği bayi aboneliğine dönüştürme
- Ücretli aboneliği ek süre teklifine dönüştürme
- Online aboneliği çevrimdışı aboneliğe dönüştürme
SUBSCRIPTION_UPGRADE: Abonelik SKU'su yükseltildi. Örnek: Google Workspace Business Starter'dan Business Standard'a geçiş.SUBSCRIPTION_DOWNGRADE: Abonelik SKU'su düşürüldü. Örnek: Google Workspace Business Standard'dan Business Starter'a geçiş.LICENSE_ASSIGNMENT_CHANGED: Lisans atanmış veya iptal edilmiş. Esnek aboneliklerdeki koltuk sayısı değişikliklerini izlemek için kullanılır.
Abonelik iptali nedenleri
İptal nedeni, event_type olduğunda SUBSCRIPTION_CANCELLED. Olası nedenler:
TRANSFERRED_OUT: Müşteri, doğrudan faturalandırmaya veya başka bir bayiye aktarıldı.PURCHASE_OF_SUBSUMING_SKU: Müşteri, başka bir SKU'yu geçersiz kılan bir SKU'ya yükseltti. Örnek: Google Workspace Business Starter ve Apps Kasası'na sahip bir müşteri, Apps Kasası'nın dahil olduğu Business Plus'a yükseltme yapıyor.RESELLER_INITIATED: Bayi, aboneliği iptal etti.OTHER: Abonelik başka bir nedenle iptal edildi.
Aboneliğin askıya alınma nedenleri
Askıya alma nedeni, event_type olduğunda SUBSCRIPTION_SUSPENDED doldurulur. Olası nedenler:
PENDING_TOS_ACCEPTANCE: Müşteri, Google Workspace Yeniden Satış Hizmet Şartları'nı kabul etmemiştir.RENEWAL_WITH_TYPE_CANCEL: Müşterinin taahhüdü sona erdi ve hizmet iptal edildi.RESELLER_INITIATED: Bayi, aboneliği manuel olarak askıya aldı.TRIAL_ENDED: Müşterinin deneme süresi, deneme dışı bir plan seçilmeden sona erdi.OTHER: Müşteri, Google'ın dahili bir nedeni (ör. kötüye kullanım) nedeniyle askıya alınmıştır.
Pub/Sub sınırlamaları
Push bildirimlerinin sırası her zaman ardışık olmayabilir. İletiler birden fazla kez veya hiç teslim edilmeyebilir. Mevcut durumu çekmek için değiştirilen aboneliklerde reseller.subscriptions.get kullanmanızı öneririz.