Push bildirimleri

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.editor rolü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 POST geri ç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_reasons sayfasına göz atın.
  • SUBSCRIPTION_SUSPENSION_REVOKED: Askıya alma işlemi iptal edildi.
  • SUBSCRIPTION_CANCELLED: Abonelik iptal edildi. subscription_cancellation_reason sayfası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.