Gestire i diritti dei clienti per il prodotto SaaS

Quando i clienti scelgono un piano tariffario per il tuo software, Google crea un entitlement, che indica che il cliente ha acquistato il tuo prodotto da Google Cloud Marketplace. In questa sezione viene illustrato come creare e gestire i diritti dei tuoi clienti usando l'API Partner Procurement.

Per maggiori dettagli sulla gestione dei diritti, visita la pagina documentazione di riferimento.

Prima di iniziare

  • Configura l'accesso all'API Cloud Commerce Partner Procurement, come descritto in Integrare l'app.

Se hai attivato più ordini dello stesso prodotto, l'API Partner Procurement può inviare più eventi con il tipo di eventoENTITLEMENT_ACTIVE per lo stesso valore di ACCOUNT_ID, ciascuno con unENTITLEMENT_ID univoco che rappresenta un'offerta diversa. Ciò significa che devi Assicurati che la logica di gestione degli eventi dell'app possa rispondere all'ENTITLEMENT_ID anziché ACCOUNT_ID o PRODUCT_ID.

Devi assicurarti che l'integrazione frontend possa gestire il nuovo oggetto orders incluso nel payload JWT. Per ulteriori informazioni, consulta Integrare il frontend dell'app.

Per ulteriori informazioni sull'attivazione di più ordini dello stesso prodotto, vedi Attiva più ordini per lo stesso prodotto.

Approvare un diritto

Quando un cliente sceglie un piano tariffario, Cloud Marketplace crea un e invia il seguente messaggio Pub/Sub alla tua app:

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

dove ENTITLEMENT_ID è un ID creato da Cloud Marketplace. Se l'offerta ha una durata specificata, questa viene fornita in anni e mesi. Se per l'offerta è specificata una data di fine, anziché una durata, il campo che indica che la durata è vuota.

Nel tuo sistema, aggiorna l'account dell'utente in modo che rifletta l'acquisto di un piano. Per approvare il diritto, invia una richiesta HTTP POST all'API Partner Procurement e invia il HTTP POST che stai approvando:

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

Rifiutare un diritto

Per rifiutare un diritto, invia una richiesta HTTP POST all'API Partner Procurement e utilizza il metodo reject nella richiesta:

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

Per fornire un motivo per il rifiuto del diritto nel corpo della richiesta, utilizza il seguente formato:

{
  "reason": "..."
}

Modificare un piano di diritti

A seconda di come hai configurato i piani tariffari, i tuoi clienti potrebbero essere in grado di e cambiare piano. Se un cliente seleziona un nuovo piano tariffario, ricevi un Messaggio Pub/Sub, nel seguente formato:

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

Se l'offerta ha una durata specificata, questa durata viene indicata in anni e mesi. Se per l'offerta è specificata una data di fine, anziché una durata, il campo che indica che la durata è vuota.

Per approvare la modifica del piano, effettua la seguente richiesta HTTP POST al API Partner Procurement:

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

Il corpo della richiesta deve contenere il piano da approvare:

{
  "pendingPlanName": PLAN_NAME
}

Una volta approvata la modifica, ricevi un altro messaggio Pub/Sub quando la modifica diventa effettiva. Nel messaggio, il campo eventType diventa ENTITLEMENT_PLAN_CHANGED. Per controllare lo stato di un piano: Richiesta HTTP GET all'API Partner Procurement.

GET v1/providers/YOUR_PARTNER_ID/entitlements/ENTITLEMENT_ID

La risposta è simile alla seguente, con il campo state che indica se il nuovo piano è attivo o se la modifica del piano è ancora in attesa:

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

Annullare un diritto

Se un utente decide di annullare il proprio diritto, riceverai un Notifica Pub/Sub. Analogamente alla modifica di un piano, l'annullamento potrebbe essere applicato alla fine del ciclo di fatturazione corrente.

La notifica ha il seguente formato:

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

Eliminare un diritto

Se un utente invia una richiesta diretta all'Assistenza Google o se abbandona Google piattaforma, i loro diritti vengono immediatamente annullati e i relativi diritti e vengono eliminati dopo un periodo di tolleranza di 60 giorni. Per proteggere la privacy dell'utente, devi eliminare i suoi dati dai tuoi server quando ricevi una notifica.

Quando i diritti vengono annullati e l'account viene eliminato, ricevi notifiche simili alle seguenti:

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

Elenco dei tipi di eventi per le attività dell'account

Di seguito è riportato un elenco dei eventType che la tua app potrebbe ricevere in I messaggi Pub/Sub:

eventTypeDescrizione
ACCOUNT_CREATION_REQUESTEDRitirato
ACCOUNT_ACTIVEIndica che l'account del cliente è stato creato.
ACCOUNT_DELETEDIndica che l'account del cliente è stato eliminato dai sistemi Google Cloud.
ENTITLEMENT_CREATION_REQUESTEDIndica che un cliente ha selezionato uno dei tuoi piani tariffari.
ENTITLEMENT_OFFER_ACCEPTEDIndica che un'offerta è stata accettata da un cliente. Include l'ora di inizio pianificata dell'offerta, se esistente. Questo evento viene inviato sia per le offerte private sia per quelle standard (acquisti pubblici).
ENTITLEMENT_ACTIVEIndica che il piano scelto da un cliente è ora attivo.
ENTITLEMENT_PLAN_CHANGE_REQUESTEDIndica che un cliente ha scelto un nuovo piano.
ENTITLEMENT_PLAN_CHANGEDIndica che la modifica del piano di un cliente è stata approvata e che le modifiche sono state applicate.
ENTITLEMENT_PLAN_CHANGE_CANCELLEDIndica che la modifica del piano di un cliente è stata annullata perché non è stata approvata o perché è tornato al piano precedente.
ENTITLEMENT_PENDING_CANCELLATIONIndica che un cliente ha annullato il proprio piano e che l'annullamento è in attesa fino al termine del ciclo di fatturazione.
ENTITLEMENT_CANCELLATION_REVERTEDIndica che l'annullamento in attesa di un cliente è stato annullato. Tieni presente che le cancellazioni non possono essere annullate una volta finalizzate.
ENTITLEMENT_CANCELLEDIndica che il piano di un cliente è stato annullato.
ENTITLEMENT_CANCELLINGIndica che il piano di un cliente è in fase di annullamento.
ENTITLEMENT_RENEWEDIndica che il diritto di un cliente è stato rinnovato per un altro periodo. Non è richiesta alcuna azione da parte tua per completare il rinnovo.
ENTITLEMENT_OFFER_ENDEDIndica che l'offerta privata di un cliente è terminata. Se il diritto del cliente è stato annullato, viene attivato un evento ENTITLEMENT_CANCELLED separato. Se il diritto del cliente è ancora attivo, il piano tornerà al prezzo non scontato.
ENTITLEMENT_DELETEDIndica che le informazioni sul piano di un cliente sono state eliminate da Cloud Marketplace.