Note di rilascio della Libreria Fatturazione Google Play

Questo documento contiene le note di rilascio della Libreria Fatturazione Google Play.

Uscita della versione 7.1.1 della Libreria Fatturazione Google Play (3/10/2024)

Ora è disponibile la versione 7.1.1 della Libreria Fatturazione Google Play e delle estensioni Kotlin.

Correzioni di bug

Rilascio della versione 7.1.0 della libreria Fatturazione Google Play (19/09/2024)

Ora è disponibile la versione 7.1.0 della Libreria Fatturazione Google Play e delle estensioni Kotlin.

Riepilogo delle modifiche

  • Sicurezza del thread migliorata in relazione allo stato e alla gestione della connessione.
  • Sono state introdotte modifiche parziali per il test dei codici di risposta BillingResult, che sono stati rilasciati completamente nella versione 7.1.1 della Libreria Fatturazione Play. Per testare la tua integrazione utilizzando questa funzionalità, devi eseguire l'upgrade alla Libreria Fatturazione Play 7.1.1. Esiste un bug che interessa solo le applicazioni con test di override della fatturazione abilitati e non influisce sull'utilizzo regolare. Per ulteriori informazioni, consulta Testare i codici di risposta BillingResult.

Rilascio della Libreria Fatturazione Google Play 7.0.0 (14/05/2024)

Ora è disponibile la versione 7.0.0 della Libreria Fatturazione Google Play e delle estensioni Kotlin.

Riepilogo delle modifiche

Uscita della versione 6.2.1 della libreria Fatturazione Google Play (16/04/2024)

Ora è disponibile la versione 6.2.1 della Libreria Fatturazione Google Play e delle estensioni Kotlin.

Riepilogo delle modifiche

Uscita della versione 6.2.0 della Libreria Fatturazione Google Play (6/03/2024)

Ora è disponibile la versione 6.2.0 della Libreria Fatturazione Google Play e delle estensioni Kotlin.

Riepilogo delle modifiche

Uscita della versione 6.1.0 della libreria Fatturazione Google Play (14/11/2023)

Ora è disponibile la versione 6.1.0 della Libreria Fatturazione Google Play e delle estensioni Kotlin.

Riepilogo delle modifiche

Rilascio della versione 6.0.1 della Libreria Fatturazione Google Play (22/06/2023)

Ora è disponibile la versione 6.0.1 della Libreria Fatturazione Google Play e delle estensioni Kotlin.

Riepilogo delle modifiche

Aggiorna Libreria Fatturazione Play in modo che sia compatibile con Android 14.

Rilascio della Libreria Fatturazione Google Play 6.0 (10/05/2023)

Ora è disponibile la versione 6.0.0 della Libreria Fatturazione Google Play e delle estensioni Kotlin.

Riepilogo delle modifiche

  • È stato aggiunto un nuovo enumerato ReplacementMode per sostituire ProrationMode.

    Tieni presente che ProrationMode è ancora disponibile per motivi di compatibilità con le versioni precedenti.

  • È stato rimosso l'ID ordine per gli acquisti di PENDING.

    In precedenza, l'ID ordine veniva sempre creato anche se l'acquisto era in attesa. A partire dalla versione 6.0.0, non verrà creato un ID ordine per gli acquisti in attesa e per questi acquisti l'ID ordine verrà inserito dopo che l'acquisto è stato spostato nello stato PURCHASED.

  • Sono stati rimossi i metodi queryPurchases e launchPriceConfirmationFlow.

    I metodi queryPurchases e launchPriceConfirmationFlow che sono stati precedentemente contrassegnati come deprecati sono stati rimossi nella Play Billing Library 6.0.0. Gli sviluppatori devono utilizzare queryPurchasesAsync invece di queryPurchases. Per le alternative a launchPriceConfirmationFlow, consulta Variazioni di prezzo.

  • È stato aggiunto un nuovo codice di risposta di errore di rete.

    È stato aggiunto un nuovo codice di risposta di errore di rete, NETWORK_ERROR, a partire dalla versione 6.0.0 della Libreria Fatturazione Play. Questo codice viene restituito quando si verifica un errore a causa di un problema di connessione di rete. Questi errori di connessione alla rete erano stati precedentemente segnalati come SERVICE_UNAVAILABLE.

  • Aggiornato SERVICE_UNAVAILABLE e SERVICE_TIMEOUT.

    A partire dalla versione 6.0.0 di PBL, gli errori dovuti a timeout nell'elaborazione verranno riportati come SERVICE_UNAVAILABLE anziché come SERVICE_TIMEOUT.

    Il comportamento non cambia nelle versioni precedenti di PBL.

  • SERVICE_TIMEOUT rimosso.

    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.

  • È stato aggiunto un ulteriore logging.

    La release 6 della Libreria Fatturazione Play include un logging aggiuntivo, che fornisce informazioni sull'utilizzo dell'API (ad esempio successo e fallimento) e sui problemi di connessione al servizio. Queste informazioni verranno utilizzate per migliorare il rendimento della libreria di fatturazione di Google Play e fornire una migliore assistenza per gli errori.

Rilascio della versione 5.2.1 della Libreria Fatturazione Google Play (22/06/2023)

Ora è disponibile la versione 5.2.1 della Libreria Fatturazione Google Play e delle estensioni Kotlin.

Riepilogo delle modifiche

Aggiorna Libreria Fatturazione Play in modo che sia compatibile con Android 14.

Rilascio della versione 5.2 della libreria Fatturazione Google Play (6/04/2023)

Ora è disponibile la versione 5.2.0 della Libreria Fatturazione Google Play e delle estensioni Kotlin.

Riepilogo delle modifiche

Rilascio della Libreria Fatturazione Google Play 5.1 (31/10/2022)

Ora è disponibile la versione 5.1.0 della Libreria Fatturazione Google Play e delle estensioni Kotlin.

Questa versione contiene le seguenti modifiche.

Riepilogo delle modifiche

Uscita della versione 5.0 della Libreria Fatturazione Google Play (11/05/2022)

Ora è disponibile la versione 5.0.0 della Libreria Fatturazione Google Play e delle estensioni Kotlin.

Questa versione contiene le seguenti modifiche.

Riepilogo delle modifiche

  • È stato introdotto un nuovo modello per gli abbonamenti, incluse nuove entità che consentono di creare più offerte per un singolo prodotto in abbonamento. Per ulteriori informazioni, consulta la guida alla migrazione.
  • È stato aggiunto BillingClient.queryProductDetailsAsync() per sostituire BillingClient.querySkuDetailsAsync().
  • È stato aggiunto il metodo setIsOfferPersonalized() per i requisiti di divulgazione dei prezzi personalizzati dell'UE. Per scoprire di più su come utilizzare questo metodo, consulta Indicare un prezzo personalizzato.
  • È stato rimosso queryPurchases(), che in precedenza era stato deprecato e sostituito da queryPurchasesAsync introdotto nella versione 4.0.0 della Libreria Fatturazione Google Play.
  • launchPriceChangeFlow è deprecato e verrà rimosso in una futura release. Per scoprire di più sulle alternative, consulta Avvia un flusso di conferma della modifica del prezzo.
  • È stato rimosso setVrPurchaseFlow(), che in precedenza veniva utilizzato per l'inizializzazione di un flusso di acquisto. Nelle versioni precedenti, questo metodo reindirizzava l'utente a completare l'acquisto sul suo dispositivo Android. Una volta rimosso questo metodo, gli utenti completeranno l'acquisto tramite il flusso di acquisto standard.

Uscita della versione 4.1 della Libreria Fatturazione Google Play (23/02/2022)

Ora è disponibile la versione 4.1.0 della Libreria Fatturazione Google Play e delle estensioni Kotlin.

Questa versione contiene le seguenti modifiche.

Riepilogo delle modifiche

Rilascio della versione 4.0 della libreria Fatturazione Google Play (18/05/2021)

Ora è disponibile la versione 4.0.0 della Libreria Fatturazione Google Play e delle estensioni Kotlin.

Riepilogo delle modifiche

Rilascio della Libreria Fatturazione Google Play 3.0.3 (12/03/2021)

Ora è disponibile la versione 3.0.3 della Libreria Fatturazione Google Play, dell'estensione Kotlin e del plug-in Unity.

Correzioni di bug di Java e Kotlin

  • Correggere la perdita di memoria quando viene chiamato endConnection().
  • Risolvere il problema quando la Libreria Fatturazione Google Play viene utilizzata dalle app che utilizzano la modalità di lancio di un'unica attività. Un callback onPurchasesUpdated() viene attivato quando un'app viene ripresa dal programma di avvio Android e la finestra di dialogo di fatturazione era visibile prima della sospensione.

Correzioni di bug di Unity

  • Esegui l'aggiornamento alla versione Java 3.0.3 per correggere la perdita di memoria e risolvere il problema che impedisce gli acquisti quando un'app viene ripresa dal programma di avvio di Android e la finestra di dialogo di fatturazione era visibile prima della sospensione.

Uscita della versione 3.0.2 della libreria Fatturazione Google Play (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 andava a buon fine con l'errore "Already resumed" (Riprendi già eseguita).
  • Sono stati corretti i riferimenti non risolti quando l'estensione Kotlin viene utilizzata con la versione 1.4 o successive della libreria kotlinx.coroutines.

Rilascio della versione 3.0.1 della Libreria Fatturazione Google Play (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.

Rilascio della Libreria Fatturazione Google Play 3.0 (8 giugno 2020)

La versione 3.0.0 della Libreria Fatturazione Google Play, dell'estensione Kotlin e del plug-in Unity è ora disponibile.

Riepilogo delle modifiche

  • È stato rimosso il supporto degli SKU con premio.
  • Sono stati rimossi i parametri ChildDirected e UnderAgeOfConsent.
  • Sono stati rimossi i metodi di payload per gli sviluppatori deprecati.
  • Sono stati rimossi i metodi deprecati BillingFlowParams.setAccountId() e BillingFlowParams.setDeveloperId().
  • Sono stati rimossi i metodi deprecati BillingFlowParams.setOldSkus(String oldSku) e BillingFlowParams.addOldSku(String oldSku).
  • Sono state aggiunte annotazioni sulla nullabilità.

Correzioni di bug

  • SkuDetails.getIntroductoryPriceCycles() ora restituisce int anziché String.
  • È stato corretto un bug per cui il flusso di fatturazione veniva considerato come contenente parametri aggiuntivi anche se non erano stati impostati.

Rilascio della versione 2.2.1 della 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 Java Play Billing su cui si basa l'estensione Kotlin.

Rilascio della versione 2.2.0 della Libreria Fatturazione Play 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 eliminano la necessità di creare soluzioni personalizzate in base al payload dello sviluppatore. Come parte di questo aggiornamento, la funzionalità del payload per gli sviluppatori è stata ritirata e verrà rimossa in una release futura. Per ulteriori informazioni, tra cui le alternative consigliate, consulta Payload per sviluppatori.

Libreria Fatturazione Google Play 2 per Unity

Oltre alle attuali versioni Java e Kotlin di Libreria Fatturazione Google Play 2, abbiamo rilasciato una versione della libreria da utilizzare con Unity. Gli sviluppatori di giochi che utilizzano l'API di acquisto in-app di Unity possono eseguire l'upgrade ora per usufruire di tutte le funzionalità di Libreria Fatturazione Google Play 2 e semplificare gli upgrade successivi alle versioni future della libreria.

Per scoprire di più, consulta Utilizzare Fatturazione Google Play con Unity.

Riepilogo delle modifiche

Rilascio della versione 2.1.0 di Libreria Fatturazione Google Play e della versione 2.1.0 di Kotlin Extension (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 di fatturazione di Play fornisce alternative alle API idiomatiche per l'utilizzo di Kotlin, con una maggiore sicurezza null e le coroutine. Per esempi di codice, consulta Utilizzare la Libreria Fatturazione Google Play.

Questa versione contiene le seguenti modifiche.

Riepilogo delle modifiche

  • In BillingFlowParams, è stato ritirato setOldSku(String oldSku) e sostituito con setOldSku(String oldSku, String purchaseToken) per distinguere i casi in cui più account sul dispositivo possiedono lo stesso sku.

Rilascio della versione 2.0.3 della libreria Fatturazione Google Play (05/08/2019)

La versione 2.0.3 della libreria Fatturazione Google Play è ora disponibile.

Correzioni di bug

  • È stato corretto un bug per cui a volte querySkuDetailsAsync() non andava a buon fine con il codice DEVELOPER_ERROR anziché 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.

Rilascio della versione 2.0.1 della Libreria Fatturazione Google Play (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.

Rilascio della Libreria Fatturazione Google Play 2.0 (7 maggio 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 della tua app (in-app) o al di fuori della tua app (out-of-app). Affinché Google Play possa 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), il periodo 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 qualsiasi acquisto con un nuovo token di acquisto. Ciò significa che tutti gli acquisti iniziali, le modifiche al piano e le nuove registrazioni devono essere confermati, ma non è necessario confermare i rinnovi successivi. Per determinare se un acquisto richiede l'acknowledgment, puoi controllare il campo di acknowledgment 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 visualizzare i 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 Utilizzare la Libreria Fatturazione Google Play.

Il payload dello sviluppatore è supportato

La versione 2.0 della libreria di fatturazione di Google Play aggiunge il supporto per il caricamento dello sviluppatore: stringhe arbitrarie che possono essere associate agli acquisti. Puoi collegare un parametro del payload dello sviluppatore a un acquisto, ma solo quando l'acquisto viene confermato o utilizzato. A differenza del payload sviluppatore in AIDL, dove il payload poteva essere specificato al momento del lancio del flusso di acquisto. Poiché ora gli acquisti possono essere avviati dall'esterno dell'app, questa modifica garantisce che tu abbia 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, ora Google Play restituisce il prezzo originale dello SKU in modo da poter mostrare agli utenti che stanno ricevendo uno sconto.

SkuDetails contiene due metodi nuovi per recuperare il prezzo SKU originale:

Transazioni in sospeso

Con la versione 2.0 della libreria di fatturazione di 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() nell'ambito dell'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. Per verificare gli aggiornamenti dello stato di Purchase:

  1. Quando avvii l'app, chiama BillingClient.queryPurchases() per recuperare l'elenco dei prodotti non consumati associati all'utente.
  2. Chiama Purchase.getPurchaseState() su ogni oggetto Purchase restituito.
  3. Implementa il metodo onPurchasesUpdated() per rispondere alle modifiche agli oggetti Purchase.

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 gli sviluppatori,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 con ritardo, come il pagamento in contanti.

Quando confermi gli acquisti in attesa, assicurati di farlo solo quando lo stato dell'acquisto è PURCHASED e non PENDING.

Modifiche all'API

La versione 2.0 della libreria Fatturazione Google Play contiene diverse modifiche all'API per supportare nuove funzionalità e chiarire quelle esistenti.

consumeAsync

consumeAsync() ora accetta un oggetto ConsumeParams instead of a purchaseToken. ConsumeParams contiene purchaseToken nonché un payload facoltativo per gli sviluppatori.

La versione precedente di consumeAsync() è stata rimossa in questa release.

queryPurchaseHistoryAsync

Per ridurre al minimo la confusione, queryPurchaseHistoryAsync() ora restituisce un PurchaseHistoryRecord oggetto 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 i campi autoRenewing, orderId e packageName. Tieni presente che non è cambiato nulla per i dati restituiti: 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 il numero intero BillingResponse e una stringa di debug che puoi utilizzare per diagnosticare gli errori. La stringa di debug utilizza una lingua en-US e non è destinata a essere mostrata agli utenti finali.

Correzioni di bug

Release della libreria Fatturazione Google Play 1.2.2 (7 marzo 2019)

È ora disponibile la versione 1.2.2 della Libreria Fatturazione Google Play. Questa versione contiene le seguenti modifiche.

Correzioni di bug

  • È stato risolto un problema di threading introdotto nella versione 1.2.1. Le chiamate in background non bloccano più il thread principale.

Altre modifiche

  • Sebbene l'utilizzo del thread principale sia ancora consigliato, ora puoi creare un'istanza della Libreria Fatturazione Google Play da un thread in background.
  • È stata eseguita la migrazione completa dell'inizializzazione al thread in background per ridurre la probabilità di causare ANR.

Rilascio della Libreria Fatturazione Play 1.2.1 (04/03/2019)

La versione 1.2.1 della libreria Fatturazione Google Play è ora disponibile. Questa versione contiene le seguenti modifiche.

Modifiche principali

Altre modifiche

  • Sono stati aggiunti i costruttori pubblici per PurchasesResult e SkuDetailsResult per semplificare il test.
  • Gli oggetti SkuDetails possono utilizzare un nuovo metodo, getOriginalJson().
  • Ora tutte le chiamate di servizio AIDL vengono gestite da thread in background.

Correzioni di bug

  • Gli ascoltatori di callback null non vengono più passati alle API pubbliche.

Rilascio della versione 1.2 della libreria Fatturazione Google Play (18/10/2018)

È ora disponibile la versione 1.2 della Libreria Fatturazione Google Play. Questa versione contiene le seguenti modifiche.

Riepilogo delle modifiche

  • La libreria di fatturazione di Google Play è ora concessa in licenza ai sensi del Contratto di licenza del Software Development Kit Android.
  • È stata aggiunta l'API launchPriceChangeConfirmationFlow, che chiede agli utenti di esaminare una modifica in attesa al prezzo di un abbonamento.
  • È stato aggiunto il supporto di una nuova modalità di ripartizione, DEFERRED, per l'upgrade o il downgrade dell'abbonamento di un utente.
  • Nella classe BillingFlowParams, setSku() è stato sostituito con setSkuDetails().
  • 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 esaminare e accettare il nuovo prezzo quando accedono alla tua app.

Per utilizzare questa API, crea un oggetto PriceChangeFlowParams utilizzando il valore skuDetails del prodotto in abbonamento e poi 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 nuove informazioni sui prezzi e chiede agli utenti di accettare il nuovo prezzo. Questo flusso restituisce un codice di risposta di tipo BillingClient.BillingResponse.

Nuova modalità di proporzionamento

Quando esegui l'upgrade o il downgrade dell'abbonamento di un utente, puoi utilizzare una nuova modalità di proporzionamento, DEFERRED. Questa modalità aggiorna l'abbonamento dell'utente al successivo rinnovo. Per scoprire di più su come impostare questa modalità di ripartizione, consulta Impostare la modalità di ripartizione.

Nuovo metodo per impostare i dettagli dello 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 client di fatturazione in-app, ti consigliamo di utilizzare direttamente l'oggetto JSON utilizzando setSkuDetails(), come mostrato nel seguente snippet di codice:

Nella classe BillingFlowParams Builder, il metodo setSku() è stato ritirato. Utilizza invece il metodo setSkuDetails(), come mostrato nello snippet di codice seguente. 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();
}

Rilascio 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 ripartizione in BillingFlowParams durante l'upgrade/il downgrade di un abbonamento esistente.
  • Il flag booleano replaceSkusProration in BillingFlowParams non è più supportato. Utilizza invece replaceSkusProrationMode.
  • 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 durante 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();

Al momento, Google Play supporta le seguenti modalità di ripartizione:

IMMEDIATE_WITH_TIME_PRORATION La sostituzione ha effetto immediato e il nuovo termine di scadenza verrà ripartito proporzionalmente e accreditato o addebitato all'utente. Questo è il comportamento predefinito attuale.
IMMEDIATE_AND_CHARGE_PRORATED_PRICE La sostituzione diventa effettiva immediatamente e il ciclo di fatturazione rimane invariato. Ti verrà addebitato il prezzo per il periodo rimanente.

Nota: questa opzione è disponibile solo per l'upgrade dell'abbonamento.

IMMEDIATE_WITHOUT_PRORATION La sostituzione diventa effettiva immediatamente e il nuovo prezzo verrà addebitato al successivo rinnovo. Il ciclo di fatturazione rimane invariato.

replaceSkusProration non è più supportato nel tipo di visualizzazione BillingFlowParams

In precedenza, gli sviluppatori potevano impostare un flag booleano per addebitare un importo proporzionale per una richiesta di upgrade dell'abbonamento. Poiché supportiamo ProrationMode, che contiene istruzioni di proporzionamento più dettagliate, questo flag booleano non è più supportato.

launchBillingFlow() ora attiva un callback per le risposte non andate a buon fine

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 nei metodi asincroni quando il servizio è disconnesso.
  • Gli oggetti param di Builder non modificano più gli oggetti costruiti.
  • Problema 68087141: launchBillingFlow() ora attiva il callback per le risposte non riuscite.

Rilascio della versione 1.0 della libreria Fatturazione Google Play (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 all'interno del file manifest della raccolta. Non è più necessario aggiungere l'autorizzazionecom.android.vending.BILLING all'interno del file manifest di Android.
  • Nuovo generatore aggiunto al corso BillingClient.Builder.
  • È stato introdotto il pattern di creazione per la classe SkuDetailsParams da utilizzare nei metodi per eseguire query sugli SKU.
  • Diversi metodi dell'API sono stati aggiornati per garantire la coerenza (stessa ordine e stessi nomi 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 viene ora 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() {...})

Per praticità e per garantire la coerenza della nostra API, il risultato viene ora restituito tramite il codice risultato e un elenco di oggetti SkuDetails anziché tramite la classe wrapper precedente:

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 dell'interfaccia ConsumeResponseListener è stato modificato per garantire la coerenza all'interno della nostra API:

Kotlin

fun onConsumeResponse(@BillingResponse responseCode: Int, outToken: String)

Java

public void onConsumeResponse(@BillingResponse int responseCode, String outToken)

Oggetto PurchaseResult non impacchettato

PurchaseResult è stato simballato per garantire la coerenza all'interno della nostra API:

Kotlin

fun onPurchaseHistoryResponse(@BillingResponse responseCode: Int, purchasesList: List<Purchase>)

Java

void onPurchaseHistoryResponse(@BillingResponse int responseCode, List<Purchase> purchasesList)

Correzioni di bug

Release Anteprima per gli sviluppatori 1 (12/06/2017, annuncio)

È stata lanciata l'anteprima per sviluppatori, che mira a semplificare il processo di sviluppo in termini di fatturazione, consente agli sviluppatori di concentrarsi sull'implementazione della logica specifica dell'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 Google Play Billing. La libreria fornisce anche un livello di astrazione sopra il servizio Android Interface Definition Language (AIDL), consentendo agli sviluppatori di definire più facilmente l'interfaccia tra l'app e l'API Google Play Billing.