I prodotti con acquisto una tantum hanno un ciclo di vita più semplice rispetto ai prodotti in abbonamento, ma ci sono ancora diversi stati ed eventi di transizione che il tuo backend deve essere in grado di gestire correttamente.
Nuovi acquisti di prodotti a pagamento singolo
Dopo che l'utente ha completato il flusso di fatturazione, la tua app può visualizzare le informazioni sul nuovo acquisto in uno dei seguenti modi:
- Configura
Real-time developer notifications
e consenti aGet all notifications for subscriptions and one-time products
di ricevere aggiornamenti sullo stato degli acquisti. - Implementa l'interfaccia
PurchasesUpdatedListener
diBillingClient
per ricevere automaticamente gli aggiornamenti sugli acquisti. - Chiama il metodo
BillingClient.queryPurchasesAsync()
.
Dopo aver ricevuto il nuovo acquisto, utilizza il metodo
getPurchaseState
o
purchases.products.get in Play Developer API
per determinare lo stato di pagamento del nuovo acquisto.
Notifiche in tempo reale per lo sviluppatore
Quando un utente acquista o annulla l'acquisto di un prodotto a pagamento singolo,
Google Play invia un
OneTimeProductNotification
messaggio. Per aggiornare lo stato di acquisto del backend, utilizza il token di acquisto fornito
nell'oggetto OneTimeProductNotification
per chiamare il metodo
purchases.products.get
. Questo metodo fornisce lo stato più recente di acquisto e consumo in base a un token di acquisto.
Quando una prenotazione viene evasa e il relativo stato di acquisto diventa ACQUISTATO, al cliente viene inviato un RTDN. Dopo aver ricevuto l'RTND, elabora l'acquisto prenotato come descritto in Elaborare gli acquisti di prodotti a pagamento singolo nel backend.
Devi gestire gli RTDN relativi alle transazioni nel tuo backend sicuro.
Gestire le transazioni completate
Quando un utente completa un acquisto di un prodotto a pagamento singolo, Google Play invia un messaggio OneTimeProductNotification
con il tipo ONE_TIME_PRODUCT_PURCHASED
.
Quando ricevi questo RTDN, elabora l'acquisto come descritto in Elaborare gli acquisti di prodotti una tantum nel backend.
Gestire le transazioni annullate
Quando un acquisto di un prodotto una tantum viene annullato, Google Play invia un messaggio OneTimeProductNotification
con il tipo ONE_TIME_PRODUCT_CANCELED
se hai configurato la ricezione delle notifiche in tempo reale per gli sviluppatori.
Ad esempio, questo può accadere se l'utente non completa il pagamento entro il periodo di tempo richiesto o se l'acquisto viene revocato dallo sviluppatore o su richiesta del cliente. Quando il server di backend riceve questa notifica, chiama il metodo
purchases.products.get
per ottenere lo stato di acquisto più recente, quindi aggiorna il backend di conseguenza,
inclusi i diritti utente.
Se un acquisto di un prodotto a pagamento singolo nello stato Purchased
viene rimborsato, lo comunicheremo anche tramite l'API Acquisti annullati.
Elabora gli acquisti una tantum di prodotti nel tuo backend
Che tu abbia rilevato un nuovo acquisto tramite una ONE_TIME_PRODUCT_PURCHASED
RTDN
o che tu abbia ricevuto una notifica in-app tramite
PurchasesUpdatedListener
o recuperando manualmente gli acquisti nel metodo onResume()
della tua app, devi elaborare il nuovo acquisto. Per una maggiore sicurezza, ti consigliamo di gestire l'elaborazione degli acquisti nel tuo backend.
Per elaborare un nuovo acquisto una tantum:
- Esegui una query sull'endpoint
purchases.products.get
per ottenere lo stato più recente dell'acquisto di un prodotto una tantum. Per chiamare questo metodo per un acquisto, devi disporre delpurchaseToken
corrispondente dalla tua app o dal RTDNONE_TIME_PRODUCT_PURCHASED
. - Chiama
getPurchaseState()
e assicurati che lo stato dell'acquisto siaPURCHASED
. - Verifica l'acquisto.
- Concedi all'utente l'accesso ai contenuti. L'account utente associato all'acquisto può essere identificato con il campo
obfuscatedExternalAccountId
dipurchases.products.get
, se è stato impostato utilizzandosetObfuscatedAccountId()
al momento dell'acquisto.- Per gli acquisti di prodotti non di consumo, conferma la consegna dei contenuti chiamando il metodo
purchases.products.acknowledge
. Assicurati che l'acquisto non sia stato precedentemente confermato selezionando il campoacknowledgementState
. - Se il prodotto è di consumo, contrassegnalo come tale chiamando il metodo
purchases.products.consume
in modo che l'utente possa acquistarlo di nuovo dopo averlo consumato. Questo metodo conferma anche l'acquisto.
- Per gli acquisti di prodotti non di consumo, conferma la consegna dei contenuti chiamando il metodo
Nella libreria di fatturazione di Google Play sono disponibili anche metodi di conferma e consumo degli acquisti che ti consentono di elaborare gli acquisti effettuati dalla tua app, ma ti consigliamo di gestire l'elaborazione nel tuo backend, se ne hai uno, per un'implementazione più sicura.