Note di rilascio della Libreria Fatturazione Google Play

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

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

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

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

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 sostituire ProrationMode.

    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 e launchPriceConfirmationFlow rimossi.

    I metodi queryPurchases e launchPriceConfirmationFlow con precedentemente contrassegnate come deprecate, sono state rimosse dalla Fatturazione Play Libreria 6.0.0. Gli sviluppatori dovrebbero usare queryPurchasesAsync anziché queryPurchases. Per launchPriceConfirmationFlow 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 come SERVICE_UNAVAILABLE.

  • Ultimo aggiornamento SERVICE_UNAVAILABLE e SERVICE_TIMEOUT.

    A partire dalla versione 6.0.0 di PBL, gli errori dovuti al timeout nell'elaborazione saranno restituito come SERVICE_UNAVAILABLE anziché come SERVICE_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

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

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 sostituire BillingClient.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

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

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 e UnderAgeOfConsent.
  • Sono stati rimossi i metodi di payload degli sviluppatori deprecati.
  • Metodi deprecati BillingFlowParams.setAccountId() rimossi e BillingFlowParams.setDeveloperId().
  • Metodi deprecati BillingFlowParams.setOldSkus(String oldSku) rimossi e BillingFlowParams.addOldSku(String oldSku).
  • Sono state aggiunte annotazioni con nullità.

Correzioni di bug

  • SkuDetails.getIntroductoryPriceCycles() ora restituisce int 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

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, deprecato setOldSku(String oldSku) e sostituito con setOldSku(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 codice DEVELOPER_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:

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:

  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. Implementare la 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 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

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

Altre modifiche

  • Sono stati aggiunti costruttori pubblici per PurchasesResult e SkuDetailsResult da creare i test.
  • SkuDetails oggetti possono utilizzare il nuovo metodo getOriginalJson().
  • 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 sostituito setSku() 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 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 in BillingFlowParams non è più supportato. Usa invece il criterio replaceSkusProrationMode.
  • 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

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.