I prodotti con acquisto una tantum hanno un ciclo di vita più semplice rispetto ai prodotti in abbonamento, ma esistono 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 notificationse attivaGet all notifications for subscriptions and one-time productsper ricevere aggiornamenti sullo stato degli acquisti. - Implementa l'
PurchasesUpdatedListenerinterfaccia diBillingClientper ricevere automaticamente gli aggiornamenti degli acquisti. - Chiama il
BillingClient.queryPurchasesAsync()metodo.
Dopo aver ricevuto il nuovo acquisto, utilizza il
getPurchaseState metodo 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 del backend, utilizza il token di acquisto fornito nell'
OneTimeProductNotification oggetto per chiamare il
purchases.productsv2.getproductpurchasev2
metodo. Questo metodo fornisce lo stato più recente dell'acquisto e del consumo dato un token di acquisto.
Quando un preordine viene evaso e il suo stato di acquisto cambia in PURCHASED, viene inviata una notifica in tempo reale per lo sviluppatore al tuo client. Dopo aver ricevuto la notifica in tempo reale per lo sviluppatore, elabora l'acquisto del preordine come descritto in Elaborare gli acquisti di prodotti una tantum nel backend.
Devi gestire le notifiche in tempo reale per lo sviluppatore 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 RTDN, elabora l'acquisto come descritto in Elaborare gli acquisti di prodotti a pagamento singolo nel backend.
Gestire le transazioni annullate
Quando l'acquisto di un prodotto a pagamento singolo 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, 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
purchases.productsv2.getproductpurchasev2
metodo per ottenere lo stato di acquisto più recente, quindi aggiorna il backend di conseguenza,
inclusi i diritti dell'utente.
Se un acquisto di un prodotto a pagamento singolo con stato Purchased viene rimborsato, riceverai una notifica anche
tramite l'API Voided Purchases.
Elaborare gli acquisti di prodotti a pagamento singolo nel backend
Se hai rilevato un nuovo acquisto utilizzando una ONE_TIME_PRODUCT_PURCHASED
notifica in tempo reale per lo sviluppatore
o se hai ricevuto una notifica in-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.
Segui questi passaggi per elaborare un nuovo acquisto una tantum:
- Esegui una query sull'
purchases.productsv2.getproductpurchasev2endpoint per ottenere lo stato più recente dell'acquisto del prodotto a pagamento singolo. Per chiamare questo metodo per un acquisto, devi disporre delpurchaseTokencorrispondente dall'app o dalla notifica in tempo reale per lo sviluppatoreONE_TIME_PRODUCT_PURCHASED. - Chiama
getPurchaseState()e assicurati che lo stato dell'acquisto siaPURCHASED. - Verifica l'acquisto.
- Fornisci all'utente l'accesso ai contenuti. L'account utente associato all'
acquisto può essere identificato con il
obfuscatedExternalAccountIdcampo dipurchases.productsv2.getproductpurchasev2, se ne è stato impostato uno utilizzandosetObfuscatedAccountId()quando l'acquisto è stato effettuato.- Per gli acquisti di prodotti non di consumo, conferma la consegna dei
contenuti chiamando il
purchases.products.acknowledgemetodo. Assicurati che l'acquisto non sia stato confermato in precedenza da controllando ilacknowledgementStatecampo. - Se il prodotto è di consumo, contrassegna l'articolo come consumato chiamando il
purchases.products.consumemetodo 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
Nella Libreria Fatturazione Play 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.