Push bildirimleri

Genel bakış

Bayi API'si, farklı Google Workspace abonelik etkinlikleri hakkında push bildirimleri göndermek için Pub/Sub API'yi kullanır. Örneğin, müşterilerinizin abonelik durumları değiştiğinde bildirim almak için push bildirimleri ayarlayabilirsiniz.

Ön koşullar

  • Google Cloud projeniz için Pub/Sub API'sini etkinleştirin.
  • Cloud projenizde hizmet hesabınıza Pub/Sub IAM rolleri atayın. roles/pubsub.editor rolünü vermek iyi bir güvenlik ihlalidir (kolay ve çok geniş kapsamlı değildir) ancak daha spesifik Pub/Sub izinleri kullanmak isteyebilirsiniz.

Konu oluşturma

Konu oluşturmak için resellernotify.register yöntemini kullanarak Bayi API'sine kaydolmanız gerekir. resellernotify.register yöntemi, parametre olarak bir hizmet hesabı e-posta adresini alır. Yeni oluşturduğunuz konuya yalnızca bu yöntemle yetki verilmiş hizmet hesapları 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, bir HTTP 200 durum kodu ve Pub/Sub konu adınızı içeren bir JSON yanıtı döndürür.

Aşağıda örnek bir yanıt verilmiştir:

{
  "topicName": "projects/partner-watch/topics/C0abcdefg"
}

Ek hizmet hesaplarına konunuzu kullanma yetkisi vermek için resellernotify.register numaralı telefonu tekrar arayabilirsiniz.

Hizmet hesabı için erişimi iptal etme

Bayi API'si resellernotify.unregister uç noktasını kullanarak hizmet hesaplarının kaydını iptal etme olanağı da sunar:

POST https://reseller.googleapis.com/apps/reseller/v1/resellernotify/unregister
{
  "serviceAccountEmailAddress": "reseller@reseller-project.iam.gserviceaccount.com"
}

Konuya abone olma

Pub/Sub konusunu oluşturduktan sonra, uygulamanızın değişiklik etkinliklerinizi nasıl tüketeceğini ayarlamanız gerekir. Aşağıdaki seçeneklerden birini belirleyin:

  • Push aboneliği: Bir HTTP POST geri çağırması sağlarsınız. Pub/Sub, uygulamanızı yeni etkinlikler hakkında bilgilendirmek için bu geri çağırmayı kullanır.
  • Aboneliği çekme: Uygulamanız, sıraya alınan tüm değişiklikleri almak için düzenli olarak HTTP çağrısı yapar.

Aşağıda, bir konuya abone olma isteği örneği verilmiştir:

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ızdır.

Başarılı bir yanıt, bir HTTP 200 durum kodu döndürür. Aşağıda örnek bir yanıt verilmiştir:

{
  "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. Mesaj verileri, base64 kodlamalı JSON dizesi olarak iletilir.

{
  "message": {
    "attributes": {},
    "data": "eyJza3VfaWQiOiAiR29vZ2xlLUFwcHMtVW5saW1pdGVkIiwgImV2ZW50X3R5cGUiOiAiU1VCU0NSSVBUSU9OX0NBTkNFTExFRCIsICJjdXN0b21lcl9kb21haW5fbmFtZSI6ICJkb21haW4uY29tIiwgInN1YnNjcmlwdGlvbl9pZCI6ICIxMjM0NTY3IiwgImN1c3RvbWVyX2lkIjogIkMwYWJjZGVmIiwgIm1lc3NhZ2VfaWQiOiAiODY3NTMwOSIsICJwdWJsaXNoX3RpbWUiOiB7InNlY29uZHMiOiAxNDU3NzMxODQ2LCAibmFub3MiOiAzNDkwMDAwMDB9LCAicmVzZWxsZXJfY3VzdG9tZXJfaWQiOiAiQzByZXNlbGxlciJ9",
    "message_id": 1234567891012131
  },
  "subscription": "projects/PROJECT/subscriptions/SUBSCRIPTION_NAME"
}

Aşağıda, kod çözme işleminden sonraki message.data nesnesi örneği verilmiştir:

{
  "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"
}

Etkinlik türleri

Aşağıdaki listede olası tüm etkinlik türleri yer almaktadır:

  • NEW_SUBSCRIPTION_CREATED: Yeni bir abonelik oluşturuldu.
  • SUBSCRIPTION_TRIAL_ENDED: Deneme süresi sona erdi.
  • PRICE_PLAN_SWITCHED: Müşteri, esnek plandan yıllık plana geçiş yaptı. Müşteri, yenileme işlemi kapsamında taahhüt türü plandan esnek plana geçiş yaparsa 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_reasons alanını inceleyin.
  • SUBSCRIPTION_SUSPENSION_REVOKED: Önceden askıya alınmış bir abonelik için askıya alma iptal edildi.
  • SUBSCRIPTION_CANCELLED: Abonelik iptal edildi. subscription_cancellation_reason alanını inceleyin. Aktarımları algılamak için de kullanılabilir.
  • SUBSCRIPTION_CONVERTED: Abonelik dönüştürüldü. Bu etkinliğe ilişkin bazı örnek durumlar aşağıda verilmiştir:

    • Doğrudan aboneliği bayi aboneliğine dönüştürün.
    • Ücretli aboneliği ek teklife dönüştürün.
    • Online aboneliği çevrimdışı aboneliğe dönüştürün.
  • SUBSCRIPTION_UPGRADE: Abonelik SKU'su yükseltildi. Örneğin, abonelik Google Workspace Business Starter'dan Business Standard'a yükseltildi.

  • SUBSCRIPTION_DOWNGRADE: Abonelik SKU'su eski sürüme geçirildi. Örneğin, abonelik Google Workspace Business Standard'dan Business Starter'a düşürülmüştür.

  • LICENSE_ASSIGNMENT_CHANGED: Lisans bir kullanıcıya atandı veya bir kullanıcıdan iptal edildi. Esnek aboneliklerdeki lisans sayısı değişikliklerini tepkisel olarak izlemek için bu etkinliği kullanabilirsiniz.

Abonelik iptal nedenleri

event_type değeri SUBSCRIPTION_CANCELLED olduğunda abonelik iptal nedeni doldurulur. İptal işleminin olası nedenleri aşağıda verilmiştir:

  • 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 geçiş yapmıştır. Örneğin, Google Workspace Business Starter ve Google Apps Kasası'na sahip bir müşteri Google Workspace Business Plus sürümüne geçerse Apps Kasası aboneliği, Google Workspace Business Plus'a dahil olduğu için dahil edilir.
  • RESELLER_INITIATED: Bayi, aboneliği iptal etti.
  • OTHER: Abonelik, listelenen dışında bir nedenden dolayı iptal edildi.

Aboneliğin askıya alınma nedenleri

event_type değeri SUBSCRIPTION_SUSPENDED olduğunda aboneliğin askıya alınma nedeni doldurulur. Askıya alma işleminin olası nedenleri aşağıda verilmiştir:

  • PENDING_TOS_ACCEPTANCE: Müşteri giriş yapmamış ve Google Workspace Yeniden Satışı Yapılan Hizmet Şartları'nı kabul etmemiştir.
  • RENEWAL_WITH_TYPE_CANCEL: Müşterinin taahhüdü sona erdi ve hizmet, hizmet döneminin sonunda iptal edildi.
  • RESELLER_INITIATED: Bayi, aboneliği manuel olarak askıya aldı.
  • TRIAL_ENDED: Müşterinin deneme süresi sona erdi ve müşteri deneme olmayan bir plan seçmedi.
  • OTHER: Müşteri, Google'la ilgili dahili bir nedenden dolayı (örneğin, kötüye kullanım) askıya alındı.

Pub/Sub sınırlamaları

Push bildirimlerinde sıralama garanti edilmez. Mesajlar birden çok kez ve ekstrem durumlarda teslim edilebiliyor olabilir. Mevcut durumu almak için değiştirilen tüm aboneliklerde reseller.subscriptions.get kullanmanızı öneririz.