Ringkasan
Reseller API menggunakan Pub/Sub API untuk mengirimkan notifikasi push tentang berbagai peristiwa langganan Google Workspace. Misalnya, Anda dapat menyiapkan notifikasi push untuk mendapatkan notifikasi saat status langganan pelanggan berubah.
Prasyarat
- Aktifkan Pub/Sub API untuk project Google Cloud Anda.
- Berikan peran IAM Pub/Sub ke akun layanan Anda di project Cloud. Memberikan peran
roles/pubsub.editor
adalah kompromi yang baik (mudah dan tidak terlalu luas), tetapi Anda mungkin ingin menggunakan izin Pub/Sub yang lebih spesifik.
Membuat topik
Untuk membuat topik, Anda harus mendaftar ke Reseller API
menggunakan
metode resellernotify.register
.
Metode resellernotify.register
menggunakan alamat email akun layanan sebagai
parameter. Hanya akun layanan yang diotorisasi oleh metode ini yang dapat berlangganan topik yang baru saja Anda buat.
POST https://reseller.googleapis.com/apps/reseller/v1/resellernotify/register
{
"serviceAccountEmailAddress": "reseller@reseller-project.iam.gserviceaccount.com"
}
Respons yang berhasil akan menampilkan kode status HTTP 200
dan respons JSON yang berisi nama topik Pub/Sub Anda.
Berikut adalah contoh respons:
{
"topicName": "projects/partner-watch/topics/C0abcdefg"
}
Untuk memberi otorisasi akun layanan tambahan agar dapat menggunakan topik, Anda dapat memanggil
resellernotify.register
lagi.
Membatalkan akses untuk akun layanan
Reseller API juga memberikan kemampuan untuk membatalkan pendaftaran akun layanan dengan menggunakan endpoint resellernotify.unregister
:
POST https://reseller.googleapis.com/apps/reseller/v1/resellernotify/unregister
{
"serviceAccountEmailAddress": "reseller@reseller-project.iam.gserviceaccount.com"
}
Berlangganan ke topik
Setelah membuat topik Pub/Sub, Anda perlu menyiapkan cara aplikasi menggunakan peristiwa perubahan. Pilih salah satu opsi berikut:
- Langganan push: Anda menyediakan callback
POST
HTTP. Pub/Sub menggunakan callback ini untuk memberi tahu aplikasi Anda tentang peristiwa baru. - Langganan pull: Aplikasi Anda secara berkala melakukan panggilan HTTP untuk mendapatkan semua perubahan yang diantrekan.
Berikut adalah contoh permintaan untuk berlangganan topik:
PUT https://pubsub.googleapis.com/v1/projects/PROJECT/subscriptions/SUBSCRIPTION_NAME { "topic": "TOPIC_NAME" // Only needed for push configurations "pushConfig": { "pushEndpoint": "PUSH_NOTIFICATION_ENDPOINT" }, }
Ganti kode berikut:
PROJECT
: Project Google Cloud Anda.SUBSCRIPTION_NAME
: Nama identitas untuk langganan Anda.TOPIC_NAME
: Topik Pub/Sub yang sebelumnya Anda buat.PUSH_NOTIFICATION_ENDPOINT
: Endpoint pengendali notifikasi push Anda.
Respons yang berhasil akan menampilkan kode status HTTP 200
. Berikut adalah
contoh respons:
{ "name": "projects/PROJECT/subscriptions/SUBSCRIPTION_NAME", "topic": "TOPIC_NAME", "pushConfig": { "pushEndpoint": "PUSH_NOTIFICATION_ENDPOINT" }, "ackDeadlineSeconds": 10 }
Format notifikasi
Berikut adalah contoh notifikasi Pub/Sub. Data pesan ditransmisikan sebagai string JSON berenkode base64.
{ "message": { "attributes": {}, "data": "eyJza3VfaWQiOiAiR29vZ2xlLUFwcHMtVW5saW1pdGVkIiwgImV2ZW50X3R5cGUiOiAiU1VCU0NSSVBUSU9OX0NBTkNFTExFRCIsICJjdXN0b21lcl9kb21haW5fbmFtZSI6ICJkb21haW4uY29tIiwgInN1YnNjcmlwdGlvbl9pZCI6ICIxMjM0NTY3IiwgImN1c3RvbWVyX2lkIjogIkMwYWJjZGVmIiwgIm1lc3NhZ2VfaWQiOiAiODY3NTMwOSIsICJwdWJsaXNoX3RpbWUiOiB7InNlY29uZHMiOiAxNDU3NzMxODQ2LCAibmFub3MiOiAzNDkwMDAwMDB9LCAicmVzZWxsZXJfY3VzdG9tZXJfaWQiOiAiQzByZXNlbGxlciJ9", "message_id": 1234567891012131 }, "subscription": "projects/PROJECT/subscriptions/SUBSCRIPTION_NAME" }
Berikut adalah contoh objek message.data
setelah decoding:
{
"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"
}
Jenis peristiwa
Daftar berikut berisi semua kemungkinan jenis peristiwa:
NEW_SUBSCRIPTION_CREATED
: Langganan baru telah dibuat.SUBSCRIPTION_TRIAL_ENDED
: Uji coba berakhir untuk langganan.PRICE_PLAN_SWITCHED
: Pelanggan dikonversi dari paket fleksibel ke paket tahunan. Peristiwa ini tidak dipicu jika pelanggan melakukan konversi dari paket jenis komitmen ke paket fleksibel sebagai bagian dari perpanjangan.COMMITMENT_CHANGED
: Komitmen tahunan dinaikkan atau diturunkan.SUBSCRIPTION_RENEWED
: Langganan tahunan diperpanjang.SUBSCRIPTION_SUSPENDED
: Langganan ditangguhkan. Lihat kolomsubscription_suspension_reasons
.SUBSCRIPTION_SUSPENSION_REVOKED
: Penangguhan dicabut untuk langganan yang sebelumnya ditangguhkan.SUBSCRIPTION_CANCELLED
: Langganan dibatalkan. Lihat kolomsubscription_cancellation_reason
. Juga dapat digunakan untuk mendeteksi transfer.SUBSCRIPTION_CONVERTED
: Langganan dikonversi. Beberapa contoh kasus untuk peristiwa ini adalah sebagai berikut:- Mengonversi langganan langsung menjadi langganan reseller.
- Mengonversi langganan berbayar ke penawaran masa tenggang.
- Mengonversi langganan online ke langganan offline.
SUBSCRIPTION_UPGRADE
: SKU langganan diupgrade. Misalnya, langganan diupgrade dari Google Workspace Business Starter ke Business Standard.SUBSCRIPTION_DOWNGRADE
: SKU langganan didowngrade. Misalnya, langganan didowngrade dari Google Workspace Business Standard ke Business Starter.LICENSE_ASSIGNMENT_CHANGED
: Lisensi ditetapkan ke atau dicabut dari pengguna. Anda dapat menggunakan peristiwa ini untuk melacak perubahan jumlah kursi secara reaktif untuk langganan Fleksibel.
Alasan pembatalan langganan
Alasan pembatalan langganan diisi saat event_type
adalah
SUBSCRIPTION_CANCELLED
. Berikut adalah kemungkinan alasan pembatalan:
TRANSFERRED_OUT
: Pelanggan telah beralih ke penagihan langsung atau ke reseller lain.PURCHASE_OF_SUBSUMING_SKU
: Pelanggan telah mengupgrade ke SKU yang mengganti SKU lain. Misalnya, jika pelanggan dengan Google Workspace Business Starter dan Google Vault mengupgrade ke Google Workspace Business Plus, langganan Vault akan digabungkan karena disertakan dengan Google Workspace Business Plus.RESELLER_INITIATED
: Reseller membatalkan langganan.OTHER
: Langganan dibatalkan karena alasan selain yang tercantum.
Alasan penangguhan langganan
Alasan penangguhan langganan diisi saat event_type
adalah
SUBSCRIPTION_SUSPENDED
. Berikut adalah kemungkinan alasan penangguhan:
PENDING_TOS_ACCEPTANCE
: Pelanggan belum login dan menyetujui Persyaratan Layanan Google Workspace yang Dijual Kembali.RENEWAL_WITH_TYPE_CANCEL
: Komitmen pelanggan berakhir dan layanannya dibatalkan di akhir periode.RESELLER_INITIATED
: Reseller menangguhkan langganan secara manual.TRIAL_ENDED
: Uji coba pelanggan telah berakhir, dan pelanggan tidak memilih paket non-uji coba.OTHER
: Pelanggan ditangguhkan karena alasan internal Google—misalnya, penyalahgunaan.
Batasan Pub/Sub
Pengurutan notifikasi push tidak dijamin. Pesan mungkin dikirim
beberapa kali dan dalam situasi ekstrem, tidak sama sekali. Sebaiknya gunakan
reseller.subscriptions.get
di semua langganan yang diubah untuk mengambil
status saat ini.