Questo argomento contiene le note di rilascio per la Libreria Fatturazione Google Play.
Release Libreria Fatturazione Google Play 7.0.0 (14/05/2024)
La versione 7.0.0 di Libreria Fatturazione Google Play e le estensioni Kotlin sono ora disponibili disponibili.
Riepilogo delle modifiche
Sono state aggiunte API per supportare gli abbonamenti a rate.
- Hai aggiunto
ProductDetails.InstallmentPlanDetails
per i piani base a rate che gli utenti sono idonei ad acquistare. Questa API aiuta la tua app a identificare il piano di rateizzazione e la relativa configurazione dell'impegno per fornire all'utente informazioni correlate. Per saperne di più, consulta guida alle rate di abbonamento.
- Hai aggiunto
Hai aggiunto
PendingPurchasesParams
eBillingClient.Builder.enablePendingPurchases(PendingPurchaseParams)
per sostituireBillingClient.Builder.enablePendingPurchases()
, che è stato ritirato in questa release.- L'elemento
enablePendingPurchases()
deprecato è funzionalmente equivalente aenablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build())
.
- L'elemento
Sono state aggiunte API per supportare le transazioni in attesa per i piani prepagati di abbonamento:
- Utilizza
PendingPurchasesParams.Builder.enablePrepaidPlans()
insieme aBillingClient.Builder.enablePendingPurchases(PendingPurchaseParams)
per attivare le transazioni in attesa per i piani prepagati di abbonamento. Durante l'aggiunta assicurati che la tua app gestisca correttamente l'abbonamento cicli di vita. Per saperne di più, consulta le guida agli acquisti in attesa. - Hai aggiunto
Purchase.PendingPurchaseUpdate
ePurchase.getPendingPurchaseUpdate()
per recuperare la ricarica in attesa, l'upgrade o il downgrade a un abbonamento.
- Utilizza
Rimosso
BillingClient.Builder.enableAlternativeBilling()
,AlternativeBillingListener
, eAlternativeChoiceDetails
.- Gli sviluppatori dovrebbero usare
BillingClient.Builder.enableUserChoiceBilling()
conUserChoiceBillingListener
eUserChoiceDetails
nel callback del listener.
- Gli sviluppatori dovrebbero usare
Rimosso
BillingFlowParams.ProrationMode
,BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceProrationMode()
, eBillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceSkusProrationMode()
.- 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 utilizzare
BillingFlowParams.SubscriptionUpdateParams.Builder#setOldPurchaseToken(java.lang.String)
.
- Gli sviluppatori dovrebbero utilizzare
BillingClient.queryPurchaseHistoryAsync()
è stato ritirato e verrà rimosso in una versione futura. Gli sviluppatori dovrebbero utilizza invece le seguenti alternative:- Acquisti confermati e in attesa: utilizza
BillingClient.queryPurchasesAsync()
per recuperare gli acquisti attivi. - Acquisti consumati: gli sviluppatori devono monitorare gli acquisti consumati su i propri server.
- Acquisti annullati: utilizza acquisti-annullati l'API per gli sviluppatori.
- Per ulteriori dettagli, vedi Query sulla cronologia acquisti
- Acquisti confermati e in attesa: utilizza
BillingFlowParams.ProductDetailsParams.setOfferToken()
ora genera un'eccezione quando gli sviluppatori specificano un valoreofferToken
vuoto.Aggiornamento di
minSdkVersion
a 21 etargetSdkVersion
a 34.
Versione 6.2.1 di Libreria Fatturazione Google Play (16/04/2024)
La versione 6.2.1 di Libreria Fatturazione Google Play e le estensioni Kotlin sono ora disponibili disponibili.
Riepilogo delle modifiche
- È stato corretto un bug in
BillingClient.showAlternativeBillingOnlyInformationDialog()
per cui in alcuni casiAlternativeBillingOnlyInformationDialogListener
potrebbe non essere chiamato al completamento della finestra di dialogo.
Versione 6.2.0 di Libreria Fatturazione Google Play (6/03/2024)
La versione 6.2.0 di Libreria Fatturazione Google Play e le estensioni Kotlin sono ora disponibili disponibili.
Riepilogo delle modifiche
- Sono state aggiunte API per supportare le offerte esterne
- .
- Hai aggiunto
BillingClient.Builder.enableExternalOffer()
per abilitare la possibilità di fornire offerte esterne. - Hai aggiunto
BillingClient.isExternalOfferAvailableAsync()
per verificare la disponibilità della funzionalità per le offerte esterne. - Hai aggiunto
BillingClient.showExternalOfferInformationDialog()
per mostrare una finestra di dialogo informativa agli utenti prima di indirizzarli al di fuori dell'app. - È stato aggiunto
BillingClient.createExternalOfferReportingDetailsAsync()
per creare un payload necessario per segnalare le transazioni effettuate tramite offerte esterne.
- Hai aggiunto
Versione 6.1.0 di Libreria Fatturazione Google Play (14/11/2023)
La versione 6.1.0 di Libreria Fatturazione Google Play e le estensioni Kotlin sono ora disponibili disponibili.
Riepilogo delle modifiche
- Sono state aggiunte API per supportare la sola fatturazione alternativa (ovvero senza scelta dell'utente)
- .
- Hai aggiunto
BillingClient.Builder.enableAlternativeBillingOnly()
per abilitare da un punto di vista funzionale la possibilità di offrire solo la fatturazione alternativa. - Hai aggiunto
BillingClient.isAlternativeBillingOnlyAvailableAsync()
per verificare la disponibilità dell'offerta solo di fatturazione alternativa. - Hai aggiunto
BillingClient.showAlternativeBillingOnlyInformationDialog()
per mostrare una finestra di dialogo informativa per informare gli utenti quando è disponibile solo la fatturazione alternativa in uso. - È stato aggiunto
BillingClient.createAlternativeBillingOnlyReportingDetailsAsync()
per creare un payload necessario per segnalare le transazioni effettuate solo tramite la fatturazione alternativa.
- Hai aggiunto
- Aggiornamento delle API di fatturazione scelta dall'utente
- Hai aggiunto
UserChoiceBillingListener
per sostituire AlternativeBillingListener che è stato contrassegnato come deprecato. - Hai aggiunto
UserChoiceDetails
per sostituireAlternativeChoiceDetails
che è stato contrassegnato come deprecato. - Hai aggiunto
BillingClient.Builder.enableUserChoiceBilling()
per sostituireBillingClient.Builder.enableAlternativeBilling()
che è stato contrassegnato come deprecato.
- Hai aggiunto
- È stato aggiunto
BillingClient.getBillingConfigAsync()
per recuperare il paese in Google Play.
Versione 6.0.1 di Libreria Fatturazione Google Play (22/06/2023)
La versione 6.0.1 di Libreria Fatturazione Google Play e le estensioni Kotlin sono ora disponibili disponibili.
Riepilogo delle modifiche
Aggiorna la Libreria Fatturazione Play in modo che sia compatibile con Android 14.
Versione 6.0 di Libreria Fatturazione Google Play (10/05/2023)
La versione 6.0.0 di Libreria Fatturazione Google Play e le estensioni Kotlin sono ora disponibili disponibili.
Riepilogo delle modifiche
Nuovo aggiunto
ReplacementMode
enum da sostituireProrationMode
.Tieni presente che
ProrationMode
è ancora disponibile per la compatibilità con le versioni precedenti motivi.Rimosso ID ordine per
PENDING
acquisti.In precedenza, l'ID ordine veniva sempre creato anche se l'acquisto in attesa. A partire dalla versione 6.0.0, non verrà creato un ID ordine per acquisti in attesa; per questi acquisti verrà compilato l'ID ordine dopo che l'acquisto viene spostato nella
PURCHASED
stato.Metodi
queryPurchases
elaunchPriceConfirmationFlow
rimossi.I metodi
queryPurchases
elaunchPriceConfirmationFlow
con precedentemente contrassegnate come deprecate, sono state rimosse dalla Fatturazione Play Libreria 6.0.0. Gli sviluppatori dovrebbero usarequeryPurchasesAsync
anzichéqueryPurchases
. PerlaunchPriceConfirmationFlow
alternative, consulta Modifiche ai prezzi.Nuovo codice di risposta di errore di rete aggiunto.
Un nuovo codice di risposta di errore di rete,
NETWORK_ERROR
, è stato aggiunto a partire dalla versione PBL 6.0.0. Questo codice viene restituito a causa di un problema di connessione di rete. Queste connessioni di rete errori precedentemente segnalati comeSERVICE_UNAVAILABLE
.Ultimo aggiornamento
SERVICE_UNAVAILABLE
eSERVICE_TIMEOUT
.A partire dalla versione 6.0.0 di PBL, gli errori dovuti al timeout nell'elaborazione saranno restituito come
SERVICE_UNAVAILABLE
anziché comeSERVICE_TIMEOUT
corrente.Il comportamento non cambia nelle versioni precedenti di PBL.
Elemento rimosso
SERVICE_TIMEOUT
A partire dalla versione 6.0.0 di PBL,
SERVICE_TIMEOUT
non verrà più restituito. Le versioni precedenti di PBL continueranno a restituire questo codice.Logging aggiuntivo aggiunto.
La versione 6 di Libreria Fatturazione Play include funzionalità di logging aggiuntive, che forniscono Insight sull'utilizzo dell'API (ad esempio operazione riuscita e non riuscita) e sulla connessione al servizio che le applicazioni presentino problemi di prestazioni. Queste informazioni verranno usate per migliorare le prestazioni di Google Play Libreria Fatturazione e fornire un'assistenza migliore per gli errori.
Versione 5.2.1 di Libreria Fatturazione Google Play (22/06/2023)
La versione 5.2.1 di Libreria Fatturazione Google Play e le estensioni Kotlin sono ora disponibili disponibili.
Riepilogo delle modifiche
Aggiorna la Libreria Fatturazione Play in modo che sia compatibile con Android 14.
Versione 5.2 di Libreria Fatturazione Google Play (6/04/2023)
La versione 5.2.0 di Libreria Fatturazione Google Play e le estensioni Kotlin sono ora disponibili disponibili.
Riepilogo delle modifiche
- Sono stati aggiunti corsi per supportare flussi di fatturazione alternativi su dispositivo mobile/tablet per utenti in Corea del Sud:
- Aggiunta
BillingFlowParams.SubscriptionUpdateParams.Builder.setOriginalExternalTransactionId()
per specificare l'ID transazione esterna dell'abbonamento di origine. - Hai aggiunto
BillingClient.Builder.enableAlternativeBilling()
per consentire agli utenti in Corea del Sud di selezionare un'opzione di fatturazione alternativa.
Versione 5.1 di Libreria Fatturazione Google Play (31/10/2022)
La versione 5.1.0 di Libreria Fatturazione Google Play e le estensioni Kotlin sono ora disponibili disponibili.
Questa versione contiene le seguenti modifiche.
Riepilogo delle modifiche
- È stato aggiunto il metodo
ProductDetails.SubscriptionOfferDetails.getOfferId()
per recuperare l'ID offerta. - Aggiunto il metodo
ProductDetails.SubscriptionOfferDetails.getBasePlanId()
per recuperare l'ID piano base. targetSdkVersion
aggiornato a 31.
Versione 5.0 di Libreria Fatturazione Google Play (11/05/2022)
La versione 5.0.0 di Libreria Fatturazione Google Play e le estensioni Kotlin sono ora disponibili disponibili.
Questa versione contiene le seguenti modifiche.
Riepilogo delle modifiche
- 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 guida alla migrazione.
- Aggiunta
BillingClient.queryProductDetailsAsync()
per sostituireBillingClient.querySkuDetailsAsync()
. - Aggiunto il metodo
setIsOfferPersonalized()
per i prezzi personalizzati UE relativi alle informative. Per scoprire di più su come utilizzare questo metodo, consulta Indica un prezzo personalizzato. - È stato rimosso il file
queryPurchases()
, che in precedenza era deprecato e sostituito da queryPurchasesAsync introdotta nella Libreria Fatturazione Google Play 4.0.0. launchPriceChangeFlow
è stato deprecato e verrà rimosso in futuro . Per scoprire di più sulle alternative, consulta Lancia un flusso di conferma della variazione di prezzo.- Elemento rimosso
setVrPurchaseFlow()
, utilizzata in precedenza per creare un'istanza di un flusso di acquisto. Nelle versioni precedenti, questo metodo reindirizzava l'utente alla completare l'acquisto sul proprio dispositivo Android. Dopo la rimozione con questo metodo, gli utenti completeranno l'acquisto tramite flusso di acquisto standard.
Versione 4.1 di Libreria Fatturazione Google Play (23/02/2022)
La versione 4.1.0 di Libreria Fatturazione Google Play e le estensioni Kotlin sono ora disponibili disponibili.
Questa versione contiene le seguenti modifiche.
Riepilogo delle modifiche
- Hai aggiunto
BillingClient.showInAppMessages()
per aiutarti a gestire i rifiuti dei pagamenti degli abbonamenti. Per saperne di più su come per usare la messaggistica in-app per gestire i rifiuti dei pagamenti degli abbonamenti, vedi Gestione dei rifiuti di pagamento.
Versione 4.0 di Libreria Fatturazione Google Play (18/05/2021)
La versione 4.0.0 di Libreria Fatturazione Google Play e le estensioni Kotlin sono ora disponibili disponibili.
Riepilogo delle modifiche
È stato aggiunto
BillingClient.queryPurchasesAsync()
per sostituireBillingClient.queryPurchases()
, che verrà rimosso in una release futura.È stata aggiunta la 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 sono stati aggiornati per indicare il thread su cui è possibile richiamare un metodo e i risultati dei thread pubblicati.
BillingFlowParams.Builder.setSubscriptionUpdateParams()
è stato aggiunto come nuovo modo per avviare gli aggiornamenti delle iscrizioni. Questa funzionalità sostituisceBillingFlowParams#getReplaceSkusProrationMode
,BillingFlowParams#getOldSkuPurchaseToken
,BillingFlowParams#getOldSku
,BillingFlowParams.Builder#setReplaceSkusProrationMode
eBillingFlowParams.Builder#setOldSku
che sono state rimosse.Purchase.getQuantity()
ePurchaseHistoryRecord.getQuantity()
aggiunti.Purchase#getSkus()
ePurchaseHistoryRecord#getSkus()
aggiunti. Questi sostituisconoPurchase#getSku
ePurchaseHistoryRecord#getSku
che sono stati rimossi.BillingFlowParams#getSku
,BillingFlowParams#getSkuDetails
eBillingFlowParams#getSkuType
rimossi.
Release Libreria Fatturazione Google Play 3.0.3 (12/03/2021)
Versione 3.0.3 di Libreria Fatturazione Google Play, estensione Kotlin e Unity sono ora disponibili.
Correzioni di bug relativi a Java e Kotlin
- Correggi la perdita di memoria quando
endConnection()
. - Risolvi il problema di utilizzo della Libreria Fatturazione Google Play da parte di app che usano
la modalità di avvio con una singola attività. R
onPurchasesUpdated()
Il callback verrà attivato quando un'app viene ripresa da Avvio app di Android e la finestra di dialogo relativa alla fatturazione era visibile prima della sospensione.
Correzioni di bug relative a Unity
- Esegui l'aggiornamento a Java versione 3.0.3 per correggere la perdita di memoria e risolvere i problemi che impediscono acquisti quando un'app viene ripristinata da Avvio app di Android e dalla era visibile prima della sospensione.
Versione Libreria Fatturazione Google Play 3.0.2 (24/11/2020)
La versione 3.0.2 della Libreria Fatturazione Google Play e l'estensione Kotlin sono ora disponibili.
Correzioni di bug
- È stato corretto un bug nell'estensione Kotlin per cui la coroutine non funziona e restituisce l'errore "Già ripreso".
- Sono stati corretti i riferimenti non risolti quando l'estensione Kotlin viene utilizzata con la libreria kotlinx.coroutines versione 1.4 e successive.
Versione Libreria Fatturazione Google Play 3.0.1 (30/09/2020)
La versione 3.0.1 della Libreria Fatturazione Google Play e l'estensione Kotlin sono ora disponibili.
Correzioni di bug
- È stato corretto 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.
Versione 3.0 di Libreria Fatturazione Google Play (8/06/2020)
Versione 3.0.0 di Libreria Fatturazione Google Play, estensione Kotlin, e il plug-in Unity.
Riepilogo delle modifiche
- È stato rimosso il supporto degli SKU con premio.
- Sono stati rimossi i parametri
ChildDirected
eUnderAgeOfConsent
. - Sono stati rimossi i metodi di payload degli sviluppatori deprecati.
- Metodi deprecati
BillingFlowParams.setAccountId()
rimossi eBillingFlowParams.setDeveloperId()
. - Metodi deprecati
BillingFlowParams.setOldSkus(String oldSku)
rimossi eBillingFlowParams.addOldSku(String oldSku)
. - Sono state aggiunte annotazioni con nullità.
Correzioni di bug
SkuDetails.getIntroductoryPriceCycles()
ora restituisceint
anzichéString
.- È stato corretto un bug per cui il flusso di fatturazione verrebbe trattato come se avesse parametri aggiuntivi anche se non sono stati impostati parametri aggiuntivi.
Versione 2.2.1 di Libreria Fatturazione Google Play (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 Java Play che Dipende dall'estensione Kotlin.
Release Libreria Fatturazione Google Play 2.2.0 e supporto Unity (23/03/2020)
La versione 2.2.0 di Fatturazione Google Play offre funzionalità che consentono di gli sviluppatori si assicurano che gli acquisti vengano attribuiti all'utente corretto. Queste modifiche per sostituire la necessità di creare soluzioni personalizzate basate sul payload degli sviluppatori. Come Nell'ambito di questo aggiornamento, la funzionalità payload per sviluppatori è stata deprecata e verrà rimossa in una release futura. Per ulteriori informazioni, inclusi le alternative consigliate, consulta Payload sviluppatore.
Libreria Fatturazione Google Play 2 per Unity
Oltre alle attuali versioni Java e Kotlin della Fatturazione Google Play Nella libreria 2, abbiamo rilasciato una versione della libreria da utilizzare con Unity. Gioco gli sviluppatori che utilizzano l'API Unity in-app purchase possono ora eseguire l'upgrade per sfruttare tutte le funzionalità di Libreria Fatturazione Google Play 2 e rendere upgrade successivi alle versioni future della Libreria Fatturazione Google Play è più facile.
Per saperne di più, vedi Utilizzare Fatturazione Google Play con Unity.
Riepilogo delle modifiche
- Libreria Fatturazione Google Play Java
- Nella
AcknowledgePurchaseParams
, ritiratosetDeveloperPayload()
egetDeveloperPayload()
di machine learning. - Nella
ConsumeParams
, ritiratosetDeveloperPayload()
egetDeveloperPayload()
di machine learning. - Nella
BillingFlowParams
, rinominatosetAccountId()
asetObfuscatedAccountId()
, e limite di lunghezza documentato di 64 caratteri. disabilitando le informazioni che consentono l'identificazione personale (PII) in questo campo.setAccountId()
è stato contrassegnato come deprecato e verrà rimosso in la versione futura della libreria. - Aggiunto su
BillingFlowParams
setObfuscatedProfileId()
che funziona in modo similesetObfuscatedAccountId()
. Per ulteriori informazioni, vedi Aggiornamenti e alternative del payload degli sviluppatori. - In
Purchase
, è stato aggiunto il parametrogetAccountIdentifiers()
per restituire gli identificatori dell'account offuscati impostatiBillingFlowParams
. - In
BillingClient
,loadRewardedSku()
è stato contrassegnato come deprecato nell'ambito del ritiro degli SKU con premio. Per ulteriori informazioni sul ritiro, consulta la Centro assistenza Play Console.
- Nella
Release di Libreria Fatturazione Google Play 2.1.0 ed estensione Kotlin 2.1.0 (10/12/2019)
Versione 2.1.0 della Libreria Fatturazione Google Play e nuova estensione Kotlin sono ora disponibili. L'estensione Kotlin della Libreria Fatturazione Play fornisce opzioni idiomatiche alternative alle API per il consumo di Kotlin, con migliori funzionalità di sicurezza null e coroutine. Per esempi di codice, vedi Utilizzare la Libreria Fatturazione Google Play.
Questa versione contiene le seguenti modifiche.
Riepilogo delle modifiche
- In
BillingFlowParams
, deprecatosetOldSku(String oldSku)
e sostituito consetOldSku(String oldSku, String purchaseToken)
, per chiarire quando più account sul dispositivo possiedono lo stesso SKU.
Versione Libreria Fatturazione Google Play 2.0.3 (5/08/2019)
È ora disponibile la versione 2.0.3 della Libreria Fatturazione Google Play.
Correzioni di bug
- È stato corretto un bug per cui a volte
querySkuDetailsAsync()
avrebbe avuto esito negativo con codiceDEVELOPER_ERROR
anziché restituire un risultato riuscito.
Versione Libreria Fatturazione Google Play 2.0.2 (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 libreria funzionalità.
Versione 2.0.1 di Libreria Fatturazione Google Play (6/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.
Versione 2.0 di 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 dell'app (in-app) oppure
al di fuori della tua app (out-of-app). Per consentire a Google Play di garantire
coerente indipendentemente da dove l'utente acquista
prodotto, devi confermare tutti gli acquisti ricevuti tramite Google Play
Libreria Fatturazione non appena possibile dopo aver concesso il diritto all'utente. Se
non confermi un acquisto entro tre giorni, l'utente automaticamente
riceve un rimborso e Google Play revoca l'acquisto. Per
transazioni in sospeso (novità nella versione 2.0), il periodo di tre giorni
inizia quando l'acquisto viene spostato nello stato PURCHASED
e non è applicabile
mentre l'acquisto è nello stato PENDING
.
Per gli abbonamenti, devi confermare ogni acquisto che comprende un nuovo acquisto di accesso. Ciò significa che tutti gli acquisti iniziali, le modifiche ai piani e le nuove registrazioni devono per essere accettati, ma non per i rinnovi successivi. A per stabilire se un acquisto deve essere confermato, puoi controllare nell'acquisto.
L'oggetto Purchase
ora include un oggetto
isAcknowledged()
che indica se un acquisto è stato confermato. Inoltre,
L'API Google Play Developer include valori booleani di conferma per
Purchases.products
e 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, usa
consumeAsync()
, che si trova nell'API client. - Per i prodotti che non vengono consumati, utilizza
acknowledgePurchase()
, che si trova in l'API del client. - Un nuovo metodo
acknowledge()
è disponibile anche nell'API server.
BillingFlowParams.setSku() è stato rimosso
Il metodo BillingFlowParams#setSku()
deprecato in precedenza è stato rimosso
in questa release. Prima di eseguire il rendering dei prodotti in un flusso di acquisto, devi chiamare
BillingClient.querySkuDetailsAsync()
,
passando il risultato
SkuDetails
oggetto
BillingFlowParams.Builder.setSkuDetails()
Per esempi di codice, vedi Utilizzare la Libreria Fatturazione Google Play.
Payload dello sviluppatore supportato
La versione 2.0 della Libreria Fatturazione Google Play aggiunge il supporto per sviluppatori payload: stringhe arbitrarie che possono essere associate agli acquisti. Puoi collegare un parametro payload dello sviluppatore a un acquisto, ma solo quando quest'ultimo viene confermato o consumato. Questo è diverso dal payload degli sviluppatori in AIDL, dove potrebbe essere specificato il payload all'avvio del flusso di acquisto. Poiché gli acquisti può essere avviata dall'esterno dell'app, questa modifica ti garantisce di avere sempre l'opportunità di aggiungere un payload agli acquisti.
Per accedere al payload nella nuova libreria, gli oggetti Purchase
ora includono un
getDeveloperPayload()
.
Offerte costanti
Quando offri uno SKU scontato, ora Google Play restituisce il prezzo originale di lo SKU in modo da poter mostrare agli utenti che ricevono uno sconto.
SkuDetails
contiene due
nuovi metodi per recuperare il prezzo originale dello SKU:
getOriginalPriceAmountMicros()
- restituisce il prezzo originale senza formattazione dello SKU prima dello sconto.getOriginalPrice()
- restituisce il prezzo originale con formattazione di valuta aggiuntiva.
Transazioni in sospeso
Con la versione 2.0 della Libreria Fatturazione Google Play, devi supportare acquisti per i quali sono necessarie ulteriori azioni prima di concedere il diritto. Per Ad esempio, un utente potrebbe scegliere di acquistare il tuo prodotto in-app in un negozio fisico in contanti. Ciò significa che la transazione viene completata al di fuori della tua app. Nella in questo caso, 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 di acquisto è PURCHASED
o PENDING
. Tieni presente che
devi concedere il diritto solo quando lo stato è PURCHASED
. Dovresti
verifica la presenza di aggiornamenti dello stato di Purchase
nel seguente modo:
- Quando avvii l'app, chiama
BillingClient.queryPurchases()
per recuperare l'elenco dei prodotti non consumati associati all'utente. - Chiama
Purchase.getPurchaseState()
su ogni oggettoPurchase
restituito. - Implementare la
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
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
associate a forme di pagamento ritardate, come i contanti.
Quando confermi gli acquisti in sospeso, assicurati di farlo 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 API alle supportare nuove funzionalità e chiarire le funzionalità esistenti.
consumareAsync
consumeAsync()
ora richiede
Oggetto ConsumeParams
anziché purchaseToken
. ConsumeParams
contiene purchaseToken
come
nonché 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
PurchaseHistoryRecord
anziché un oggetto Purchase
. L'oggetto PurchaseHistoryRecord
è
uguale a un oggetto Purchase
, tranne per il fatto che riflette solo i valori restituiti da
queryPurchaseHistoryAsync()
e non contiene autoRenewing
,
orderId
e packageName
. Tieni presente che non è cambiato nulla con
restituiti dati: queryPurchaseHistoryAsync()
restituisce gli stessi dati di
in precedenza.
Valori restituiti per BillingResult
Le API che in precedenza restituivano un valore intero BillingResponse
ora restituiscono un
BillingResult
. BillingResult
contiene il numero intero BillingResponse
e un
stringa di debug che puoi utilizzare per diagnosticare gli errori. La stringa di debug utilizza la stringa en-US
e non devono essere mostrati agli utenti finali.
Correzioni di bug
SkuDetails.getIntroductoryPriceAmountMicros()
ora restituiscelong
anzichéString
.
Versione 1.2.2 di Libreria Fatturazione Google Play (7/03/2019)
La versione 1.2.2 della Libreria Fatturazione Google Play è ora disponibile. Questa versione contiene le seguenti modifiche.
Correzioni di bug
- È stato risolto un problema di thread introdotto nella v1.2.1. Le chiamate in background non vengono più bloccate nel thread principale.
Altre modifiche
- Anche se è ancora consigliato utilizzare il thread principale, ora puoi creare un'istanza la Libreria Fatturazione Google Play da un thread in background.
- La creazione dell'istanza è stata migrata completamente nel thread in background per ridurre probabilità di causare errori ANR.
Versione 1.2.1 di Libreria Fatturazione Play (4/03/2019)
La versione 1.2.1 della Libreria Fatturazione Google Play è ora disponibile. Questa versione contiene le seguenti modifiche.
Modifiche principali
- È stato aggiunto il supporto per i prodotti con premio. Per ulteriori informazioni sulle opzioni di monetizzazione, consulta: Aggiungi funzionalità specifiche dei prodotti premio.
Altre modifiche
- Sono stati aggiunti costruttori pubblici per
PurchasesResult
eSkuDetailsResult
da creare i test. SkuDetails
oggetti possono utilizzare il nuovo metodogetOriginalJson()
.- Tutte le chiamate di servizio AIDL ora vengono gestite dai thread in background.
Correzioni di bug
- I listener di callback nulli non vengono più passati alle API pubbliche.
Versione 1.2 di Libreria Fatturazione Google Play (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 della 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 della nuova modalità di ripartizione,
DEFERRED
, durante l'upgrade o eseguire il downgrade dell'abbonamento di un utente. - Nella classe
BillingFlowParams
, ha 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 di esaminare e accettare il nuovo prezzo quando accedono alla tua app.
Per utilizzare questa API, crea un oggetto PriceChangeFlowParams
mediante il metodo
skuDetails
del prodotto in abbonamento, quindi chiama
launchPriceChangeConfirmationFlow()
. Implementa il
PriceChangeConfirmationListener
per gestire il risultato quando il prezzo cambia
il flusso di conferma, 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 i nuovi prezzi
informazioni, chiedendo agli utenti di accettare il nuovo prezzo. Questo flusso restituisce un
codice di risposta del tipo
BillingClient.BillingResponse
Nuova modalità di ripartizione
Quando esegui l'upgrade o il downgrade dell'abbonamento di un utente, puoi utilizzare una nuova proporzione
modalità, DEFERRED
. Questa modalità aggiorna l'abbonamento dell'utente alla successiva
viene rinnovato. Per scoprire di più su come impostare questa modalità di ripartizione, consulta Impostare la ripartizione proporzionale
.
Nuovo metodo per impostare i dettagli SKU
Nella classe BillingFlowParams
, il metodo setSku()
è stato deprecato.
Questa modifica ha lo scopo di ottimizzare il flusso di Fatturazione Google Play.
Quando crei una nuova istanza di BillingFlowParams
nella fatturazione in-app
ti consigliamo di lavorare con l'oggetto JSON direttamente 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 di seguito
snippet di codice. L'oggetto passato nell'oggetto setSkuDetails()
proviene dall'oggetto
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(); }
Versione 1.1 della Libreria Fatturazione Play (7/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 ripartizione 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.
Cambiamenti del comportamento
La versione 1.1 della Libreria Fatturazione Google Play contiene il seguente comportamento modifiche.
Gli sviluppatori possono impostare replaceSkusProrationMode
nel corso BillingFlowParams
Un ProrationMode
fornisce ulteriori dettagli sul tipo di ripartizione in caso di upgrade o downgrade di un
abbonamento dell'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:
IMMEDIATE_WITH_TIME_PRORATION |
La sostituzione avrà effetto immediato e la nuova data di scadenza verrà ripartita proporzionalmente e accreditato o addebitato all'utente. Questo è il comportamento predefinito attuale. |
IMMEDIATE_AND_CHARGE_PRORATED_PRICE |
La sostituzione ha effetto immediato e il ciclo di fatturazione rimane invariato. Il prezzo per
l'importo restante ti verrà addebitato.
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 successiva ricorrenza nel tempo. Il ciclo di fatturazione rimane invariato. |
replaceSkusProration
non è più supportato nel corso BillingFlowParams
In precedenza, gli sviluppatori potevano impostare un flag booleano per addebitare un importo proporzionale per un abbonamento
richiesta di upgrade. Dato che supportiamo ProrationMode
, che contiene informazioni più dettagliate
l'istruzione di ripartizione, questo flag booleano non è più supportato.
launchBillingFlow()
ora attiva un callback per le risposte non riuscite
La Libreria Fatturazione attiverà sempre PurhcasesUpdatedListener
richiamare e restituire un BillingResponse
in modo asincrono. Il valore restituito sincrono di BillingResponse
viene mantenuta.
Correzioni di bug
- Si chiude correttamente nelle prime fasi dei metodi asincroni quando il servizio è disconnesso.
Builder
gli oggetti param non mutano più gli oggetti creati.- Problema 68087141:
launchBillingFlow()
ora attivano il callback per le risposte non riuscite.
Release Libreria Fatturazione Google Play 1.0 (19/09/2017, annuncio)
È ora disponibile la versione 1.0 della Libreria Fatturazione Google Play. Questa versione contiene le seguenti modifiche.
Modifiche importanti
- Autorizzazione di fatturazione incorporata nel manifest della libreria. Non è necessario aggiungere
com.android.vending.BILLING
più autorizzazione all'interno del file manifest Android. - Nuovo builder aggiunto a
BillingClient.Builder
. - È stato introdotto il pattern del builder per
SkuDetailsParams
da utilizzare sui metodi per eseguire query sugli SKU. - Diversi metodi dell'API sono stati aggiornati per coerenza (gli stessi nomi e ordine degli argomenti di ritorno).
Cambiamenti del comportamento
La versione 1.0 della Libreria Fatturazione Google Play contiene il seguente comportamento modifiche.
Classe BillingClient.Builder
BillingClient.Builder
viene inizializzato mediante il pattern newBuilder:
Kotlin
billingClient = BillingClient.newBuilder(context).setListener(this).build()
Java
billingClient = BillingClient.newBuilder(context).setListener(this).build();
Il metodo LaunchBillingFlow viene ora chiamato utilizzando una classe BillingFlowParams
Per avviare il flusso di fatturazione per un acquisto o un abbonamento, il
launchBillingFlow()
riceve un messaggio di errore
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
Argomenti per queryPurchaseHistoryAsync()
e querySkuDetailsAsync()
sono stati aggregati in un pattern del 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 un codice risultato e un elenco di
SkuDetails
anziché la precedente classe wrapper per comodità e coerenza nell'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
dal ConsumeResponseListener
è cambiata per essere coerente nell'API:
Kotlin
fun onConsumeResponse(@BillingResponse responseCode: Int, outToken: String)
Java
public void onConsumeResponse(@BillingResponse int responseCode, String outToken)
Oggetto PurchaseResult con wrapping
PurchaseResult
è stato eseguito l'unwrapping per garantire la coerenza in tutta l'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 dei dispositivi
Release di Anteprima 1 per gli sviluppatori (12/06/2017, annuncio)
Lancio dell'anteprima per gli sviluppatori al fine di semplificare il processo di sviluppo relativo alla fatturazione. consentendo agli sviluppatori di concentrare i propri sforzi sull'implementazione di logiche specifiche per le app per Android, dell'architettura delle applicazioni e della navigazione.
La libreria include numerosi corsi e funzionalità utili che puoi utilizzare durante l'integrazione App per Android con l'API Fatturazione Google Play. La libreria fornisce anche un livello di astrazione il servizio Android Interface Definition Language (AIDL), che semplifica la definizione da parte degli sviluppatori l'interfaccia tra l'app e l'API Fatturazione Google Play.