當客戶針對您的軟體選擇定價方案時,Google 會建立「授權」,藉此表示客戶已透過 Cloud Marketplace 購買您的產品。本節將介紹如何使用合作夥伴採購 API,為客戶建立及管理授權。
如要進一步瞭解如何管理授權,請參閱參考說明文件。
事前準備
- 按照「 整合應用程式」一文的說明來設定 Cloud Commerce Partner Procurement API 的存取權。
如果您為同一件商品啟用多個訂單,合作夥伴採購 API 可以傳送多個事件,其中事件類型為 ENTITLEMENT_ACTIVE
,ACCOUNT_ID
值相同,每個事件都有代表不同商品的獨特 ENTITLEMENT_ID
。也就是說,您必須確保應用程式的事件處理邏輯可回應 ENTITLEMENT_ID
,而非 ACCOUNT_ID
或 PRODUCT_ID
。
您必須確保前端整合功能能夠處理 JWT 酬載中包含的新 orders
物件。詳情請參閱「整合應用程式前端」。
如要進一步瞭解如何啟用同一個產品的多筆訂單,請參閱「啟用同一個產品的多筆訂單」。
核准授權
當客戶選擇定價方案時,Cloud Marketplace 會建立授權,並將下列 Pub/Sub 訊息傳送至您的應用程式:
{ "eventId": "...", "eventType": "ENTITLEMENT_CREATION_REQUESTED", "providerId": "YOUR_PARTNER_ID", "entitlement": { "id": "ENTITLEMENT_ID", "updateTime": "...", "newOfferDuration": "P2Y3M", // Contract duration for offer-based entitlements }, }
其中 ENTITLEMENT_ID 是由 Cloud Marketplace 建立的 ID。如果優惠活動有指定的期限,則會以年和月來表示這段時間。如果優惠有指定的結束日期 (而非時間長度),則表示時間長度欄位為空白。
請在您的系統中將使用者帳戶更新為已選取方案的狀態。接著,如要核准授權,請向 Partner Procurement API 提出 HTTP POST
要求,並傳送您要核准的 ENTITLEMENT_ID:
POST v1/providers/YOUR_PARTNER_ID/entitlements/ENTITLEMENT_ID:approve
拒絕授權
如要拒絕授權,請向 Partner Procurement API 提出 HTTP POST
要求,並在要求中使用 reject
方法:
POST v1/providers/YOUR_PARTNER_ID/entitlements/ENTITLEMENT_ID:reject
如要在要求主體中提供拒絕授權的原因,請使用下列格式:
{ "reason": "..." }
變更授權方案
取決於您對定價方案的設定方式,您的客戶或許能夠變更自己選擇的方案。當客戶選擇新的定價方案時,您會收到格式如下的 Pub/Sub 訊息:
{ "eventId": "...", "eventType": "ENTITLEMENT_PLAN_CHANGE_REQUESTED", "providerId": "YOUR_PARTNER_ID", "entitlement": { "id": "ENTITLEMENT_ID", "newPlan": "ultimate", // New plan "updateTime": "...", "newOfferDuration": "P2Y3M", // Contract duration for the new offer, for offer-based entitlements "newProduct": "test-product.cloud.goog" "newOffer": "projects/1234567/services/test-product.cloud.goog/standardOffers/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa" }, }
如果優惠活動有指定的期限,則會以年和月來提供這段時間。如果優惠有指定的結束日期 (而非時間長度),則表示時間長度欄位為空白。
如要核准方案變更,請向 Partner Procurement API 提出下列 HTTP POST
要求:
POST v1/providers/YOUR_PARTNER_ID/entitlements/ENTITLEMENT_ID:approvePlanChange
要求主體必須包含要核准的企劃書:
{
"pendingPlanName": PLAN_NAME
}
核准變更後,您會在變更生效時收到另一則 Pub/Sub 訊息,在訊息中,eventType
欄位會變更為 ENTITLEMENT_PLAN_CHANGED
。如要檢查方案狀態,請向 Partner Procurement API 提出下列 HTTP GET
要求。
GET v1/providers/YOUR_PARTNER_ID/entitlements/ENTITLEMENT_ID
您會收到內容如下的回應,其中的 state
欄位表示新方案是否已開始生效,或者方案變更是否仍在處理中:
{ "name": "providers/YOUR_PARTNER_ID/entitlements/ENTITLEMENT_ID", "provider": "YOUR_PARTNER_ID", "account": "USER_ACCOUNT_ID", "product": "example-server", "plan": "pro", "state": "ENTITLEMENT_PENDING_PLAN_CHANGE", "newPendingPlan": "ultimate", ... }
取消授權
如果使用者決定取消自身的授權,您會收到 Pub/Sub 通知。與變更方案類似,系統可能會在目前的帳單週期結束時才將方案確實取消。
通知的格式如下:
{ "eventId": "...", // If the entitlement is canceled at the end of the month, // eventType is ENTITLEMENT_PENDING_CANCELLATION "eventType": "ENTITLEMENT_CANCELLED", "providerId": "YOUR_PARTNER_ID", "entitlement": { "id": "ENTITLEMENT_ID", "updateTime": "..." }, }
刪除授權
如果使用者直接向 Google 支援團隊提出要求,或是不再採用 Google 平台,系統會立即取消他們的授權,並在 60 天的寬限期過後刪除他們的授權和帳戶。為了保護使用者的隱私權,您必須在收到通知時將他們的資料從伺服器中刪除。
系統會在取消授權及刪除帳戶時向您傳送通知,內容如下:
{ "eventId": "...", "eventType": "ENTITLEMENT_DELETED", "providerId": "YOUR_PARTNER_ID", "entitlement": { "id": "ENTITLEMENT_ID", "updateTime": "...", }, }
{ "eventId": "...", "eventType": "ACCOUNT_DELETED", "providerId": "YOUR_PARTNER_ID", "account": { "id": "USER_ACCOUNT_ID", "updateTime": "...", }, }
帳戶工作事件類型清單
以下列出應用程式可能會在 Pub/Sub 訊息中收到的 eventType
:
eventType | 說明 |
---|---|
ACCOUNT_CREATION_REQUESTED | 已淘汰 |
ACCOUNT_ACTIVE | 表示客戶的帳戶已建立。 |
ACCOUNT_DELETED | 表示客戶的帳戶已從 Google Cloud 系統中刪除。 |
ENTITLEMENT_CREATION_REQUESTED | 表示客戶選取了您的其中一個定價方案。 |
ENTITLEMENT_OFFER_ACCEPTED | 表示客戶已接受優惠。包含商品的預定開始時間 (如有)。這項事件會傳送私密優惠和標準優惠 (公開購買)。 |
ENTITLEMENT_ACTIVE | 表示客戶所選方案現已啟用。 |
ENTITLEMENT_PLAN_CHANGE_REQUESTED | 表示客戶選擇了新方案。 |
ENTITLEMENT_PLAN_CHANGED | 表示客戶的方案變更已獲得核准,且變更已生效。 |
ENTITLEMENT_PLAN_CHANGE_CANCELLED | 表示客戶的方案變更已取消,原因可能是未獲得核准,或是客戶改回舊方案。 |
ENTITLEMENT_PENDING_CANCELLATION | 表示客戶已取消方案,但取消作業會在帳單週期結束前處於待處理狀態。 |
ENTITLEMENT_CANCELLATION_REVERTED | 表示客戶的待處理取消訂單已撤銷。請注意,取消訂單後即無法復原。 |
ENTITLEMENT_CANCELLED | 表示客戶的方案已取消。 |
ENTITLEMENT_CANCELLING | 表示客戶的方案正在取消中。 |
ENTITLEMENT_RENEWED | 表示客戶的授權已延長一段時間。您不需要採取任何行動即可完成續約。 |
ENTITLEMENT_OFFER_ENDED | 表示客戶的私密優惠已結束。如果客戶的授權遭到取消,系統會觸發另一個 ENTITLEMENT_CANCELLED 事件。如果客戶的授權仍有效,則方案會恢復為非折扣價格。 |
ENTITLEMENT_DELETED | 表示客戶方案的相關資訊已從 Cloud Marketplace 中刪除。 |