Questo argomento contiene le note di rilascio per la Libreria Fatturazione Google Play.
Rilascio 7.0.0 della Libreria Fatturazione Google Play (14/05/2024)
È ora disponibile la versione 7.0.0 delle estensioni Libreria Fatturazione Google Play e Kotlin.
Riepilogo delle modifiche
Sono state aggiunte API per supportare gli abbonamenti rateali.
- È stato aggiunto
ProductDetails.InstallmentPlanDetails
per i piani base a rate che gli utenti sono idonei ad acquistare. Questa API consente alla tua app di identificare il piano di rateizzazione e la configurazione dell'impegno per fornire informazioni correlate all'utente. Per scoprire di più, consulta la nostra guida alle rate degli abbonamenti.
- È stato aggiunto
Aggiunti
PendingPurchasesParams
eBillingClient.Builder.enablePendingPurchases(PendingPurchaseParams)
per sostituireBillingClient.Builder.enablePendingPurchases()
, che sono stati deprecati in questa release.- Il
enablePendingPurchases()
deprecato è equivalente aenablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build())
dal punto di vista funzionale.
- Il
Sono state aggiunte API per supportare le transazioni in sospeso per i piani prepagati in abbonamento:
- Utilizza
PendingPurchasesParams.Builder.enablePrepaidPlans()
insieme aBillingClient.Builder.enablePendingPurchases(PendingPurchaseParams)
per abilitare le transazioni in sospeso per i piani prepagati di abbonamento. Quando aggiungi l'assistenza, assicurati che anche la tua app gestisca correttamente i cicli di vita degli abbonamenti. Per scoprire di più, consulta la nostra guida agli acquisti in attesa. - Sono stati aggiunti
Purchase.PendingPurchaseUpdate
ePurchase.getPendingPurchaseUpdate()
per recuperare la ricarica in attesa o per eseguire l'upgrade o il downgrade a un abbonamento esistente.
- Utilizza
Rimossi
BillingClient.Builder.enableAlternativeBilling()
,AlternativeBillingListener
eAlternativeChoiceDetails
.- Gli sviluppatori dovrebbero usare invece
BillingClient.Builder.enableUserChoiceBilling()
conUserChoiceBillingListener
eUserChoiceDetails
nel callback listener.
- Gli sviluppatori dovrebbero usare invece
BillingFlowParams.ProrationMode
,BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceProrationMode()
eBillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceSkusProrationMode()
rimossi.- Gli sviluppatori dovrebbero usare
BillingFlowParams.SubscriptionUpdateParams.ReplacementMode
conBillingFlowParams.SubscriptionUpdateParams.Builder#setSubscriptionReplacementMode(int)
. BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceProrationMode()
.BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceSkusProrationMode()
.
- Gli sviluppatori dovrebbero usare
BillingFlowParams.SubscriptionUpdateParams.Builder#setOldSkuPurchaseToken()
rimosso.- Gli sviluppatori dovrebbero usare
BillingFlowParams.SubscriptionUpdateParams.Builder#setOldPurchaseToken(java.lang.String)
.
- Gli sviluppatori dovrebbero usare
L'app
BillingClient.queryPurchaseHistoryAsync()
è stata ritirata e verrà rimossa in una release futura. Gli sviluppatori dovrebbero usare invece le seguenti alternative:- Acquisti confermati e in attesa: utilizza
BillingClient.queryPurchasesAsync()
per recuperare gli acquisti attivi. - Acquisti effettuati: gli sviluppatori devono tenere traccia degli acquisti consumati sui propri server.
- Acquisti annullati: utilizza l'API per sviluppatori voided-purchases.
- Per maggiori dettagli, consulta Cronologia acquisti delle query
- Acquisti confermati e in attesa: utilizza
BillingFlowParams.ProductDetailsParams.setOfferToken()
ora genera un'eccezione quando gli sviluppatori specificano un valoreofferToken
vuoto.Aggiornato
minSdkVersion
a 21 etargetSdkVersion
a 34.
Rilascio 6.2.1 di Libreria Fatturazione Google Play (16/04/2024)
È ora disponibile la versione 6.2.1 delle estensioni Libreria Fatturazione Google Play e Kotlin.
Riepilogo delle modifiche
- Risolto il bug in
BillingClient.showAlternativeBillingOnlyInformationDialog()
per cuiAlternativeBillingOnlyInformationDialogListener
potrebbe non essere chiamato in alcuni casi al completamento della finestra di dialogo.
Rilascio 6.2.0 della Libreria Fatturazione Google Play (6/03/2024)
È ora disponibile la versione 6.2.0 delle estensioni Libreria Fatturazione Google Play e Kotlin.
Riepilogo delle modifiche
- Sono state aggiunte API per supportare le offerte esterne
- È stato aggiunto l'elemento
BillingClient.Builder.enableExternalOffer()
per consentire la possibilità di fornire offerte esterne. - È stato aggiunto
BillingClient.isExternalOfferAvailableAsync()
per verificare la disponibilità della funzionalità per fornire offerte esterne. - L'elemento
BillingClient.showExternalOfferInformationDialog()
è stato aggiunto per mostrare una finestra di dialogo informativa agli utenti prima di indirizzarli all'esterno dell'app. - È stato aggiunto
BillingClient.createExternalOfferReportingDetailsAsync()
per creare un payload necessario per segnalare le transazioni effettuate tramite offerte esterne.
- È stato aggiunto l'elemento
Rilascio 6.1.0 della Libreria Fatturazione Google Play (14/11/2023)
È ora disponibile la versione 6.1.0 delle estensioni Libreria Fatturazione Google Play e Kotlin.
Riepilogo delle modifiche
- Sono state aggiunte API per supportare solo la fatturazione alternativa (ovvero senza scelta dell'utente)
- È stato aggiunto
BillingClient.Builder.enableAlternativeBillingOnly()
per abilitare in modo funzionale la possibilità di offrire solo la fatturazione alternativa. - È stato aggiunto
BillingClient.isAlternativeBillingOnlyAvailableAsync()
per verificare la disponibilità dell'offerta solo di fatturazione alternativa. - L'elemento
BillingClient.showAlternativeBillingOnlyInformationDialog()
è stato aggiunto per mostrare una finestra di dialogo con le informazioni e informare gli utenti quando viene utilizzata solo la fatturazione alternativa. - È stato aggiunto
BillingClient.createAlternativeBillingOnlyReportingDetailsAsync()
per creare un payload necessario per segnalare le transazioni effettuate solo tramite la fatturazione alternativa.
- È stato aggiunto
- Aggiornamento delle API di fatturazione scelta dall'utente:
UserChoiceBillingListener
aggiunto per sostituire AlternativeBillingListener, che è stato contrassegnato come deprecato.- Aggiunto
UserChoiceDetails
per sostituireAlternativeChoiceDetails
, che è stato contrassegnato come deprecato. - Aggiunto
BillingClient.Builder.enableUserChoiceBilling()
per sostituireBillingClient.Builder.enableAlternativeBilling()
, che è stato contrassegnato come deprecato.
- È stato aggiunto
BillingClient.getBillingConfigAsync()
per recuperare il paese di Google Play.
Rilascio 6.0.1 di Libreria Fatturazione Google Play (22/06/2023)
È ora disponibile la versione 6.0.1 delle estensioni Libreria Fatturazione Google Play e Kotlin.
Riepilogo delle modifiche
Aggiorna Libreria Fatturazione Play in modo che sia compatibile con Android 14.
Rilascio 6.0 della Libreria Fatturazione Google Play (10/05/2023)
È ora disponibile la versione 6.0.0 delle estensioni Libreria Fatturazione Google Play e Kotlin.
Riepilogo delle modifiche
È stata aggiunta una nuova enumerazione di
ReplacementMode
da sostituireProrationMode
.Tieni presente che
ProrationMode
è ancora disponibile per motivi di compatibilità con le versioni precedenti.ID ordine rimosso per gli acquisti di
PENDING
.In precedenza, l'ID ordine veniva sempre creato anche se l'acquisto era in attesa. A partire dalla versione 6.0.0, non verrà creato un ID ordine per gli acquisti in attesa e, per questi acquisti, l'ID ordine verrà completato dopo che l'acquisto verrà spostato nello stato
PURCHASED
.Metodi
queryPurchases
elaunchPriceConfirmationFlow
rimossi.I metodi
queryPurchases
elaunchPriceConfirmationFlow
che precedentemente sono stati contrassegnati come deprecati ora sono stati rimossi nella Libreria Fatturazione Play 6.0.0. Gli sviluppatori dovrebbero usarequeryPurchasesAsync
anzichéqueryPurchases
. Per le alternativelaunchPriceConfirmationFlow
, consulta Modifiche ai prezzi.Nuovo codice di risposta di errore di rete aggiunto.
È stato aggiunto un nuovo codice di risposta di errore di rete,
NETWORK_ERROR
, a partire dalla versione 6.0.0 di PBL. Questo codice viene restituito quando si verifica un errore dovuto a un problema di connessione di rete. Questi errori di connessione di rete erano precedentemente segnalati comeSERVICE_UNAVAILABLE
.Aggiornato
SERVICE_UNAVAILABLE
eSERVICE_TIMEOUT
.A partire dalla versione PBL 6.0.0, gli errori dovuti al timeout durante l'elaborazione verranno restituiti come
SERVICE_UNAVAILABLE
anziché comeSERVICE_TIMEOUT
attuale.Il comportamento non cambia nelle versioni precedenti di PBL.
Rimosso
SERVICE_TIMEOUT
.A partire dalla versione PBL 6.0.0, non verrà più restituito
SERVICE_TIMEOUT
. Le versioni precedenti di PBL restituiranno ancora questo codice.Logging aggiuntivo.
La release Libreria Fatturazione Play 6 include logging aggiuntivo, che fornisce informazioni sull'utilizzo dell'API (ad esempio esito positivo e negativo) e sui problemi di connessione al servizio. Queste informazioni verranno utilizzate per migliorare le prestazioni della Libreria Fatturazione Play e fornire una migliore assistenza per gli errori.
Rilascio 5.2.1 di Libreria Fatturazione Google Play (22/06/2023)
È ora disponibile la versione 5.2.1 delle estensioni Libreria Fatturazione Google Play e Kotlin.
Riepilogo delle modifiche
Aggiorna Libreria Fatturazione Play in modo che sia compatibile con Android 14.
Rilascio 5.2 della Libreria Fatturazione Google Play (6/04/2023)
È ora disponibile la versione 5.2.0 delle estensioni Libreria Fatturazione Google Play e Kotlin.
Riepilogo delle modifiche
- Sono stati aggiunti corsi per supportare flussi di fatturazione alternativa su dispositivi mobili/tablet per gli utenti in Corea del Sud:
- Metodo
BillingFlowParams.SubscriptionUpdateParams.Builder.setOriginalExternalTransactionId()
aggiunto per specificare l'ID transazione esterna dell'abbonamento di origine. - È stato aggiunto il metodo
BillingClient.Builder.enableAlternativeBilling()
per consentire agli utenti in Corea del Sud di selezionare un'opzione di fatturazione alternativa.
Rilascio 5.1 di Libreria Fatturazione Google Play (31/10/2022)
È ora disponibile la versione 5.1.0 delle estensioni Libreria Fatturazione Google Play e Kotlin.
Questa versione contiene le modifiche seguenti.
Riepilogo delle modifiche
- Metodo
ProductDetails.SubscriptionOfferDetails.getOfferId()
aggiunto per recuperare l'ID offerta. - Metodo
ProductDetails.SubscriptionOfferDetails.getBasePlanId()
aggiunto per recuperare l'ID piano base. - Aggiornato il
targetSdkVersion
al 31.
Rilascio 5.0 della Libreria Fatturazione Google Play (11/05/2022)
È ora disponibile la versione 5.0.0 delle estensioni Libreria Fatturazione Google Play e Kotlin.
Questa versione contiene le modifiche seguenti.
Riepilogo delle modifiche
- È stato introdotto un nuovo modello per gli abbonamenti, incluse nuove entità che consentono di creare più offerte per un singolo prodotto in abbonamento. Per ulteriori informazioni, consulta la guida alla migrazione.
- Aggiunto
BillingClient.queryProductDetailsAsync()
per sostituireBillingClient.querySkuDetailsAsync()
. - Metodo
setIsOfferPersonalized()
aggiunto per i requisiti di divulgazione dei prezzi personalizzati per l'UE. Per scoprire di più su come usare questo metodo, consulta Indicare un prezzo personalizzato. - È stato rimosso
queryPurchases()
, che in precedenza era deprecato e sostituito da queryPurchasesAsync introdotto nella Libreria Fatturazione Google Play 4.0.0. launchPriceChangeFlow
è stato deprecato e verrà rimosso in una release futura. Per scoprire di più sulle alternative, consulta Avviare un flusso di conferma della variazione di prezzo.- È stato rimosso
setVrPurchaseFlow()
, che era utilizzato in precedenza per creare l'istanza di un flusso di acquisto. Nelle versioni precedenti, questo metodo reindirizzava l'utente a completare l'acquisto sul proprio dispositivo Android. Una volta rimosso questo metodo, gli utenti completeranno l'acquisto tramite il flusso di acquisto standard.
Release 4.1 di Libreria Fatturazione Google Play (23/02/2022)
È ora disponibile la versione 4.1.0 delle estensioni Libreria Fatturazione Google Play e Kotlin.
Questa versione contiene le modifiche seguenti.
Riepilogo delle modifiche
- È stato aggiunto
BillingClient.showInAppMessages()
per facilitare la gestione dei rifiuti dei pagamenti degli abbonamenti. Per scoprire di più su come usare la messaggistica in-app per gestire i rifiuti dei pagamenti degli abbonamenti, consulta Gestire i rifiuti di pagamento.
Rilascio 4.0 della Libreria Fatturazione Google Play (18/05/2021)
È ora disponibile la versione 4.0.0 delle estensioni Libreria Fatturazione Google Play e Kotlin.
Riepilogo delle modifiche
È stato aggiunto
BillingClient.queryPurchasesAsync()
per sostituireBillingClient.queryPurchases()
, che verrà rimosso in una release futura.Aggiunta della nuova modalità di sostituzione dell'abbonamento
IMMEDIATE_AND_CHARGE_FULL_PRICE
.Aggiunto il metodo
BillingClient.getConnectionState()
per recuperare lo stato di connessione della Libreria Fatturazione Play.Javadoc e implementazione aggiornati per indicare su quale thread è possibile chiamare un metodo e su quali risultati dei thread vengono pubblicati.
BillingFlowParams.Builder.setSubscriptionUpdateParams()
è stato aggiunto come nuovo modo per avviare gli aggiornamenti degli abbonamenti. Questo sostituisceBillingFlowParams#getReplaceSkusProrationMode
,BillingFlowParams#getOldSkuPurchaseToken
,BillingFlowParams#getOldSku
,BillingFlowParams.Builder#setReplaceSkusProrationMode
,BillingFlowParams.Builder#setOldSku
, che sono stati rimossi.Aggiunti
Purchase.getQuantity()
ePurchaseHistoryRecord.getQuantity()
.Aggiunti
Purchase#getSkus()
ePurchaseHistoryRecord#getSkus()
. Questi sostituisconoPurchase#getSku
ePurchaseHistoryRecord#getSku
che sono stati rimossi.BillingFlowParams#getSku
,BillingFlowParams#getSkuDetails
eBillingFlowParams#getSkuType
rimosse.
Rilascio 3.0.3 di Libreria Fatturazione Google Play (12/03/2021)
Sono ora disponibili la versione 3.0.3 della Libreria Fatturazione Google Play, l'estensione Kotlin e il plug-in Unity.
Correzioni di bug di Java e Kotlin
- Correggi la perdita di memoria quando viene chiamato
endConnection()
. - Risolvi il problema quando la Libreria Fatturazione Google Play viene utilizzata da app che utilizzano
la modalità di avvio a singola attività. Verrà attivato un callback di
onPurchasesUpdated()
quando un'app viene ripresa da Avvio app di Android e quando la finestra di dialogo di fatturazione era visibile prima della sospensione.
Correzioni di bug di Unity
- Esegui l'aggiornamento a Java versione 3.0.3 per correggere la perdita di memoria e risolvere il problema che impediva gli acquisti quando un'app viene ripresa da Avvio app di Android e la finestra di dialogo per la fatturazione era visibile prima della sospensione.
Rilascio 3.0.2 di Libreria Fatturazione Google Play (24/11/2020)
Sono ora disponibili la versione 3.0.2 dell'estensione Libreria Fatturazione Google Play e Kotlin.
Correzioni di bug
- Risolto il bug nell'estensione Kotlin per il quale la coroutine non funzionava ed era stato visualizzato l'errore "Già ripresa".
- Sono stati corretti i riferimenti non risolti quando l'estensione Kotlin viene utilizzata con la libreria kotlinx.coroutines versione 1.4+.
Rilascio 3.0.1 di Libreria Fatturazione Google Play (30/09/2020)
Sono ora disponibili la versione 3.0.1 dell'estensione Libreria Fatturazione Google Play e Kotlin.
Correzioni di bug
- Risolto un bug per cui, se l'app veniva interrotta e ripristinata durante il flusso di fatturazione,
PurchasesUpdatedListener
potrebbe non essere chiamato con il risultato dell'acquisto.
Rilascio 3.0 della Libreria Fatturazione Google Play (8/06/2020)
Sono ora disponibili la versione 3.0.0 della Libreria Fatturazione Google Play, l'estensione Kotlin e il plug-in Unity.
Riepilogo delle modifiche
- Supporto dello SKU con premio rimosso.
- Sono stati rimossi i parametri
ChildDirected
eUnderAgeOfConsent
. - Rimossi metodi payload per sviluppatori deprecati.
- Rimossi metodi deprecati
BillingFlowParams.setAccountId()
eBillingFlowParams.setDeveloperId()
. - Rimossi metodi deprecati
BillingFlowParams.setOldSkus(String oldSku)
eBillingFlowParams.addOldSku(String oldSku)
. - Sono state aggiunte annotazioni con supporto di valori null.
Correzioni di bug
SkuDetails.getIntroductoryPriceCycles()
ora restituisceint
anzichéString
.- Risolto il bug per cui il flusso di fatturazione verrebbe considerato come la presenza di parametri aggiuntivi anche se non ne fossero impostati altri.
Rilascio 2.2.1 di Libreria Fatturazione Google Play (20/05/2020)
È ora disponibile la versione 2.2.1 della Libreria Fatturazione Google Play.
Correzioni di bug
- È stata aggiornata la versione predefinita della libreria di fatturazione Java Play da cui dipende l'estensione Kotlin.
Versione 2.2.0 della Libreria Fatturazione Google Play e assistenza per Unity (23/03/2020)
La versione 2.2.0 di Fatturazione Google Play fornisce funzionalità che aiutano gli sviluppatori ad assicurare che gli acquisti vengano attribuiti all'utente corretto. Queste modifiche sostituiscono la necessità di creare soluzioni personalizzate basate sul payload degli sviluppatori. Nell'ambito di questo aggiornamento, la funzionalità del payload per sviluppatori è stata ritirata e verrà rimossa in una release futura. Per maggiori informazioni, incluse le alternative consigliate, consulta Payload per sviluppatori.
Libreria Fatturazione Google Play 2 per Unity
Oltre alle attuali versioni Java e Kotlin della Libreria Fatturazione Google Play 2, abbiamo rilasciato una versione della libreria da utilizzare con Unity. Gli sviluppatori di giochi che utilizzano l'API per gli acquisti in-app di Unity possono ora eseguire l'upgrade per sfruttare tutte le funzionalità della Libreria Fatturazione Google Play 2 e per semplificare i successivi upgrade alle versioni future della Libreria Fatturazione Google Play.
Per scoprire di più, consulta Utilizzare la Fatturazione Google Play con Unity.
Riepilogo delle modifiche
- Libreria Fatturazione Google Play Java
- Nei metodi
AcknowledgePurchaseParams
deprecatisetDeveloperPayload()
egetDeveloperPayload()
. - Nei metodi
ConsumeParams
deprecatisetDeveloperPayload()
egetDeveloperPayload()
. - In
BillingFlowParams
è stato rinominatosetAccountId()
insetObfuscatedAccountId()
e ha una limitazione di lunghezza documentata di 64 caratteri e una limitazione che impedisce le informazioni che consentono l'identificazione personale (PII) in questo campo.setAccountId()
è stato contrassegnato come deprecato e verrà rimosso in una versione futura della libreria. - In
BillingFlowParams
è stato aggiuntosetObfuscatedProfileId()
che funziona in modo simile asetObfuscatedAccountId()
. Per maggiori informazioni, consulta Aggiornamenti e alternative dei payload per sviluppatori. - In
Purchase
, è stato aggiunto il metodogetAccountIdentifiers()
per restituire gli identificatori di account offuscati impostati inBillingFlowParams
. - In
BillingClient
, il metodoloadRewardedSku()
è stato contrassegnato come deprecato nell'ambito del ritiro degli SKU con premio. Puoi trovare ulteriori informazioni sul ritiro nel Centro assistenza Play Console.
- Nei metodi
Rilascio Libreria Fatturazione Google Play 2.1.0 e Rilascio Kotlin Extension 2.1.0 (10/12/2019)
Sono ora disponibili la versione 2.1.0 della Libreria Fatturazione Google Play e la nuova estensione Kotlin. L'estensione Kotlin della Libreria Fatturazione Play fornisce alternative API idiomatiche per l'utilizzo di Kotlin, con migliori sicurezza null e coroutine. Per esempi di codice, consulta l'articolo Utilizzare la Libreria Fatturazione Google Play.
Questa versione contiene le modifiche seguenti.
Riepilogo delle modifiche
- In
BillingFlowParams
,setOldSku(String oldSku)
è stato ritirato e sostituito consetOldSku(String oldSku, String purchaseToken)
, per chiarire quando più account sul dispositivo possiedono lo stesso SKU.
Rilascio 2.0.3 di Libreria Fatturazione Google Play (5/08/2019)
È ora disponibile la versione 2.0.3 della Libreria Fatturazione Google Play.
Correzioni di bug
- Risolto il bug per cui
querySkuDetailsAsync()
a volte non riusciva con il codiceDEVELOPER_ERROR
invece di restituire un risultato riuscito.
Rilascio 2.0.2 di Libreria Fatturazione Google Play (8/07/2019)
È ora disponibile la versione 2.0.2 della Libreria Fatturazione Google Play. Questa release contiene aggiornamenti alla documentazione di riferimento e non modifica la funzionalità della libreria.
Rilascio 2.0.1 di Libreria Fatturazione Google Play (6/06/2019)
È ora disponibile la versione 2.0.1 della Libreria Fatturazione Google Play. Questa versione contiene le seguenti modifiche.
Correzioni di bug
- Risolto il bug per cui i messaggi di debug venivano restituiti come
null
, in alcuni casi. - Risolto un potenziale problema di perdita di memoria.
Rilascio 2.0 della Libreria Fatturazione Google Play (7/05/2019)
È ora disponibile la versione 2.0 della Libreria Fatturazione Google Play. Questa versione contiene le seguenti modifiche.
Gli acquisti devono essere confermati entro tre giorni
Google Play supporta l'acquisto di prodotti all'interno o all'esterno dell'app (in-app). Per consentire a Google Play di garantire un'esperienza di acquisto coerente indipendentemente da dove l'utente acquista il tuo prodotto, devi confermare tutti gli acquisti ricevuti tramite la Libreria Fatturazione Google Play il prima possibile dopo aver concesso il diritto all'utente. Se non confermi un acquisto entro tre giorni, l'utente riceve automaticamente un rimborso e Google Play revoca l'acquisto. Per le transazioni in sospeso (nuova versione 2.0), la finestra di tre giorni inizia quando l'acquisto passa allo stato PURCHASED
e non viene applicata mentre l'acquisto è nello stato PENDING
.
Per gli abbonamenti, devi confermare ogni acquisto che ha un nuovo token di acquisto. Ciò significa che tutti gli acquisti iniziali, le modifiche al piano e le nuove registrazioni devono essere confermati, ma non è necessario confermare i rinnovi successivi. Per determinare se un acquisto deve essere confermato, puoi controllare il campo della conferma nell'acquisto.
L'oggetto Purchase
ora include un metodo
isAcknowledged()
che indica se un acquisto è stato confermato. Inoltre, l'API Google Play Developer include valori booleani di accettazione sia per
Purchases.products
che per Purchases.subscriptions
.
Prima di confermare un acquisto, assicurati di utilizzare questi metodi per determinare se l'acquisto è già stato confermato.
Puoi confermare un acquisto utilizzando uno dei seguenti metodi:
- Per i prodotti di consumo, utilizza il valore
consumeAsync()
, disponibile nell'API client. - Per i prodotti non utilizzati, utilizza il criterio
acknowledgePurchase()
, che trovi nell'API client. - Un nuovo metodo
acknowledge()
è disponibile anche nell'API Server.
BillingFlowParams.setSku() è stato rimosso
Il metodo BillingFlowParams#setSku()
precedentemente deprecato è stato rimosso
in questa release. Prima di eseguire il rendering dei prodotti in un flusso di acquisto, devi chiamare
BillingClient.querySkuDetailsAsync()
,
passando l'oggetto SkuDetails
risultante a
BillingFlowParams.Builder.setSkuDetails()
.
Per esempi di codice, consulta l'articolo Utilizzare la Libreria Fatturazione Google Play.
Payload sviluppatore supportato
La versione 2.0 della Libreria Fatturazione Google Play aggiunge il supporto per il payload dello sviluppatore, ovvero le stringhe arbitrarie che possono essere associate agli acquisti. Puoi associare un parametro di payload sviluppatore a un acquisto, ma solo quando l'acquisto viene confermato o utilizzato. Questo è diverso dal payload per sviluppatori in AIDL, in cui il payload potrebbe essere specificato all'avvio del flusso di acquisto. Poiché ora gli acquisti possono essere avviati dall'esterno della tua app, questa modifica ti garantisce sempre l'opportunità di aggiungere un payload agli acquisti.
Per accedere al payload nella nuova libreria, gli oggetti Purchase
ora includono un metodo
getDeveloperPayload()
.
Offerte coerenti
Quando offri uno SKU scontato, Google Play ora restituisce il prezzo originale dello SKU, per consentirti di mostrare agli utenti che stanno ricevendo uno sconto.
SkuDetails
contiene due nuovi metodi per recuperare il prezzo originale dello SKU:
getOriginalPriceAmountMicros()
: restituisce il prezzo originale non formattato dello SKU prima dello sconto.getOriginalPrice()
: restituisce il prezzo originale con un'ulteriore formattazione di valuta.
Transazioni in sospeso
Con la versione 2.0 della Libreria Fatturazione Google Play, devi supportare gli acquisti in cui sono richieste ulteriori azioni prima di concedere il diritto. Ad esempio, un utente potrebbe scegliere di acquistare il tuo prodotto in-app in un negozio fisico in contanti. Ciò significa che la transazione è stata completata al di fuori della tua app. In questo scenario, dovresti concedere il diritto solo dopo che l'utente ha completato la transazione.
Per attivare gli acquisti in attesa, chiama
enablePendingPurchases()
durante l'inizializzazione della tua app.
Utilizza Purchase.getPurchaseState()
per determinare se lo stato di acquisto è PURCHASED
o PENDING
. Tieni presente che
devi concedere il diritto solo quando lo stato è PURCHASED
. Controlla
gli aggiornamenti dello stato di Purchase
procedendo nel seguente modo:
- Quando avvii l'app, chiama
BillingClient.queryPurchases()
per recuperare l'elenco dei prodotti non consumati associati all'utente. - Richiama
Purchase.getPurchaseState()
su ogni oggettoPurchase
restituito. - Implementa il metodo
onPurchasesUpdated()
per rispondere alle modifiche apportate agli oggettiPurchase
.
Inoltre, l'API Google Play Developer include uno stato PENDING
per Purchases.products
.
Le transazioni in attesa non sono supportate per gli abbonamenti.
Questa release introduce anche un nuovo tipo di notifica in tempo reale per lo sviluppatore, OneTimeProductNotification
. Questo tipo di notifica contiene un singolo messaggio
il cui valore è ONE_TIME_PRODUCT_PURCHASED
o
ONE_TIME_PRODUCT_CANCELED
. Questo tipo di notifica viene inviato solo per gli acquisti associati a forme di pagamento ritardate, come i contanti.
Quando confermi gli acquisti in attesa, assicurati di confermare solo quando lo
stato di acquisto è PURCHASED
e non PENDING
.
Modifiche all'API
La versione 2.0 della Libreria Fatturazione Google Play contiene diverse modifiche all'API per supportare nuove funzionalità e chiarire le funzionalità esistenti.
consumareAsync
consumeAsync()
ora prende un oggetto
ConsumeParams
invece di un purchaseToken
. ConsumeParams
contiene purchaseToken
e
un payload sviluppatore facoltativo.
La versione precedente di consumeAsync()
è stata rimossa in questa release.
queryAcquistaCronologiaAsync
Per ridurre al minimo la confusione, ora queryPurchaseHistoryAsync()
restituisce un oggetto PurchaseHistoryRecord
anziché un oggetto Purchase
. L'oggetto PurchaseHistoryRecord
è
uguale a un oggetto Purchase
, ad eccezione del fatto che riflette solo i valori restituiti da
queryPurchaseHistoryAsync()
e non contiene i campi autoRenewing
,
orderId
e packageName
. Tieni presente che non è cambiato nulla con i dati restituiti: queryPurchaseHistoryAsync()
restituisce gli stessi dati di prima.
Valori restituiti BillingResult
Le API che in precedenza restituivano un valore intero BillingResponse
ora restituiscono un oggetto
BillingResult
. BillingResult
contiene il numero intero BillingResponse
e una stringa di debug che puoi utilizzare per diagnosticare gli errori. La stringa di debug utilizza un'impostazione internazionale
en-US e non deve essere mostrata agli utenti finali.
Correzioni di bug
SkuDetails.getIntroductoryPriceAmountMicros()
ora restituiscelong
anzichéString
.
Rilascio 1.2.2 di Libreria Fatturazione Google Play (7/03/2019)
È ora disponibile la versione 1.2.2 della Libreria Fatturazione Google Play. Questa versione contiene le seguenti modifiche.
Correzioni di bug
- Risolto un problema di threading introdotto nella v1.2.1. Le chiamate in background non bloccano più il thread principale.
Altre modifiche
- Anche se è comunque consigliabile utilizzare il thread principale, ora puoi creare un'istanza della Libreria Fatturazione Google Play da un thread in background.
- È stata eseguita la migrazione completa dell'istanza nel thread in background per ridurre le probabilità di causare errori ANR.
Rilascio Libreria Fatturazione Play 1.2.1 (4/03/2019)
È ora disponibile la versione 1.2.1 della Libreria Fatturazione Google Play. Questa versione contiene le seguenti modifiche.
Modifiche principali
- Aggiunto il supporto per i prodotti con premio. Per maggiori informazioni sulle opzioni di monetizzazione, consulta Aggiungere funzionalità specifiche dei prodotti con premio.
Altre modifiche
- Sono stati aggiunti costruttori pubblici per
PurchasesResult
eSkuDetailsResult
per semplificare i test. SkuDetails
oggetti possono utilizzare un nuovo metodo,getOriginalJson()
.- Tutte le chiamate ai servizi AIDL ora sono gestite da thread in background.
Correzioni di bug
- I listener di callback nulli non vengono più trasmessi nelle API pubbliche.
Rilascio 1.2 della Libreria Fatturazione Google Play (18/10/2018)
È ora disponibile la versione 1.2 della Libreria Fatturazione Google Play. Questa versione contiene le seguenti modifiche.
Riepilogo delle modifiche
- La Libreria Fatturazione Google Play è ora concessa in licenza in base al Contratto di licenza del Software Development Kit Android.
- È stata aggiunta l'API
launchPriceChangeConfirmationFlow
, che richiede agli utenti di esaminare una modifica in attesa al prezzo di un abbonamento. - È stato aggiunto il supporto di una nuova modalità di ripartizione,
DEFERRED
, durante l'upgrade o il downgrade dell'abbonamento di un utente. - Nel corso
BillingFlowParams
, è stato sostituitosetSku()
consetSkuDetails()
. - Correzioni di bug minori e ottimizzazioni del codice.
Conferma della variazione di prezzo
Ora puoi modificare il prezzo di un abbonamento in Google Play Console e chiedere agli utenti di leggere e accettare il nuovo prezzo quando accedono alla tua app.
Per utilizzare questa API, crea un oggetto PriceChangeFlowParams
utilizzando skuDetails
del prodotto in abbonamento, quindi chiama launchPriceChangeConfirmationFlow()
. Implementa l'PriceChangeConfirmationListener
per gestire il risultato al termine del flusso di conferma della variazione di prezzo, come mostrato nel seguente snippet di codice:
Kotlin
val priceChangeFlowParams = PriceChangeFlowParams.newBuilder() .setSkuDetails(skuDetailsOfThePriceChangedSubscription) .build() billingClient.launchPriceChangeConfirmationFlow(activity, priceChangeFlowParams, object : PriceChangeConfirmationListener() { override fun onPriceChangeConfirmationResult(responseCode: Int) { // Handle the result. } })
Java
PriceChangeFlowParams priceChangeFlowParams = PriceChangeFlowParams.newBuilder() .setSkuDetails(skuDetailsOfThePriceChangedSubscription) .build(); billingClient.launchPriceChangeConfirmationFlow(activity, priceChangeFlowParams, new PriceChangeConfirmationListener() { @Override public void onPriceChangeConfirmationResult(int responseCode) { // Handle the result. } });
Il flusso di conferma della variazione di prezzo mostra una finestra di dialogo contenente le nuove informazioni sui prezzi, in cui viene chiesto agli utenti di accettare il nuovo prezzo. Questo flusso restituisce un
codice di risposta di tipo
BillingClient.BillingResponse
.
Nuova modalità proporzionale
Quando esegui l'upgrade o il downgrade dell'abbonamento di un utente, puoi utilizzare una nuova modalità di ripartizione proporzionale, DEFERRED
. Questa modalità aggiorna l'abbonamento dell'utente al successivo rinnovo. Per scoprire di più su come impostare questa modalità proporzionale, consulta Impostare la modalità proporzionale.
Nuovo metodo per impostare i dettagli dello SKU
Nella classe BillingFlowParams
, il metodo setSku()
è stato ritirato.
Questa modifica serve a ottimizzare il flusso di Fatturazione Google Play.
Quando crei una nuova istanza di BillingFlowParams
nel tuo client di fatturazione in-app, ti consigliamo di lavorare direttamente con l'oggetto JSON utilizzando setSkuDetails()
, come mostrato nel seguente snippet di codice:
Nella classe Builder BillingFlowParams
, il metodo setSku()
è stato
ritirato. Utilizza invece il metodo setSkuDetails()
, come mostrato nel seguente
snippet di codice. L'oggetto passato nell'oggetto setSkuDetails()
proviene dal metodo
querySkuDetailsAsync()
.
Kotlin
private lateinit var mBillingClient: BillingClient private val mSkuDetailsMap = HashMap<String, SkuDetails>() private fun querySkuDetails() { val skuDetailsParamsBuilder = SkuDetailsParams.newBuilder() mBillingClient.querySkuDetailsAsync(skuDetailsParamsBuilder.build() ) { responseCode, skuDetailsList -> if (responseCode == 0) { for (skuDetails in skuDetailsList) { mSkuDetailsMap[skuDetails.sku] = skuDetails } } } } private fun startPurchase(skuId: String) { val billingFlowParams = BillingFlowParams.newBuilder() .setSkuDetails(mSkuDetailsMap[skuId]) .build() }
Java
private BillingClient mBillingClient; private Map<String, SkuDetails> mSkuDetailsMap = new HashMap<>(); private void querySkuDetails() { SkuDetailsParams.Builder skuDetailsParamsBuilder = SkuDetailsParams.newBuilder(); mBillingClient.querySkuDetailsAsync(skuDetailsParamsBuilder.build(), new SkuDetailsResponseListener() { @Override public void onSkuDetailsResponse(int responseCode, List<SkuDetails> skuDetailsList) { if (responseCode == 0) { for (SkuDetails skuDetails : skuDetailsList) { mSkuDetailsMap.put(skuDetails.getSku(), skuDetails); } } } }); } private void startPurchase(String skuId) { BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder() .setSkuDetails(mSkuDetailsMap.get(skuId)) .build(); }
Rilascio 1.1 della Libreria Fatturazione Play (7/05/2018)
È ora disponibile la versione 1.1 della Libreria Fatturazione Google Play. Questa versione contiene le seguenti modifiche.
Riepilogo delle modifiche
- Aggiunto il supporto per specificare una modalità proporzionale in
BillingFlowParams
durante l'upgrade o il downgrade di un abbonamento esistente. - Il flag booleano
replaceSkusProration
inBillingFlowParams
non è più supportato. Usa invece il criterioreplaceSkusProrationMode
. launchBillingFlow()
ora attiva un callback per le risposte non riuscite.
Modifiche del comportamento
La versione 1.1 della Libreria Fatturazione Google Play contiene le seguenti modifiche al comportamento.
Gli sviluppatori possono impostare replaceSkusProrationMode
nella classe BillingFlowParams
Un ProrationMode
fornisce ulteriori dettagli sul tipo di ripartizione proporzionale quando viene eseguito l'upgrade o il downgrade dell'abbonamento di un utente.
Kotlin
BillingFlowParams.newBuilder() .setSku(skuId) .setType(billingType) .setOldSku(oldSku) .setReplaceSkusProrationMode(replaceSkusProrationMode) .build()
Java
BillingFlowParams.newBuilder() .setSku(skuId) .setType(billingType) .setOldSku(oldSku) .setReplaceSkusProrationMode(replaceSkusProrationMode) .build();
Attualmente Google Play supporta le seguenti modalità di ripartizione proporzionale:
IMMEDIATE_WITH_TIME_PRORATION |
La sostituzione ha effetto immediato e la nuova data di scadenza verrà ripartita proporzionalmente e accreditata o addebitata all'utente. Questo è il comportamento predefinito corrente. |
IMMEDIATE_AND_CHARGE_PRORATED_PRICE |
La sostituzione ha effetto immediato e il ciclo di fatturazione rimane invariato. Verrà addebitato il prezzo per il periodo rimanente.
Nota: questa opzione è disponibile solo per l'upgrade dell'abbonamento. |
IMMEDIATE_WITHOUT_PRORATION |
La sostituzione avrà effetto immediato e il nuovo prezzo verrà addebitato alla prossima ricorrenza. Il ciclo di fatturazione rimane invariato. |
replaceSkusProration
non è più supportato nel corso BillingFlowParams
In passato gli sviluppatori potevano impostare un flag booleano per addebitare un importo proporzionale per una richiesta di upgrade dell'abbonamento. Dato che supportiamo ProrationMode
, che contiene istruzioni più dettagliate, questo flag booleano non è più supportato.
launchBillingFlow()
ora attiva un callback per le risposte non riuscite
La Libreria Fatturazione attiva sempre il callback di PurhcasesUpdatedListener
e restituisce un valore BillingResponse
in modo asincrono. Viene mantenuto anche il valore restituito sincrono di BillingResponse
.
Correzioni di bug
- Si chiude correttamente nelle prime fasi dei metodi asincroni quando il servizio è disconnesso.
- Gli oggetti dei parametri
Builder
non modificano più gli oggetti creati. - Problema 68087141:
launchBillingFlow()
attiva il callback per le risposte non riuscite.
Rilascio Libreria Fatturazione Google Play 1.0 (19/09/2017, Avviso)
È ora disponibile la versione 1.0 della Libreria Fatturazione Google Play. Questa versione contiene le seguenti modifiche.
Modifiche importanti
- Autorizzazione per la fatturazione incorporata nel file manifest della raccolta. Non è più necessario aggiungere l'autorizzazione
com.android.vending.BILLING
nel file manifest Android. - Nuovo builder aggiunto alla classe
BillingClient.Builder
. - Introdotto il pattern del builder per la classe
SkuDetailsParams
da utilizzare sui metodi per eseguire query sugli SKU. - Sono stati aggiornati diversi metodi dell'API per garantire la coerenza (gli stessi nomi e lo stesso ordine degli argomenti di ritorno).
Modifiche del comportamento
La versione 1.0 della Libreria Fatturazione Google Play contiene le seguenti modifiche al comportamento.
Classe BillingClient.Builder
Ora BillingClient.Builder
viene inizializzato tramite il pattern newBuilder:
Kotlin
billingClient = BillingClient.newBuilder(context).setListener(this).build()
Java
billingClient = BillingClient.newBuilder(context).setListener(this).build();
Il metodo lancioBillingFlow viene ora chiamato utilizzando una classe BillingFlowParams
Per avviare il flusso di fatturazione per un acquisto o un abbonamento, il metodo launchBillingFlow()
riceve un'istanza BillingFlowParams
inizializzata con parametri specifici della richiesta:
Kotlin
BillingFlowParams.newBuilder().setSku(skuId) .setType(billingType) .setOldSku(oldSku) .build() // Then, use the BillingFlowParams to start the purchase flow val responseCode = billingClient.launchBillingFlow(builder.build())
Java
BillingFlowParams.newBuilder().setSku(skuId) .setType(billingType) .setOldSku(oldSku) .build(); // Then, use the BillingFlowParams to start the purchase flow int responseCode = billingClient.launchBillingFlow(builder.build());
Nuovo modo per eseguire query sui prodotti disponibili
Gli argomenti per i metodi queryPurchaseHistoryAsync()
e querySkuDetailsAsync()
sono stati aggregati in un pattern di Builder:
Kotlin
val params = SkuDetailsParams.newBuilder() params.setSkusList(skuList) .setType(itemType) billingClient.querySkuDetailsAsync(params.build(), object : SkuDetailsResponseListener() { ... })
Java
SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder(); params.setSkusList(skuList) .setType(itemType); billingClient.querySkuDetailsAsync(params.build(), new SkuDetailsResponseListener() {...})
Il risultato viene ora restituito tramite il codice risultato e un elenco di oggetti SkuDetails
anziché la precedente classe wrapper per comodità e coerenza in tutta la nostra API:
Kotlin
fun onSkuDetailsResponse(@BillingResponse responseCode: Int, skuDetailsList: List<SkuDetails>)
Java
public void onSkuDetailsResponse(@BillingResponse int responseCode, List<SkuDetails> skuDetailsList)
Ordine dei parametri modificato nel metodo onConsumeResponse()
L'ordine degli argomenti per onConsumeResponse
dall'interfaccia ConsumeResponseListener
è cambiato per essere coerente in tutta l'API:
Kotlin
fun onConsumeResponse(@BillingResponse responseCode: Int, outToken: String)
Java
public void onConsumeResponse(@BillingResponse int responseCode, String outToken)
Oggetto PurchaseResult senza wrapping
PurchaseResult
è stato eliminato per garantire la coerenza in tutta la nostra API:
Kotlin
fun onPurchaseHistoryResponse(@BillingResponse responseCode: Int, purchasesList: List<Purchase>)
Java
void onPurchaseHistoryResponse(@BillingResponse int responseCode, List<Purchase> purchasesList)
Correzioni di bug
- Nessun codice di risposta nel bundle PURCHASES_UPDATED
- Risolvere i problemi di ProxyBillingActivity e PurchasesUpdatedListener durante la rotazione del dispositivo
Release Anteprima 1 per gli sviluppatori (12/06/2017, annuncio)
È stata lanciata un'anteprima per gli sviluppatori, allo scopo di semplificare il processo di sviluppo per quanto riguarda la fatturazione, consentendo agli sviluppatori di concentrare i propri sforzi sull'implementazione di logica specifica per l'app per Android, ad esempio l'architettura dell'applicazione e la struttura di navigazione.
La libreria include diversi corsi e funzionalità utili che puoi utilizzare durante l'integrazione delle tue app Android con l'API Fatturazione Google Play. La libreria fornisce anche un livello di astrazione oltre al servizio Android Interface Definition Language (AIDL), consentendo agli sviluppatori di definire più facilmente l'interfaccia tra l'app e l'API Fatturazione Google Play.