Gestire abbonamenti e acquisti una tantum

Potresti dover intraprendere azioni di gestione su abbonamenti o acquisti una tantum nell'ambito delle attività 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 dagli utenti

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 gli 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 nel Play Store, dove possono visualizzare e gestire i propri abbonamenti.

Annullamenti avviati dagli sviluppatori

In qualità di sviluppatore, potresti anche dover attivare gli annullamenti dal tuo backend. L'purchases.subscriptions.cancel API ti consente di annullare l'acquisto di un abbonamento. Ad esempio, potresti utilizzare questo metodo per disattivare un servizio precedente. 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 questa opzione è attivata per il piano di base.

  • 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.

Consentire 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 tuo backend possono essere ripristinati dagli utenti.

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

Esempio:

  • Token per l'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_RENEWALS"
}

Consentire agli utenti di riabbonarsi agli abbonamenti scaduti

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

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 cancellationType, gli utenti non possono ripristinare l'abbonamento dal Centro abbonamenti Google Play. Tuttavia, se necessario, gli utenti possono registrarsi di nuovo all'abbonamento tramite la tua app.

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

Differire la fatturazione

Puoi estendere il periodo di validità di un abbonamento by utilizzando il subscriptionsv2.defer metodo. Quando differisci un abbonamento con componenti aggiuntivi, tutti gli elementi dell'abbonamento vengono differiti 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 differisci la fatturazione di un abbonamento, le informazioni sullo stato vengono aggiornate di conseguenza e vengono visualizzate nel campo expiryTime nelle 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 il periodo di validità.

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 agli abbonati esistenti per aver compilato 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 differita da un giorno fino a un anno per chiamata API. Per differire ulteriormente la fine del diritto, chiama di nuovo l'API prima della nuova data di scadenza.

Questa azione attiva una notifica in tempo reale per lo sviluppatore SUBSCRIPTION_DEFERRED. Per scoprire come gestire questi eventi, consulta la sezione Differire 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. Decide di offrire un mese di servizio aggiuntivo a tutti gli abbonati che si allenano con FitnessGoals almeno 10 volte durante il mese di febbraio.

  3. Il 1° marzo, dopo aver monitorato i risultati della sfida, chiama il metodo subscriptionsv2.defer per ogni acquisto di abbonamento attivo appartenente agli utenti che hanno completato la sfida a febbraio.

  4. Questi utenti usufruiscono di un mese intero aggiuntivo di video di esercizi regolari senza costi e raccontano a tutti i loro amici come FitnessGoals li aiuta a rimanere 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'orders.refund API, 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 terminato immediatamente e viene attivata una notifica in tempo reale per lo sviluppatore SUBSCRIPTION_REVOKED. Per scoprire come gestire questi eventi, consulta la sezione Revoche della guida alla gestione del ciclo di vita degli abbonamenti.

Esempio:

  1. Per festeggiare l'inizio della nuova Coppa del Mondo, 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 della squadra nelle prime 24 ore.

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

Revocare e rimborsare un abbonamento in base al token per l'acquisto

In alcuni casi d'uso, potresti dover revocare l'accesso all'abbonamento di un utente ed emettere un rimborso. La Fatturazione Play offre metodi di revoca, inclusi rimborsi totali e rimborsi 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 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 terminare un abbonamento e rimborsare l'intero importo del periodo di fatturazione corrente, emetti un rimborso totale. Utilizza la purchases.subscriptionsv2.revoke funzione e imposta "fullRefund": {} come tipo di rimborso.

Esempio:

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

  2. Il servizio clienti individua i dettagli dell'acquisto dell'abbonamento di Maria nel proprio sistema e attiva una chiamata a purchases.subscriptionsv2.revoke richiedendo un rimborso totale.

  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 di validità rimanente, emetti un rimborso proporzionale. Utilizza la purchases.subscriptionsv2.revoke funzione e imposta "proratedRefund": {} come tipo di rimborso.

Esempio:

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

  2. Il servizio clienti individua i dettagli dell'acquisto dell'abbonamento di Maria nel proprio sistema e attiva una chiamata a purchases.subscriptionsv2.revoke richiedendo un rimborso proporzionale.

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