プライベート オファーの利用資格を管理する

顧客がプライベート オファーを購入すると、Google はエンタイトルメントを作成します。エンタイトルメントは、顧客が Cloud Marketplace からオファーを購入したことを示します

この記事では、Partner Procurement API を使用してプライベート オファーのエンタイトルメントを管理する方法について再確認します。

限定公開商品に Partner Procurement API を使用する方法については、リファレンス ドキュメントをご覧ください。

エンタイトルメントを承認する

顧客がプライベート オファーを購入すると、Cloud Marketplace はエンタイトルメントを作成し、次の Pub/Sub メッセージをアプリに送信します。

{
  "eventId": "...",
  "eventType": "ENTITLEMENT_CREATION_REQUESTED",
  "entitlement": {
  "id": "ENTITLEMENT_ID",
  "updateTime": "...",
  "newOfferDuration": "P1Y6M", // Contract duration for the offer
  "newOfferEndTime": "", // Ending time for the offer
  },
}

この例では、ENTITLEMENT_ID は Cloud Marketplace によって作成された ID です。

オファーが期間を指定して作成された場合、メッセージには期間が年と月で表示され、newOfferEndTime フィールドは空白になります。終了時間が指定されて作成されたオファーの場合、メッセージにはオファーの終了時間が、newOfferDuration フィールドには空白が表示されます。

オファーを購入したことを反映するために、ユーザーのアカウントを更新します。次に、エンタイトルメントを承認するために、Partner Procurement API に対して HTTP POST リクエストを発行し、承認する ENTITLEMENT_ID を送信します。

POST v1/providers/YOUR_PARTNER_ID/entitlements/ENTITLEMENT_ID:approve

エンタイトルメントを拒否する

エンタイトルメントを拒否するには、代わりに HTTP POST リクエストで reject メソッドを使用します。

POST v1/providers/YOUR_PARTNER_ID/entitlements/ENTITLEMENT_ID:reject

有効なオファーを置き換える

プライベート オファーの設定に応じて、お客様がオファーを置き換えられる場合があります。お客様が新しいプライベート オファーを選択すると、次の形式の Pub/Sub メッセージが届きます。

{
  "eventId": "...",
  "eventType": "ENTITLEMENT_PLAN_CHANGE_REQUESTED",
  "entitlement": {
  "id": "ENTITLEMENT_ID",
  "newPlan": "ultimate",   // New plan for the offer,
  "newOffer": "OFFER2",    // New offer,
  "updateTime": "...",
  "newOfferDuration": "P2Y",   // Contract duration for the new offer
  },
}

この例では、OFFER2 は代替オファーで、ENTITLEMENT_ID は Cloud Marketplace によって作成された ID です。オファーの期間は年と月で指定されます。

オファーの交換を承認するには、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/PARTNER_ID/entitlements/ENTITLEMENT_ID",
  "provider": "PARTNER_ID",
  "account": "USER_ACCOUNT_ID",
  "product": "example-server",
  "Offer":   "OFFER1",
  "plan": "pro",
  "state": "ENTITLEMENT_PENDING_PLAN_CHANGE",
  "newPendingOffer": "OFFER2",
  "newPendingPlan": "ultimate",
  "newOfferDuration": "P2Y",
  "newOfferEndTime": "",
  ...
}

その他のエンタイトルメント タスクを完了する

プライベート オファーに固有ではないその他の利用資格タスクについては、Cloud Marketplace の公開ドキュメントをご覧ください。

プライベート オファー アカウント タスクのイベントタイプのリスト

次の表に、プライベート オファーの Pub/Sub メッセージでアプリが受信する eventType を示します。

すべてのリストについては、アカウント タスクのイベントタイプのリストをご覧ください。

eventType 説明
ENTITLEMENT_OFFER_ENDED 顧客のプライベート オファーが終了したことを示します。オファーは ENTITLEMENT_CANCELLED イベントをトリガーするか、割引のない価格でアクティブなままです。

次のステップ