I prodotti con acquisto una tantum hanno un ciclo di vita più semplice rispetto ai prodotti in abbonamento, ma ci sono comunque diversi stati ed eventi di transizione che il 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 attivaGet all notifications for subscriptions and one-time products
per ricevere aggiornamenti sullo stato degli acquisti. - Implementa l'interfaccia
PurchasesUpdatedListener
daBillingClient
per ricevere automaticamente gli aggiornamenti degli acquisti. - Chiama il metodo
BillingClient.queryPurchasesAsync()
.
Dopo aver ricevuto il nuovo acquisto, utilizza il
metodo getPurchaseState
o
purchases.productsv2.getproductpurchasev2 in Play Developer API
.
per determinare lo stato del 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 messaggio OneTimeProductNotification
.
Per aggiornare lo stato dell'acquisto di backend, utilizza il token di acquisto fornito nell'oggetto
OneTimeProductNotification
per chiamare il metodo
purchases.productsv2.getproductpurchasev2
. Questo metodo fornisce lo stato più recente di acquisto e consumo dato un
token di acquisto.
Quando un preordine viene evaso e il relativo stato di acquisto cambia in ACQUISTATO, al tuo client viene inviata una notifica in tempo reale. Dopo aver ricevuto la notifica in tempo reale, elabora l'acquisto in prenotazione come descritto in Elaborare gli acquisti di prodotti una tantum nel backend.
Devi gestire le notifiche in tempo reale relative alle transazioni nel tuo backend sicuro.
Gestire le transazioni completate
Quando un utente completa l'acquisto di un prodotto a pagamento singolo, Google Play invia un messaggio OneTimeProductNotification
con il tipo ONE_TIME_PRODUCT_PURCHASED
.
Quando ricevi questa notifica RTDN, elabora l'acquisto come descritto in Elabora
gli acquisti di prodotti una tantum nel backend.
Gestire le transazioni annullate
Quando un acquisto una tantum di un prodotto 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 lo sviluppatore. Ad esempio, ciò può verificarsi 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.productsv2.getproductpurchasev2
per ottenere lo stato di acquisto più recente, quindi aggiorna il backend di conseguenza,
inclusi i diritti degli utenti.
Se viene rimborsato l'acquisto di un prodotto a pagamento singolo nello stato Purchased
, riceverai una notifica tramite l'API Acquisti annullati.
Elabora gli acquisti di prodotti una tantum nel backend
Che tu abbia rilevato un nuovo acquisto utilizzando un ONE_TIME_PRODUCT_PURCHASED
RTDN
o che tu ne abbia avuto notizia nell'app tramite
PurchasesUpdatedListener
o recuperando manualmente
gli acquisti nel metodo onResume()
della tua app, devi elaborare
il nuovo acquisto. Ti consigliamo di gestire l'elaborazione degli acquisti nel backend per una maggiore sicurezza.
Per elaborare un nuovo acquisto una tantum:
- Esegui una query sull'endpoint
purchases.productsv2.getproductpurchasev2
per ottenere lo stato più recente dell'acquisto una tantum del prodotto. Per chiamare questo metodo per un acquisto, devi disporre delpurchaseToken
corrispondente dalla tua app o dall'RTDNONE_TIME_PRODUCT_PURCHASED
. - Chiama il numero
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.productsv2.getproductpurchasev2
, se ne è stato impostato uno utilizzandosetObfuscatedAccountId()
al momento dell'acquisto.- Per gli acquisti di prodotti non di consumo, conferma la ricezione dei
contenuti chiamando il
metodo
purchases.products.acknowledge
. Assicurati che l'acquisto non sia già stato riconosciuto controllando il campoacknowledgementState
. - Se il prodotto è di consumo, contrassegna l'articolo come consumato 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 ricezione dei
contenuti chiamando il
metodo
Nella libreria Google Play Billing sono disponibili anche metodi di conferma e consumo degli acquisti che ti consentono di elaborare gli acquisti dalla tua app, ma ti consigliamo di gestire l'elaborazione nel backend, se ne hai uno, per un'implementazione più sicura.