Gestire abbonamenti e acquisti una tantum

Potresti dover intraprendere azioni di gestione su abbonamenti o acquisti una tantum nell'ambito delle attività aziendali quotidiane. Ad esempio, il tuo servizio clienti potrebbe dover emettere rimborsi totali o parziali per gli utenti oppure potresti dover revocare i diritti in determinati casi. Puoi gestire gli ordini da Play Console oppure, se vuoi gestirli dal tuo sistema, puoi farlo utilizzando l'API Google Play Developer.

Annullare gli abbonamenti

Gli annullamenti degli abbonamenti possono essere avviati dagli utenti o dagli sviluppatori.

Annullamenti avviati dall'utente

Gli utenti possono annullare un abbonamento a Google Play in qualsiasi momento utilizzando il Play Store. Se applicabile, devi anche fornire agli utenti un'opzione per annullare i propri abbonamenti nella tua app e sul tuo sito web.

Il modo più semplice per consentire agli utenti di annullare volontariamente l'abbonamento è fornire link diretti nell'app al Play Store, dove possono visualizzare e gestire i propri abbonamenti.

Annullamenti avviati dallo sviluppatore

In qualità di sviluppatore, potresti anche dover attivare gli annullamenti dal tuo backend. L'API purchases.subscriptions.cancel consente di annullare l'acquisto di un abbonamento. Ad esempio, potresti utilizzare questo metodo per disattivare un servizio legacy. L'annullamento di un abbonamento non comporta l'emissione di un rimborso e l'utente mantiene l'accesso fino alla fine del periodo di fatturazione corrente.

Questo metodo ti consente di specificare i seguenti tipi di annullamento nel parametro del corpo della richiesta cancellationType:

  • USER_REQUESTED_STOP_RENEWALS: annulla l'abbonamento come se gli utenti lo avessero annullato dal Play Store. I pagamenti rateali continueranno per il resto del periodo di impegno corrente. Dal Play Store, gli utenti possono ripristinare l'abbonamento prima della scadenza o riabbonarsi dopo la scadenza, se l'opzione è abilitata per il Base Plan.

  • DEVELOPER_REQUESTED_STOP_PAYMENTS: annulla l'abbonamento e impedisce ulteriori pagamenti. Gli utenti non possono ripristinare o riabbonarsi all'abbonamento dal Play Store, ma puoi consentire loro di abbonarsi di nuovo all'interno della tua app.

Consenti agli utenti di ripristinare gli abbonamenti non scaduti

In alcuni scenari, potrebbe essere utile consentire agli utenti di ripristinare gli abbonamenti non scaduti dal Centro abbonamenti Google Play dopo aver attivato l'annullamento come sviluppatore. Ad esempio, potresti voler fornire un flusso di annullamento in-app personalizzato. In base alla tua logica di business, puoi decidere quali annullamenti attivati dal backend possono essere ripristinati dagli utenti.

Per indicare che un utente può ripristinare l'annullamento, invia una richiesta POST all'API purchases.subscriptions.cancel e imposta il parametro di richiesta cancellationType sul valore USER_REQUESTED_STOP_RENEWAL.

Esempio:

  • Token di acquisto dell'abbonamento 1a2b3c4d5e6f7g8h9i0j
  • Nome pacchetto app com.your.app
  • ID abbonamento your-subscription-product

Richiesta HTTP POST:

https://androidpublisher.googleapis.com/androidpublisher/v3/applications/com.your.app/purchases/subscriptions/your-subscription-product/tokens/1a2b3c4d5e6f7g8h9i0j:cancel

Corpo della richiesta:

{
  "cancellationType": "USER_REQUESTED_STOP_RENEWAL"
}

Consenti agli utenti di riabbonarsi agli abbonamenti scaduti

Per consentire il riabbonamento a un abbonamento scaduto, devi attivare l'opzione Riabbonati nel piano base dell'abbonamento e poi annullare l'abbonamento impostando il parametro cancellationType sul valore USER_REQUESTED_STOP_RENEWAL.

Consentire agli utenti di riabbonarsi solo nella tua applicazione

Se hai impostato il parametro cancellationType su DEVELOPER_REQUESTED_STOP _PAYMENTS o non l'hai impostato, gli utenti non possono ripristinare l'abbonamento dal centro abbonamenti di Google Play.cancellationType Tuttavia, gli utenti possono abbonarsi di nuovo tramite la tua app, se necessario.

Questa azione attiva una SUBSCRIPTION_CANCELED notifica in tempo reale per lo sviluppatore. Gestisci questi annullamenti come descritto in Annullamenti.

Differire la fatturazione

Puoi estendere il periodo di validità di un abbonamento utilizzando il metodo subscriptionsv2.defer. Quando posticipi un abbonamento con componenti aggiuntivi, tutti gli elementi dell'abbonamento vengono posticipati per la stessa durata. Durante il periodo di differimento, l'utente rimane abbonato ai tuoi contenuti, ma non gli viene addebitato alcun costo per il tempo aggiuntivo. Quando posticipi la fatturazione di un abbonamento, le informazioni sullo stato vengono aggiornate di conseguenza e vengono visualizzate nel campo expiryTime delle informazioni sullo stato dell'acquisto:

  • Per gli abbonamenti ricorrenti attivi, la fatturazione differita estende la data di rinnovo successiva.
  • Per i piani prepagati, la fatturazione differita estende la data di scadenza.

Ecco alcuni esempi di come potresti utilizzare la fatturazione differita:

  • Offri agli utenti l'accesso senza costi come offerta speciale, ad esempio una settimana senza costi per gli abbonati esistenti che compilano un sondaggio di feedback.
  • Offri ai clienti l'accesso senza costi come azione di assistenza clienti, ad esempio dopo un'interruzione prolungata che potrebbe aver influito sulla loro capacità di utilizzare il tuo servizio.

La fatturazione può essere posticipata da un giorno fino a un anno per chiamata API. Per posticipare ulteriormente la fine del diritto, chiama di nuovo l'API prima della nuova data di scadenza.

Questa azione attiva una SUBSCRIPTION_DEFERRED notifica in tempo reale per lo sviluppatore. Per scoprire come gestire questi eventi, consulta la sezione Posticipare la fatturazione per un abbonato in Informazioni sugli abbonamenti.

Esempio:

  1. Il servizio di streaming FitnessGoals vuole lanciare una promozione per incoraggiare l'esercizio fisico regolare a febbraio.

  2. Decidono di offrire un mese aggiuntivo di servizio a qualsiasi abbonato che si alleni con FitnessGoals almeno 10 volte durante il mese di febbraio.

  3. Monitorano i risultati della sfida e il 1° marzo chiamano il metodo subscriptionsv2.defer per ogni acquisto di abbonamento attivo appartenente a utenti che hanno completato la sfida a febbraio.

  4. Questi utenti usufruiscono di un mese intero aggiuntivo di video di allenamento regolari senza costi e raccontano a tutti i loro amici come FitnessGoals li aiuta a mantenersi in salute.

Emettere rimborsi e revoche

Esistono molte situazioni in cui potresti voler emettere un rimborso o revocare l'accesso a un abbonamento o a un acquisto una tantum.

Rimborsare completamente un ordine in base all'ID ordine

Con l'API orders.refund, puoi emettere rimborsi totali per qualsiasi ordine entro tre anni dall'acquisto. Il metodo orders.refund riceve un parametro di revoca che indica se l'accesso deve essere revocato oltre a fornire il rimborso.

Se emetti una revoca con la chiamata di rimborso per l'acquisto di un abbonamento, l'abbonamento viene immediatamente terminato e viene attivata una notifica in tempo reale per lo sviluppatore SUBSCRIPTION_REVOKED. Consulta la guida alla gestione del ciclo di vita degli abbonamenti, sezione Revoche, per scoprire come gestire questi eventi.

Esempio:

  1. Per celebrare l'inizio dei nuovi mondiali, l'app di e-sport Football-Not-Soccer decide di mettere in palio maglie virtuali senza costi per tutti gli utenti che acquistano nuovi kit delle squadre nelle prime 24 ore.

  2. Football-Not-Soccer utilizza l'API orders.refund senza passare un parametro di revoca per rimborsare gli acquisti delle maglie ai vincitori.

Revocare e rimborsare un abbonamento tramite token di acquisto

Per determinati casi d'uso, potrebbe essere necessario revocare l'accesso all'abbonamento di un utente e fornire un rimborso. Fatturazione Google Play offre metodi di revoca, inclusi rimborsi completi e proporzionali tramite l'API subscriptionsv2.revoke. Con questo endpoint, puoi specificare revocationContext per determinare come viene calcolato il rimborso.

Questa azione attiva una notifica in tempo reale per lo sviluppatore.SUBSCRIPTION_REVOKED La tua app deve gestire questi annullamenti come descritto in Revoche.

Esempio:

  • Acquisto con token per l'acquisto 1a2b3c4d5e6f7g8h9i0j
  • Applicazione con nome del pacchetto com.your.app
  • Intenzione di emettere un rimborso proporzionale

Richiesta HTTP POST:

https://androidpublisher.googleapis.com/androidpublisher/v3/applications/com.your.app/purchases/subscriptionsv2/tokens/1a2b3c4d5e6f7g8h9i0j:revoke

Corpo della richiesta:

{
  "revocationContext": {
    "proratedRefund": {}
  }
}

Rimborsi totali

Se devi annullare un abbonamento e rimborsare l'intero importo del periodo di fatturazione corrente, emetti un rimborso totale. Utilizza la funzione purchases.subscriptionsv2.revoke e imposta "fullRefund": {} come tipo di rimborso.

Esempio:

  1. Maria ha un abbonamento mensile con rinnovo automatico di 30 giorni al servizio di streaming SuperMovies. Maria ha riscontrato alcuni problemi tecnici che le impediscono di accedere ai contenuti. Il terzo giorno del ciclo di fatturazione, contatta l'assistenza clienti e dichiara di non aver mai avuto accesso all'abbonamento.

  2. L'assistenza clienti individua i dettagli dell'acquisto dell'abbonamento di Maria nel proprio sistema e attiva una chiamata al numero purchases.subscriptionsv2.revoke per richiedere un rimborso completo.

  3. Il servizio clienti comunica a Maria che dovrebbe ricevere il rimborso del 100% del prezzo dell'abbonamento e che non è più abbonata al piano.

Rimborsi proporzionali

Se devi terminare un abbonamento e rimborsare parzialmente il tempo rimanente del diritto, emetti un rimborso proporzionale. Utilizza la funzione purchases.subscriptionsv2.revoke e imposta "proratedRefund": {} come tipo di rimborso.

Esempio:

  1. Maria ha un abbonamento mensile con rinnovo automatico di 30 giorni al servizio di streaming SuperMovies. Utilizza il servizio con soddisfazione da un po' di tempo. Il giorno 15 del ciclo di fatturazione, Maria contatta l'assistenza clienti per comunicare che si trasferirà all'estero e non potrà più utilizzare il servizio a partire dal giorno successivo.

  2. L'assistenza clienti individua i dettagli dell'acquisto dell'abbonamento di Maria nel proprio sistema e attiva una chiamata al numero purchases.subscriptionsv2.revoke per richiedere un rimborso proporzionale.

  3. Il servizio clienti comunica a Maria che dovrebbe ricevere un rimborso pari a circa il 50% del prezzo dell'abbonamento e che l'accesso al servizio è stato interrotto immediatamente.