Questo documento contiene le note di rilascio della Libreria Fatturazione Google Play.
Competenze Android
Visualizza su GitHubEsegui l'upgrade della Libreria Fatturazione Play
android skills add play-billing-library-version-upgradeHelp me upgrade my Play Billing Library implementation.Release della Libreria Fatturazione Google Play 9.1.0 (18/06/2026)
La versione 9.1.0 della Libreria Fatturazione Google Play e delle estensioni Kotlin è ora disponibile.
Riepilogo delle modifiche
- Nuove API per la scelta della fatturazione:
- Aggiunta di
BillingClient.getBillingChoiceInfoAsync()per recuperare informazioni sulle scelte di fatturazione disponibili per l'utente. - È stata aggiunta la classe
BillingChoiceInfo, che contiene i dettagli della risposta, inclusi gli URL delle immagini e le informazioni sul programma fedeltà. - Aggiunta di
GetBillingChoiceInfoParamsper configurare la richiesta. - È stato aggiunto il numero
BillingChoiceInfoResponseListenerper ricevere la chiamata. - È stata aggiunta la funzione di sospensione dell'estensione Kotlin
BillingClient.getBillingChoiceInfo(). - Aggiunta di
BillingClient.showBillingProgramInformationDialog()per mostrare una finestra di dialogo informativa per un programma di fatturazione. - È stato aggiunto
BillingProgramInformationDialogParamsper configurare la finestra di dialogo. - È stato aggiunto il numero
BillingProgramInformationDialogListenerper ricevere la chiamata. - Aggiunta di
BillingProgramAvailabilityDetails.BillingChoiceAvailabilityDetailsper fornire dettagli sulla disponibilità della scelta di fatturazione. - Aggiunta di
ChoiceScreenTypeper specificare il tipo di schermata di scelta.
- Aggiunta di
Release della Libreria Fatturazione Google Play 9.0.0 (19/05/2026)
La versione 9.0.0 della Libreria Fatturazione Google Play e delle estensioni Kotlin è ora disponibile. Se vuoi eseguire la migrazione dalle versioni precedenti di PBL, consulta la guida alla migrazione di PBL 9.
Riepilogo delle modifiche
Codici di errore aggiornati per l'attività bloccata del Play Store: i codici di errore per le app del Play Store bloccate sono stati aggiornati. Nei casi in cui l'app Play Store è bloccata dal sistema (ad esempio, nella modalità per bambini personalizzata dall'OEM), il codice di risposta è cambiato da
ERRORaBILLING_UNAVAILABLE. Inoltre,BillingResultper questi casi ora fornisce un messaggio di debug Play Store è bloccato.Aggiornamento del supporto di valori null per la fatturazione fornita dallo sviluppatore: il metodo
DeveloperProvidedBillingDetails.getLinkUri()è stato aggiornato in modo da essere@Nullable. Questa modifica supporta gli scenari in cui l'URI del link diretto per i pagamenti esterni non è disponibile durante la fase di selezione del pagamento.Per gestire questa modifica in sicurezza, assicurati che il codice di integrazione gestisca sia i valori
nullsia i valori di stringa vuota ("") dal metodoDeveloperProvidedBillingDetails.getLinkUri()prima di analizzare o lanciare gli intent del browser.Aggiornamento di
targetSdkVersiona 35.Ora puoi utilizzare i messaggi in-app per informare gli utenti di un imminente aumento esplicito di prezzo. In questo modo, gli utenti possono confermare l'aumento di prezzo senza uscire dall'app. Il messaggio relativo a un aumento esplicito di prezzo in sospeso viene mostrato a partire dal primo giorno in cui l'utente può accettare l'aumento di prezzo e viene mostrato al massimo una volta ogni 7 giorni.
Release della Libreria Fatturazione Google Play 8.3.0 (23/12/2025)
La versione 8.3.0 della Libreria Fatturazione Google Play e delle estensioni Kotlin è ora disponibile.
Riepilogo delle modifiche
Nuove API per i pagamenti esterni:
- Sono state aggiunte classi per supportare il flusso di pagamenti esterni:
- Aggiunta di
enableBillingProgram(EnableBillingProgramParams)per attivare i pagamenti esterni. - Aggiunta di
BillingFlowParams.Builder.enableDeveloperBillingOptionper avviare il flusso di pagamenti esterni.
Miglioramento della categorizzazione degli errori per gli abbandoni del flusso di pagamento esterno:
- Se un utente abbandona il flusso di acquisto per completare il pagamento su un'app esterna (ad esempio un portafoglio elettronico) e abbandona la transazione senza tornare, il codice di risposta restituito al client è ora
BillingResponseCode.USER_CANCELED(1) con il messaggio di debugBILLING_ACTIVITY_PAUSED(in precedenza il valore predefinito eraBillingResponseCode.ERROR(6)).
- Se un utente abbandona il flusso di acquisto per completare il pagamento su un'app esterna (ad esempio un portafoglio elettronico) e abbandona la transazione senza tornare, il codice di risposta restituito al client è ora
Release della Libreria Fatturazione Google Play 8.2.1 (15/12/2025)
La versione 8.2.1 della Libreria Fatturazione Google Play e delle estensioni Kotlin è ora disponibile.
Correzioni di bug
- È stato corretto un bug in
isBillingProgramAvailableAsyncecreateBillingProgramReportingDetailsAsync. Esegui l'aggiornamento alla versione 8.2.1 per utilizzare queste API introdotte nella versione 8.2.0.
Release della Libreria Fatturazione Google Play 8.2.0 (9/12/2025)
La versione 8.2.0 della Libreria Fatturazione Google Play e delle estensioni Kotlin è ora disponibile.
Riepilogo delle modifiche
Nuove API per i link a contenuti esterni e le offerte esterne:
- Aggiunta di
enableBillingProgramper configurareBillingClientper questi programmi. - Aggiunta di
isBillingProgramAvailableAsyncper determinare l'idoneità degli utenti. - È stato aggiunto
createBillingProgramReportingDetailsAsyncper creare il token di transazione esterno che deve essere utilizzato per i report. - Aggiunta di
launchExternalLinkper avviare il link esterno a un'offerta di contenuti digitali o al download di un'app.
- Aggiunta di
Modifiche al programma per offerte esterne:
- Sono state apportate modifiche alle norme del programma per offerte esterne. Per i dettagli, consulta le modifiche al programma. Per capire come lanciare i flussi di offerte esterne con le nuove API, consulta la guida all'integrazione.
- L'API
BillingClient.Builder.enableExternalOfferè stata ritirata. - L'API
isExternalOfferAvailableAsyncè stata ritirata. - L'API
createExternalOfferReportingDetailsAsyncè stata ritirata. - L'API
showExternalOfferInformationDialogè stata ritirata.
Release della Libreria Fatturazione Google Play 8.1.0 (6/11/2025)
La versione 8.1.0 della Libreria Fatturazione Google Play e delle estensioni Kotlin è ora disponibile.
Riepilogo delle modifiche
Abbonamenti sospesi
È stato aggiunto un nuovo parametro al metodo
BillingClient.queryPurchasesAsync()per includere gli abbonamenti sospesi quando si eseguono query sugli abbonamenti. Gli abbonamenti sospesi sono ancora attribuiti all'utente, ma non sono attivi, perché l'utente ha messo in pausa l'abbonamento o il metodo di pagamento per il rinnovo è stato rifiutato.L'oggetto
Purchaserestituito nel listener restituiràisSuspended() = trueper tutti gli abbonamenti sospesi. In questo caso, non devi concedere l'accesso all'abbonamento acquistato, ma devi indirizzare l'utente al Centro abbonamenti dove può gestire i propri metodi di pagamento o lo stato di pausa per riattivare l'abbonamento.Aggiornamenti agli abbonamenti:
L'oggetto
BillingFlowParams.ProductDetailsParamsora ha il metodosetSubscriptionProductReplacementParams()in cui puoi specificare le informazioni sulla sostituzione a livello di prodotto.L'oggetto
SubscriptionProductReplacementParamsha due metodi setter:setOldProductId: il vecchio prodotto che deve essere sostituito dal prodotto nell'attualeProductDetails.setReplacementMode: questa è la modalità di sostituzione a livello di elemento. Le modalità sono essenzialmente le stesse di SubscriptionUpdateParams, ma la mappatura dei valori è stata aggiornata. È stata introdotta una nuova modalità di sostituzioneKEEP_EXISTINGche ti consente di mantenere invariato il calendario pagamenti esistente per un articolo.
SubscriptionUpdateParams setSubscriptionReplacementMode verrà ritirato. Utilizza invece
SubscriptionProductReplacementParams.setReplacementMode.
Aggiornamento di
minSdkVersionalla versione 23.API di pre-ordine per i prodotti a pagamento singolo attivate
L'API
ProductDetails.oneTimePurchaseOfferDetails.getPreorderDetails()che recupera i dettagli del pre-ordine è ora disponibile per l'utilizzo.La Libreria Fatturazione Google Play ora supporta Kotlin versione 2.2.0.
Release della Libreria Fatturazione Google Play 8.0.0 (30/06/2025)
La versione 8.0.0 della Libreria Fatturazione Google Play e delle estensioni Kotlin è ora disponibile.
Riepilogo delle modifiche
Gli articoli in-app verranno ora denominati prodotti a pagamento singolo.
Più opzioni di acquisto e offerte per i prodotti a pagamento singolo.
Ora puoi avere più opzioni di acquisto e offerte per i tuoi prodotti a pagamento singolo. In questo modo, puoi vendere i tuoi prodotti in modo più flessibile e riduci la complessità della loro gestione.
Miglioramento del metodo
queryProductDetailsAsync().Prima della versione 8.0.0 di PBL, il metodo
queryProductDetailsAsync()non restituiva i prodotti che non potevano essere recuperati. Ciò potrebbe essere dovuto a motivi quali il prodotto non è stato trovato o non sono disponibili offerte per l'utente. Con PBL 8.0.0, i prodotti non recuperati vengono restituiti con un nuovo codice di stato a livello di prodotto che fornisce informazioni sui prodotti non recuperati. Tieni presente che è stata apportata una modifica alla firma diProductDetailsResponseListener.onProductDetailsResponse(), che richiede modifiche alla tua app. Per ulteriori informazioni, consulta Elabora il risultato.Riconnessione automatica al servizio.
Il nuovo parametro del builder
BillingClient.Builder.enableAutoServiceReconnection()consente agli sviluppatori di attivare la riconnessione automatica al servizio, semplificando la gestione delle connessioni tramite la gestione automatica delle riconnessioni al servizio Fatturazione Play ed eliminando la necessità di chiamare manualmentestartConnection()in caso di disconnessione del servizio. Per saperne di più, consulta Ristabilire automaticamente una connessione.Codici di risposta secondari per il metodo
launchBillingFlow().Il BillingResult restituito da
launchBillingFlow()ora includerà un campo del codice di risposta secondaria. Questo campo verrà compilato solo in alcuni casi per fornire un motivo più specifico dell'errore. Il campo della risposta secondaria può avere i seguenti valori:PAYMENT_DECLINED_DUE_TO_INSUFFICIENT_FUNDS: restituito quando i fondi dell'utente sono inferiori al prezzo dell'articolo che sta tentando di acquistare.USER_INELIGIBLE: viene restituito quando l'utente non soddisfa i requisiti di idoneità configurati per un'offerta di abbonamento.NO_APPLICABLE_SUB_RESPONSE_CODE: il valore predefinito, restituito quando non è applicabile nessun altro codice di risposta secondario.
Rimosso il metodo
queryPurchaseHistory().Il metodo
queryPurchaseHistory()precedentemente contrassegnato come deprecato è stato rimosso. Per informazioni dettagliate sulle API alternative da utilizzare, consulta Cronologia acquisti.Rimosso il metodo
querySkuDetailsAsync().Il metodo
querySkuDetailsAsync()precedentemente contrassegnato come deprecato è stato rimosso. Utilizza invece queryProductDetailsAsync.Rimosso il metodo
BillingClient.Builder.enablePendingPurchases().Il metodo
enablePendingPurchases()senza parametri, precedentemente contrassegnato come deprecato, è stato rimosso. Utilizza inveceenablePendingPurchases(PendingPurchaseParams params). Tieni presente che il valore deprecatoenablePendingPurchases()è funzionalmente equivalente aenablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build()).Rimosso il metodo
queryPurchasesAsync()sovraccarico che accetta un skuType.Il metodo
queryPurchasesAsync(String skuType, PurchasesResponseListener listener)precedentemente contrassegnato come deprecato è stato rimosso. In alternativa, utilizzaqueryPurchasesAsync(QueryPurchasesParams queryPurchasesParams, PurchasesResponseListener listener).
Release della Libreria Fatturazione Google Play 7.1.1 (3/10/2024)
La versione 7.1.1 della Libreria Fatturazione Google Play e delle estensioni Kotlin è ora disponibile.
Correzioni di bug
- È stato corretto un bug nella Libreria Fatturazione Play 7.1.0 relativo ai test dei codici di risposta
BillingResult.
Release della Libreria Fatturazione Google Play 7.1.0 (19/09/2024)
La versione 7.1.0 della Libreria Fatturazione Google Play e delle estensioni Kotlin è ora disponibile.
Riepilogo delle modifiche
- Miglioramento della thread safety relativa allo stato e alla gestione della connessione.
- Sono state introdotte modifiche parziali per testare i codici di risposta
BillingResult, che sono stati rilasciati completamente nella Libreria Fatturazione Play 7.1.1. Per testare l'integrazione utilizzando questa funzionalità, devi eseguire l'upgrade alla Libreria Fatturazione Play 7.1.1. Esiste un bug che influirà solo sulle applicazioni con i test degli override di fatturazione attivati e non influisce sull'utilizzo regolare. Per saperne di più, consulta Testa i codici di risposta diBillingResult.
Release della Libreria Fatturazione Google Play 7.0.0 (14/05/2024)
La versione 7.0.0 della Libreria Fatturazione Google Play e delle estensioni Kotlin è ora disponibile.
Riepilogo delle modifiche
Sono state aggiunte API per supportare gli abbonamenti a rate.
- Aggiunto
ProductDetails.InstallmentPlanDetailsper i piani base a rate che gli utenti sono idonei ad acquistare. Questa API aiuta la tua app a identificare il piano rateale e la relativa configurazione dell'impegno per fornire informazioni correlate all'utente. Per scoprire di più, consulta la nostra guida alle rate degli abbonamenti.
- Aggiunto
Sono stati aggiunti
PendingPurchasesParamseBillingClient.Builder.enablePendingPurchases(PendingPurchaseParams)per sostituireBillingClient.Builder.enablePendingPurchases(), che è stato ritirato in questa release.enablePendingPurchases()deprecato è funzionalmente equivalente aenablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build()).
Sono state aggiunte API per supportare le transazioni in attesa per i piani prepagati degli abbonamenti:
- Utilizza
PendingPurchasesParams.Builder.enablePrepaidPlans()insieme aBillingClient.Builder.enablePendingPurchases(PendingPurchaseParams)per attivare le transazioni in attesa per i piani prepagati degli abbonamenti. Quando aggiungi il supporto, assicurati che la tua app gestisca correttamente anche i cicli di vita degli abbonamenti. Per scoprire di più, consulta la nostra guida agli acquisti in attesa. - Sono stati aggiunti
Purchase.PendingPurchaseUpdateePurchase.getPendingPurchaseUpdate()per recuperare la ricarica in attesa o l'upgrade o il downgrade di un abbonamento esistente.
- Utilizza
Sono stati rimossi
BillingClient.Builder.enableAlternativeBilling(),AlternativeBillingListenereAlternativeChoiceDetails.- Gli sviluppatori devono invece utilizzare
BillingClient.Builder.enableUserChoiceBilling()conUserChoiceBillingListenereUserChoiceDetailsnel callback del listener.
- Gli sviluppatori devono invece utilizzare
Rimosso:
BillingFlowParams.ProrationMode,BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceProrationMode()eBillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceSkusProrationMode().- Gli sviluppatori devono utilizzare
BillingFlowParams.SubscriptionUpdateParams.ReplacementModeconBillingFlowParams.SubscriptionUpdateParams.Builder#setSubscriptionReplacementMode(int).
- Gli sviluppatori devono utilizzare
BillingFlowParams.SubscriptionUpdateParams.Builder#setOldSkuPurchaseToken()rimosso.- Gli sviluppatori devono utilizzare
BillingFlowParams.SubscriptionUpdateParams.Builder#setOldPurchaseToken(java.lang.String)al suo posto.
- Gli sviluppatori devono utilizzare
BillingClient.queryPurchaseHistoryAsync()è stato deprecato e verrà rimosso in una release futura. Gli sviluppatori devono invece utilizzare le seguenti alternative:- Acquisti confermati e in attesa: utilizza
BillingClient.queryPurchasesAsync()per recuperare gli acquisti attivi. - Acquisti consumati: gli sviluppatori devono tenere traccia degli acquisti consumati sui propri server.
- Acquisti annullati: utilizza l'API per sviluppatori voided-purchases.
- Per maggiori dettagli, consulta la sezione Esegui query sulla cronologia acquisti.
- Acquisti confermati e in attesa: utilizza
BillingFlowParams.ProductDetailsParams.setOfferToken()ora genera un'eccezione quando gli sviluppatori specificano unofferTokenvuoto.Aggiornamento di
minSdkVersiona 21 e ditargetSdkVersiona 34.
Release della Libreria Fatturazione Google Play 6.2.1 (16/04/2024)
La versione 6.2.1 della Libreria Fatturazione Google Play e delle estensioni Kotlin è ora disponibile.
Riepilogo delle modifiche
- È stato corretto un bug in
BillingClient.showAlternativeBillingOnlyInformationDialog()per cuiAlternativeBillingOnlyInformationDialogListenerpotrebbe non essere chiamato in alcuni casi al termine della finestra di dialogo.
Release della Libreria Fatturazione Google Play 6.2.0 (6/03/2024)
La versione 6.2.0 della Libreria Fatturazione Google Play e delle estensioni Kotlin è ora disponibile.
Riepilogo delle modifiche
- API aggiunte per supportare le offerte esterne
- Aggiunta di
BillingClient.Builder.enableExternalOffer()per consentire la possibilità di fornire offerte esterne. - Aggiunta di
BillingClient.isExternalOfferAvailableAsync()per verificare la disponibilità della funzionalità di offerta esterna. - Aggiunta di
BillingClient.showExternalOfferInformationDialog()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.
- Aggiunta di
Release della Libreria Fatturazione Google Play 6.1.0 (14/11/2023)
La versione 6.1.0 della Libreria Fatturazione Google Play e delle estensioni Kotlin è ora disponibile.
Riepilogo delle modifiche
- Sono state aggiunte API per supportare solo la fatturazione alternativa (ovvero senza scelta dell'utente)
- Aggiunta di
BillingClient.Builder.enableAlternativeBillingOnly()per abilitare funzionalmente la possibilità di offrire solo la fatturazione alternativa. - Aggiunta di
BillingClient.isAlternativeBillingOnlyAvailableAsync()per verificare la disponibilità dell'offerta della sola fatturazione alternativa. - Aggiunta di
BillingClient.showAlternativeBillingOnlyInformationDialog()per mostrare una finestra di dialogo informativa che comunica agli utenti quando viene utilizzata solo la fatturazione alternativa. - Aggiunta di
BillingClient.createAlternativeBillingOnlyReportingDetailsAsync()per creare un payload necessario per segnalare le transazioni effettuate tramite solo fatturazione alternativa.
- Aggiunta di
- Aggiornamento delle API di fatturazione scelta dall'utente
- È stato aggiunto
UserChoiceBillingListenerper sostituire AlternativeBillingListener, che è stato contrassegnato come deprecato. - È stato aggiunto
UserChoiceDetailsper sostituireAlternativeChoiceDetails, che è stato contrassegnato come deprecato. - È stato aggiunto
BillingClient.Builder.enableUserChoiceBilling()per sostituireBillingClient.Builder.enableAlternativeBilling(), che è stato contrassegnato come deprecato.
- È stato aggiunto
- Aggiunta di
BillingClient.getBillingConfigAsync()per recuperare il paese di Google Play.
Release della libreria Fatturazione Google Play 6.0.1 (22/06/2023)
La versione 6.0.1 della Libreria Fatturazione Google Play e delle estensioni Kotlin è ora disponibile.
Riepilogo delle modifiche
Aggiorna Libreria Fatturazione Play per renderla compatibile con Android 14.
Release della Libreria Fatturazione Google Play 6.0 (10/05/2023)
La versione 6.0.0 della Libreria Fatturazione Google Play e delle estensioni Kotlin è ora disponibile.
Riepilogo delle modifiche
Aggiunto un nuovo enum
ReplacementModeper sostituireProrationMode.Tieni presente che
ProrationModeè ancora disponibile per motivi di compatibilità con le versioni precedenti.ID ordine rimosso per gli acquisti
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à compilato dopo che l'acquisto viene spostato nello stato
PURCHASED.Metodi
queryPurchaseselaunchPriceConfirmationFlowrimossi.I metodi
queryPurchaseselaunchPriceConfirmationFlowprecedentemente contrassegnati come deprecati sono stati rimossi nella Libreria Fatturazione Play 6.0.0. Gli sviluppatori devono utilizzarequeryPurchasesAsyncanzichéqueryPurchases. Per le alternative alaunchPriceConfirmationFlow, consulta Variazioni di prezzo.È stato aggiunto un nuovo codice di risposta di errore di rete.
A partire dalla versione 6.0.0 della Libreria Fatturazione Play, è stato aggiunto un nuovo codice di risposta di errore di rete,
NETWORK_ERROR. Questo codice viene restituito quando si verifica un errore dovuto a un problema di connessione di rete. Questi errori di connessione di rete sono stati segnalati in precedenza comeSERVICE_UNAVAILABLE.Aggiornamento di
SERVICE_UNAVAILABLEeSERVICE_TIMEOUT.A partire dalla versione 6.0.0 di PBL, gli errori dovuti a timeout nell'elaborazione verranno restituiti come
SERVICE_UNAVAILABLEanziché come l'attualeSERVICE_TIMEOUT.Il comportamento non cambia nelle versioni precedenti di PBL.
SERVICE_TIMEOUTrimosso.A partire dalla versione 6.0.0 di PBL,
SERVICE_TIMEOUTnon verrà più restituito. Le versioni precedenti della Libreria Fatturazione Play continueranno a restituire questo codice.Aggiunto logging aggiuntivo.
La release della Libreria Fatturazione Play 6 include un logging aggiuntivo, che fornisce insight sull'utilizzo dell'API (ad esempio, esito positivo e negativo) e sui problemi di connessione al servizio. Queste informazioni verranno utilizzate per migliorare il rendimento della Libreria Fatturazione Play e fornire un supporto migliore per gli errori.
Release della Libreria Fatturazione Google Play 5.2.1 (22/06/2023)
La versione 5.2.1 della Libreria Fatturazione Google Play e delle estensioni Kotlin è ora disponibile.
Riepilogo delle modifiche
Aggiorna Libreria Fatturazione Play per renderla compatibile con Android 14.
Release della Libreria Fatturazione Google Play 5.2 (6/04/2023)
La versione 5.2.0 della Libreria Fatturazione Google Play e delle estensioni Kotlin è ora disponibile.
Riepilogo delle modifiche
- Sono state aggiunte classi per supportare i flussi di fatturazione alternativa su dispositivi mobili/tablet per gli utenti in Corea del Sud:
- Aggiunto il metodo
BillingFlowParams.SubscriptionUpdateParams.Builder.setOriginalExternalTransactionId()per specificare l'ID transazione esterno dell'abbonamento di origine. - Aggiunto il metodo
BillingClient.Builder.enableAlternativeBilling()per consentire agli utenti in Corea del Sud di selezionare un'opzione di fatturazione alternativa.
Release della Libreria Fatturazione Google Play 5.1 (31/10/2022)
La versione 5.1.0 della Libreria Fatturazione Google Play e delle estensioni Kotlin è ora disponibile.
Questa versione contiene le seguenti modifiche.
Riepilogo delle modifiche
- Aggiunto il metodo
ProductDetails.SubscriptionOfferDetails.getOfferId()per recuperare l'ID offerta. - Aggiunto il metodo
ProductDetails.SubscriptionOfferDetails.getBasePlanId()per recuperare l'ID piano base. - Aggiornamento di
targetSdkVersiona 31.
Release della Libreria Fatturazione Google Play 5.0 (11/05/2022)
La versione 5.0.0 della Libreria Fatturazione Google Play e delle estensioni Kotlin è ora disponibile.
Questa versione contiene le seguenti modifiche.
Riepilogo delle modifiche
- È stato introdotto un nuovo modello per gli abbonamenti, che include nuove entità che ti consentono di creare più offerte per un singolo prodotto in abbonamento. Per ulteriori informazioni, consulta la guida alla migrazione.
- Aggiunta di
BillingClient.queryProductDetailsAsync()per sostituireBillingClient.querySkuDetailsAsync(). - Aggiunto il metodo
setIsOfferPersonalized()per i requisiti relativi alle informative sui prezzi personalizzati dell'UE. Per scoprire di più su come utilizzare questo metodo, consulta Indica un prezzo personalizzato. - È stato rimosso
queryPurchases(), che era stato precedentemente ritirato 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 Lanciare un flusso di conferma della variazione di prezzo.- È stato rimosso
setVrPurchaseFlow(), che in precedenza veniva utilizzato durante la creazione di un'istanza di un flusso di acquisto. Nelle versioni precedenti, questo metodo reindirizzava l'utente per completare l'acquisto sul suo dispositivo Android. Una volta rimosso questo metodo, gli utenti completeranno l'acquisto tramite il flusso di acquisto standard.
Release della Libreria Fatturazione Google Play 4.1 (23/02/2022)
La versione 4.1.0 della Libreria Fatturazione Google Play e delle estensioni Kotlin è ora disponibile.
Questa versione contiene le seguenti modifiche.
Riepilogo delle modifiche
- Aggiunta di
BillingClient.showInAppMessages()per facilitare la gestione dei rifiuti dei pagamenti degli abbonamenti. Per scoprire di più su come utilizzare i messaggi in-app per gestire i rifiuti dei pagamenti degli abbonamenti, consulta la pagina Gestione dei rifiuti dei pagamenti.
Release della Libreria Fatturazione Google Play 4.0 (18/05/2021)
La versione 4.0.0 della Libreria Fatturazione Google Play e delle estensioni Kotlin è ora disponibile.
Riepilogo delle modifiche
È stato aggiunto
BillingClient.queryPurchasesAsync()per sostituireBillingClient.queryPurchases()che verrà rimosso in una release futura.Aggiunta una nuova modalità di sostituzione dell'abbonamento
IMMEDIATE_AND_CHARGE_FULL_PRICE.Aggiunto il metodo
BillingClient.getConnectionState()per recuperare lo stato della connessione della Libreria Fatturazione Play.Aggiornamento di Javadoc e dell'implementazione per indicare su quale thread può essere chiamato un metodo e su quale thread vengono pubblicati i risultati.
Aggiunta di
BillingFlowParams.Builder.setSubscriptionUpdateParams()come nuovo modo per avviare gli aggiornamenti degli abbonamenti. Questo sostituisceBillingFlowParams#getReplaceSkusProrationMode,BillingFlowParams#getOldSkuPurchaseToken,BillingFlowParams#getOldSku,BillingFlowParams.Builder#setReplaceSkusProrationMode,BillingFlowParams.Builder#setOldSkuche sono stati rimossi.Elementi aggiunti:
Purchase.getQuantity()ePurchaseHistoryRecord.getQuantity().Elementi aggiunti:
Purchase#getSkus()ePurchaseHistoryRecord#getSkus(). Questi sostituisconoPurchase#getSkuePurchaseHistoryRecord#getSku, che sono stati rimossi.Elementi rimossi:
BillingFlowParams#getSku,BillingFlowParams#getSkuDetailseBillingFlowParams#getSkuType.
Release della Libreria Fatturazione Google Play 3.0.3 (12/03/2021)
La versione 3.0.3 della Libreria Fatturazione Google Play, dell'estensione Kotlin e del plug-in Unity è ora disponibile.
Correzioni di bug di Java e Kotlin
- È stata corretta la perdita di memoria quando viene chiamato
endConnection(). - Risolto il problema relativo all'utilizzo della Libreria Fatturazione Google Play da parte di app che utilizzano la modalità di lancio di singole attività. Verrà attivato un callback
onPurchasesUpdated()quando un'app viene ripresa da Avvio app Android e la finestra di dialogo di fatturazione era visibile prima della sospensione.
Correzioni di bug di Unity
- Esegui l'aggiornamento alla versione 3.0.3 di Java per correggere la perdita di memoria e risolvere il problema che impedisce gli acquisti quando un'app viene ripresa da Avvio app Android e la finestra di dialogo di fatturazione era visibile prima della sospensione.
Release della Libreria Fatturazione Google Play 3.0.2 (24/11/2020)
La versione 3.0.2 della Libreria Fatturazione Google Play e dell'estensione Kotlin è ora disponibile.
Correzioni di bug
- Risolto un bug nell'estensione Kotlin per cui la coroutine non va a buon fine con l'errore "Already resumed".
- Risolti i riferimenti non risolti quando l'estensione Kotlin viene utilizzata con la libreria kotlinx.coroutines versione 1.4 e successive.
Release della Libreria Fatturazione Google Play 3.0.1 (30/09/2020)
La versione 3.0.1 della Libreria Fatturazione Google Play e dell'estensione Kotlin è ora disponibile.
Correzioni di bug
- Risolto un bug per cui, se l'app veniva terminata e ripristinata durante il flusso di fatturazione,
PurchasesUpdatedListenerpotrebbe non essere stato chiamato con il risultato dell'acquisto.
Release della Libreria Fatturazione Google Play 3.0 (08/06/2020)
La versione 3.0.0 della Libreria Fatturazione Google Play, dell'estensione Kotlin e del plug-in Unity è ora disponibile.
Riepilogo delle modifiche
- Rimosso il supporto degli SKU con premio.
- Sono stati rimossi i parametri
ChildDirectedeUnderAgeOfConsent. - Rimozione dei metodi di payload dello sviluppatore deprecati.
- Rimossi i metodi deprecati
BillingFlowParams.setAccountId()eBillingFlowParams.setDeveloperId(). - Rimossi i metodi deprecati
BillingFlowParams.setOldSkus(String oldSku)eBillingFlowParams.addOldSku(String oldSku). - Aggiunto il supporto di valori null per le annotazioni.
Correzioni di bug
SkuDetails.getIntroductoryPriceCycles()ora restituisceintanzichéString.- Risolto un bug per cui il flusso di fatturazione veniva trattato come se avesse parametri aggiuntivi anche se non erano stati impostati parametri aggiuntivi.
Release della Libreria Fatturazione Google Play 2.2.1 (20/05/2020)
La versione 2.2.1 della Libreria Fatturazione Google Play è ora disponibile.
Correzioni di bug
- È stata aggiornata la versione predefinita della libreria Fatturazione Google Play Java da cui dipende l'estensione Kotlin.
Release della Libreria Fatturazione Google Play 2.2.0 e supporto di Unity (23/03/2020)
La versione 2.2.0 di Fatturazione Google Play fornisce funzionalità che aiutano gli sviluppatori ad assicurarsi che gli acquisti vengano attribuiti all'utente corretto. Queste modifiche sostituiscono la necessità di creare soluzioni personalizzate basate sul payload dello sviluppatore. Nell'ambito di questo aggiornamento, la funzionalità del payload dello sviluppatore è stata ritirata e verrà rimossa in una release futura. Per maggiori informazioni, incluse le alternative consigliate, consulta Payload sviluppatore.
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 eseguire l'upgrade ora per usufruire di 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 Utilizza la Fatturazione Google Play con Unity.
Riepilogo delle modifiche
- Libreria Fatturazione Google Play per Java
- In
AcknowledgePurchaseParams, metodisetDeveloperPayload()egetDeveloperPayload()deprecati. - In
ConsumeParams, metodisetDeveloperPayload()egetDeveloperPayload()deprecati. - In
BillingFlowParams,setAccountId()è stato rinominato insetObfuscatedAccountId()ed è stata documentata la limitazione della lunghezza di 64 caratteri e la limitazione che non consente 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 al payload sviluppatore. - In
Purchase, è stato aggiunto il metodogetAccountIdentifiers()per restituire gli identificatori dell'account offuscati impostati inBillingFlowParams. - In
BillingClient, il metodoloadRewardedSku()è stato contrassegnato come deprecato nell'ambito del ritiro degli SKU con premio.
- In
Release 2.1.0 della Libreria Fatturazione Google Play e release 2.1.0 dell'estensione Kotlin (10/12/2019)
La versione 2.1.0 della Libreria Fatturazione Google Play e la nuova estensione Kotlin sono ora disponibili. L'estensione Kotlin della Libreria Fatturazione Play fornisce alternative API idiomatiche per l'utilizzo di Kotlin, con una migliore sicurezza null e coroutine. Per esempi di codice, consulta Utilizza la Libreria Fatturazione Google Play.
Questa versione contiene le seguenti modifiche.
Riepilogo delle modifiche
- In
BillingFlowParams,setOldSku(String oldSku)è stato ritirato e sostituito consetOldSku(String oldSku, String purchaseToken)per evitare ambiguità quando più account sul dispositivo possiedono lo stesso SKU.
Release della Libreria Fatturazione Google Play 2.0.3 (5 agosto 2019)
La versione 2.0.3 della Libreria Fatturazione Google Play è ora disponibile.
Correzioni di bug
- Risolto un bug per cui
querySkuDetailsAsync()a volte non riusciva con il codiceDEVELOPER_ERRORanziché restituire un risultato positivo.
Release della Libreria Fatturazione Google Play 2.0.2 (08/07/2019)
La versione 2.0.2 della Libreria Fatturazione Google Play è ora disponibile. Questa release contiene aggiornamenti alla documentazione di riferimento e non modifica la funzionalità della libreria.
Release della Libreria Fatturazione Google Play 2.0.1 (06/06/2019)
La versione 2.0.1 della Libreria Fatturazione Google Play è ora disponibile. Questa versione contiene le seguenti modifiche.
Correzioni di bug
- È stato corretto un bug per cui in alcuni casi i messaggi di debug venivano restituiti come
null. - È stato risolto un potenziale problema di perdita di memoria.
Release della Libreria Fatturazione Google Play 2.0 (7/05/2019)
La versione 2.0 della Libreria Fatturazione Google Play è ora disponibile. Questa versione contiene le seguenti modifiche.
Gli acquisti devono essere confermati entro tre giorni
Google Play supporta l'acquisto di prodotti all'interno dell'app (in-app) o
all'esterno dell'app (out-of-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 attesa (novità della versione 2.0), la finestra di tre giorni inizia quando l'acquisto passa allo stato PURCHASED e non si applica mentre l'acquisto è in 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 ai piani 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 acknowledgement 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 conferma sia per Purchases.products sia 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
consumeAsync(), disponibile nell'API client. - Per i prodotti che non vengono consumati, utilizza
acknowledgePurchase(), disponibile nell'API client. - Nell'API Server è disponibile anche un nuovo metodo
acknowledge().
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, ora devi chiamare
BillingClient.querySkuDetailsAsync(),
passando l'oggetto
SkuDetails risultante a
BillingFlowParams.Builder.setSkuDetails().
Per esempi di codice, consulta Utilizza la Libreria Fatturazione Google Play.
Il payload sviluppatore è supportato
La versione 2.0 della Libreria Fatturazione Google Play aggiunge il supporto per il payload dello sviluppatore, ovvero stringhe arbitrarie che possono essere allegate agli acquisti. Puoi collegare un parametro payload sviluppatore a un acquisto, ma solo quando l'acquisto viene confermato o consumato. A differenza del payload dello sviluppatore in AIDL, dove il payload poteva essere specificato all'avvio del flusso di acquisto, Poiché ora gli acquisti possono essere avviati all'esterno della tua app, questa modifica ti garantisce di avere sempre la possibilità 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, in modo che tu possa mostrare agli utenti che stanno ricevendo uno sconto.
SkuDetails contiene due nuovi metodi per recuperare il prezzo dello SKU originale:
getOriginalPriceAmountMicros()- restituisce il prezzo originale non formattato dello SKU prima dello sconto.
getOriginalPrice()- restituisce il prezzo originale con una formattazione aggiuntiva della valuta.
Transazioni in sospeso
Con la versione 2.0 della Libreria Fatturazione Google Play, devi supportare gli acquisti per i quali è richiesta un'azione aggiuntiva prima di concedere il diritto. Ad esempio, un utente potrebbe scegliere di acquistare il tuo prodotto in-app in un negozio fisico utilizzando i contanti. Ciò significa che la transazione viene completata al di fuori della tua app. In questo scenario, devi concedere il diritto solo dopo che l'utente ha completato la transazione.
Per attivare gli acquisti in attesa, chiama
enablePendingPurchases()
durante l'inizializzazione dell'app.
Utilizza
Purchase.getPurchaseState()
per determinare se lo stato dell'acquisto è PURCHASED o PENDING. Tieni presente che devi concedere il diritto solo quando lo stato è PURCHASED. Dovresti
controllare gli aggiornamenti dello stato di Purchase nel seguente modo:
- All'avvio dell'app, chiama
BillingClient.queryPurchases()per recuperare l'elenco dei prodotti non consumati associati all'utente. - Chiama
Purchase.getPurchaseState()su ogni oggettoPurchaserestituito. - Implementa il metodo
onPurchasesUpdated()per rispondere alle modifiche 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, ad esempio in contanti.
Quando confermi gli acquisti in attesa, assicurati di farlo solo quando lo stato dell'acquisto è PURCHASED e non PENDING.
Modifiche alle API
La versione 2.0 della Libreria Fatturazione Google Play contiene diverse modifiche alle API per supportare nuove funzionalità e chiarire quelle esistenti.
consumeAsync
consumeAsync() ora accetta un oggetto ConsumeParams anziché un purchaseToken. ConsumeParams contiene purchaseToken e un payload facoltativo dello sviluppatore.
La versione precedente di consumeAsync() è stata rimossa in questa release.
queryPurchaseHistoryAsync
Per ridurre al minimo la confusione,
queryPurchaseHistoryAsync()
ora 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 i dati restituiti non sono cambiati: queryPurchaseHistoryAsync() restituisce gli stessi dati di prima.
Valori restituiti di BillingResult
Le API che in precedenza restituivano un valore intero BillingResponse ora restituiscono un oggetto BillingResult. BillingResult contiene l'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 è destinata a essere mostrata agli utenti finali.
Correzioni di bug
SkuDetails.getIntroductoryPriceAmountMicros()ora restituisce unlonganziché unString.
Release della Libreria Fatturazione Google Play 1.2.2 (7 marzo 2019)
La versione 1.2.2 della Libreria Fatturazione Google Play è ora disponibile. Questa versione contiene le seguenti modifiche.
Correzioni di bug
- Risolto un problema di threading introdotto nella versione 1.2.1. Le chiamate in background non bloccano più il thread principale.
Altre modifiche
- Sebbene sia ancora consigliato l'utilizzo del thread principale, ora puoi creare un'istanza della Libreria Fatturazione Google Play da un thread in background.
- L'istanza è stata completamente migrata al thread in background per ridurre la probabilità di causare ANR.
Release della Libreria Fatturazione Play 1.2.1 (4 marzo 2019)
La versione 1.2.1 della Libreria Fatturazione Google Play è ora disponibile. Questa versione contiene le seguenti modifiche.
Modifiche principali
- Aggiunto il supporto per i prodotti con premio. Per saperne di più sulle opzioni di monetizzazione, consulta Aggiungi funzionalità specifiche per i prodotti con premio.
Altre modifiche
- Sono stati aggiunti costruttori pubblici per
PurchasesResulteSkuDetailsResultper semplificare i test. - Gli oggetti
SkuDetailspossono utilizzare un nuovo metodo,getOriginalJson(). - Tutte le chiamate ai servizi AIDL sono ora gestite da thread in background.
Correzioni di bug
- I listener di callback null non vengono più passati alle API pubbliche.
Release della Libreria Fatturazione Google Play 1.2 (18/10/2018)
La versione 1.2 della Libreria Fatturazione Google Play è ora disponibile. Questa versione contiene le seguenti modifiche.
Riepilogo delle modifiche
- La Libreria Fatturazione Google Play è ora concessa in licenza ai sensi del Contratto di licenza del Software development kit Android.
- È stata aggiunta l'API
launchPriceChangeConfirmationFlow, che invita gli utenti a rivedere una modifica in attesa al prezzo di un abbonamento. - È stato aggiunto il supporto di una nuova modalità di proratizzazione,
DEFERRED, per l'upgrade o il downgrade dell'abbonamento di un utente. - Nella classe
BillingFlowParams,setSku()è stato sostituito 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 rivedere e accettare il nuovo prezzo quando accedono alla tua app.
Per utilizzare questa API, crea un oggetto PriceChangeFlowParams utilizzando il skuDetails del prodotto in abbonamento, quindi chiama launchPriceChangeConfirmationFlow(). Implementa PriceChangeConfirmationListener per gestire il risultato al termine del flusso di conferma della variazione di prezzo, come mostrato nello snippet di codice seguente:
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 informazioni sul nuovo prezzo e chiede agli utenti di accettarlo. Questo flusso restituisce un codice di risposta di tipo BillingClient.BillingResponse.
Nuova modalità di ripartizione proporzionale
Quando esegui l'upgrade o il downgrade dell'abbonamento di un utente, puoi utilizzare una nuova modalità di prorata, DEFERRED. Questa modalità aggiorna l'abbonamento dell'utente al successivo rinnovo.
Per scoprire di più su come impostare questa modalità di ripartizione proporzionale, consulta Imposta la modalità di ripartizione proporzionale.
Nuovo metodo per impostare i dettagli degli SKU
Nella classe BillingFlowParams, il metodo setSku() è stato deprecato.
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 utilizzare direttamente l'oggetto JSON con
setSkuDetails(), come mostrato nello snippet di codice seguente:
Nella classe BillingFlowParams Builder, il metodo setSku() è stato ritirato. Utilizza invece il metodo setSkuDetails(), come mostrato nel seguente snippet di codice. L'oggetto passato all'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(); }
Release della Libreria Fatturazione Play 1.1 (07/05/2018)
La versione 1.1 della Libreria Fatturazione Google Play è ora disponibile. Questa versione contiene le seguenti modifiche.
Riepilogo delle modifiche
- È stato aggiunto il supporto per specificare una modalità di prorata in
BillingFlowParamsquando esegui l'upgrade o il downgrade di un abbonamento esistente. - Il flag booleano
replaceSkusProrationinBillingFlowParamsnon è più supportato. Usa invece il descrittorereplaceSkusProrationMode. launchBillingFlow()ora attiva un callback per le risposte non riuscite.
Modifiche al 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();
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 attuale. |
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 ha effetto immediato e il nuovo prezzo verrà addebitato al momento della ricorrenza successiva. Il ciclo di fatturazione rimane invariato. |
replaceSkusProration non è più supportato nella classe BillingFlowParams
In precedenza, 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 di ripartizione proporzionale più dettagliate, questo flag booleano non è più supportato.
launchBillingFlow() ora attiva un callback per le risposte non riuscite
La Libreria Fatturazione attiverà sempre il callback PurhcasesUpdatedListener e restituirà un BillingResponse in modo asincrono. Viene mantenuto anche il valore restituito sincrono di BillingResponse.
Correzioni di bug
- Esce correttamente in anticipo dai metodi asincroni quando il servizio è disconnesso.
- Gli oggetti param
Buildernon modificano più gli oggetti creati. - Problema 68087141:
launchBillingFlow()ora attiva il callback per le risposte non riuscite.
Release della Libreria Fatturazione Google Play 1.0 (19/09/2017, annuncio)
La versione 1.0 della Libreria Fatturazione Google Play è ora disponibile. Questa versione contiene le seguenti modifiche.
Modifiche importanti
- Autorizzazione di fatturazione incorporata nel manifest della libreria. Non è più necessario aggiungere l'autorizzazione
com.android.vending.BILLINGall'interno del file manifest di Android. - Nuovo builder aggiunto alla classe
BillingClient.Builder. - È stato introdotto il pattern builder per la classe
SkuDetailsParamsda utilizzare sui metodi per eseguire query sugli SKU. - Diversi metodi API sono stati aggiornati per garantire la coerenza (stessi nomi e ordine degli argomenti restituiti).
Modifiche al comportamento
La versione 1.0 della Libreria Fatturazione Google Play contiene le seguenti modifiche al comportamento.
Classe BillingClient.Builder
BillingClient.Builder
ora viene inizializzato tramite il pattern newBuilder:
Kotlin
billingClient = BillingClient.newBuilder(context).setListener(this).build()
Java
billingClient = BillingClient.newBuilder(context).setListener(this).build();
Il metodo launchBillingFlow ora viene 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 per la 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 inseriti in un pattern 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 classe wrapper precedente per tua comodità e per garantire la coerenza nella nostra API:
Kotlin
fun onSkuDetailsResponse(@BillingResponse responseCode: Int, skuDetailsList: List<SkuDetails>)
Java
public void onSkuDetailsResponse(@BillingResponse int responseCode, List<SkuDetails> skuDetailsList)
L'ordine dei parametri è cambiato nel metodo onConsumeResponse()
L'ordine degli argomenti per onConsumeResponse dall'interfaccia ConsumeResponseListener è stato modificato per essere coerente in tutta la nostra API:
Kotlin
fun onConsumeResponse(@BillingResponse responseCode: Int, outToken: String)
Java
public void onConsumeResponse(@BillingResponse int responseCode, String outToken)
Oggetto PurchaseResult non sottoposto a wrapping
PurchaseResult
è stato rimosso per garantire la coerenza nella 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
- Risolvi i problemi relativi a ProxyBillingActivity e PurchasesUpdatedListener durante la rotazione del dispositivo
Release Anteprima per gli sviluppatori 1 (12/06/2017, annuncio)
È stata lanciata l'Anteprima per gli sviluppatori, con l'obiettivo di semplificare il processo di sviluppo per quanto riguarda la fatturazione, consentendo agli sviluppatori di concentrare i propri sforzi sull'implementazione della logica specifica per l'app per Android, come l'architettura dell'applicazione e la struttura di navigazione.
La libreria include diverse classi e funzionalità utili da utilizzare per integrare le tue app per Android con l'API Fatturazione Google Play. La libreria fornisce anche un livello di astrazione sopra il servizio Android Interface Definition Language (AIDL), semplificando la definizione dell'interfaccia tra l'app e l'API Fatturazione Google Play da parte degli sviluppatori.