Gérer les droits d'accès des clients pour votre produit SaaS

Lorsque les clients choisissent un forfait pour votre logiciel, Google crée un droit, qui indique que le client a acheté votre produit sur Cloud Marketplace. Cette section explique comment créer et gérer les droits de vos clients à l'aide de l'API Partner Procurement.

Pour en savoir plus sur la gestion des droits d'accès, consultez le documentation de référence.

Avant de commencer

Si vous avez activé plusieurs commandes du même produit, l'API Partner Procurement peut envoyer plusieurs événements avec le type d'événement ENTITLEMENT_ACTIVE pour la même valeur de ACCOUNT_ID, chacun avec un ENTITLEMENT_ID unique représentant une offre différente. Cela signifie que vous devez vous assurer que la logique de gestion des événements de votre application peut répondre à ENTITLEMENT_ID au lieu de ACCOUNT_ID ou PRODUCT_ID.

Vous devez vous assurer que votre intégration du frontend peut gérer le nouvel objet orders inclus dans la charge utile JWT. Pour en savoir plus, consultez Intégrez l'interface de votre application.

Pour en savoir plus sur l'activation de plusieurs commandes du même produit, consultez Activer plusieurs commandes du même produit.

Approuver un droit d'accès

Lorsqu'un client choisit un forfait, Cloud Marketplace crée un et envoie le message Pub/Sub suivant à votre application:

{
  "eventId": "...",
  "eventType": "ENTITLEMENT_CREATION_REQUESTED",
  "providerId": "YOUR_PARTNER_ID",
  "entitlement": {
    "id": "ENTITLEMENT_ID",
    "updateTime": "...",
    "newOfferDuration": "P2Y3M",   // Contract duration for offer-based entitlements
  },
}

ENTITLEMENT_ID est un ID créé par Cloud Marketplace. Si une durée est spécifiée pour l'offre, elle est indiquée en années et en mois. Si une date de fin est spécifiée pour l'offre au lieu d'une durée, le champ indiquant la durée est vide.

Dans votre système, mettez à jour le compte de l'utilisateur pour indiquer qu'il a souscrit un forfait. Pour approuver le droit, envoyez une requête HTTP POST à l'API Partner Procurement et envoyez l'ID ENTITLEMENT_ID que vous approuvez :

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

Refuser un droit d'accès

Pour refuser un droit d'accès, envoyez une requête HTTP POST au l'API Partner Procurement et utilisez la méthode reject dans votre requête:

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

Pour indiquer le motif du refus du droit d'accès dans le corps de la requête, utilisez le format suivant :

{
  "reason": "..."
}

Modifier un forfait

En fonction de la configuration de vos forfaits, vos clients pourront peut-être modifier le leur. Si un client sélectionne un nouveau forfait, vous recevez un message Pub/Sub, au format suivant :

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

Si une durée est spécifiée pour l'offre, elle est indiquée en années et en mois. Si une date de fin est spécifiée pour l'offre au lieu d'une durée, le champ indiquant la durée est vide.

Pour approuver la modification du forfait, adressez la requête HTTP POST suivante à l'API Partner Procurement :

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

L'organisme demandeur doit avoir le plan en cours d'approbation :

{
  "pendingPlanName": PLAN_NAME
}

Une fois la modification approuvée, vous recevez un autre message Pub/Sub lorsque la modification prend effet. Dans le message, le champ eventType devient ENTITLEMENT_PLAN_CHANGED. Pour vérifier l'état d'un plan, envoyez la requête HTTP GET suivante à l'API Partner Procurement.

GET v1/providers/YOUR_PARTNER_ID/entitlements/ENTITLEMENT_ID

La réponse est semblable à la suivante, le champ state indiquant si le nouveau forfait est actif ou si la modification du forfait est toujours en attente :

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

Annuler un droit d'accès

Si un utilisateur décide d'annuler son droit d'accès, vous recevez une notification Pub/Sub. Tout comme la modification d'un forfait, l'annulation peut prendre effet à la fin du cycle de facturation en cours.

La notification est au format suivant :

{
  "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": "..."
  },
}

Supprimer un droit d'accès

Si un utilisateur envoie une demande directe à l'assistance Google ou quitte la plate-forme Google, ses droits d'accès sont immédiatement annulés, et ses droits et ses comptes sont supprimés après un délai de grâce de 60 jours. Pour protéger la vie privée de l'utilisateur, vous devez supprimer ses données de vos serveurs dès que vous en êtes informé.

Une fois les droits d'accès et le compte supprimés, vous recevez des notifications semblables à celles-ci :

{
  "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": "...",
  },
}

Liste des types d'événements pour les tâches de compte

Voici une liste des eventType que votre application peut recevoir dans les messages Pub/Sub :

eventTypeDescription
ACCOUNT_CREATION_REQUESTEDObsolète
ACCOUNT_ACTIVEIndique que le compte du client a été créé.
ACCOUNT_DELETEDIndique que le compte du client a été supprimé des systèmes Google Cloud.
ENTITLEMENT_CREATION_REQUESTEDIndique qu'un client a sélectionné l'un de vos forfaits.
ENTITLEMENT_OFFER_ACCEPTEDIndique qu'une offre a été acceptée par un client. Inclut l'heure de début prévue de l'offre, le cas échéant. Cet événement est envoyé à la fois pour les offres privées et les offres standards (achats publics).
ENTITLEMENT_ACTIVEIndique que le forfait choisi par un client est maintenant actif.
ENTITLEMENT_PLAN_CHANGE_REQUESTEDIndique qu'un client a choisi un nouveau forfait.
ENTITLEMENT_PLAN_CHANGEDIndique que la modification du forfait d'un client est approuvée et que les modifications sont entrées en vigueur.
ENTITLEMENT_PLAN_CHANGE_CANCELLEDIndique que le changement de forfait d'un client a été annulé, soit parce qu'il n'a pas été approuvé, soit parce le client est revenu à son ancien forfait.
ENTITLEMENT_PENDING_CANCELLATIONIndique qu'un client a annulé son forfait et que l'annulation est en attente jusqu'à la fin du cycle de facturation.
ENTITLEMENT_CANCELLATION_REVERTEDIndique que l'annulation en attente d'un client a été annulée. Notez que les annulations ne peuvent pas être annulées une fois qu'elles sont définitives.
ENTITLEMENT_CANCELLEDIndique que le forfait d'un client a été annulé.
ENTITLEMENT_CANCELLINGIndique que le forfait d'un client est en cours d'annulation.
ENTITLEMENT_RENEWEDIndique que le droit d'accès d'un client a été renouvelé pour une autre période. Aucune action de votre part n'est requise de votre part..
ENTITLEMENT_OFFER_ENDEDIndique que l'offre privée d'un client est arrivée à expiration. Si le droit d'accès du client a été annulé, un événement ENTITLEMENT_CANCELLED distinct est déclenché. Si le droit d'accès du client est toujours actif, son forfait inclut un prix sans remise.
ENTITLEMENT_DELETEDIndique que des informations sur le forfait d'un client ont été supprimées de Cloud Marketplace.