Notas da versão da Biblioteca Google Play Faturamento

Este tópico contém notas da versão da Biblioteca Google Play Faturamento.

Biblioteca Google Play Faturamento: versão 6.2.0 (06/03/2024)

A versão 6.2.0 da Biblioteca Google Play Faturamento e das extensões Kotlin já está disponível.

Resumo das mudanças

Biblioteca Google Play Faturamento versão 6.1.0 (14-11-2023)

A versão 6.1.0 da biblioteca Google Play Faturamento e das extensões Kotlin já está disponível.

Resumo das mudanças

Biblioteca Google Play Faturamento versão 6.0.1 (22-06-2023)

A versão 6.0.1 da Biblioteca Google Play Faturamento e das extensões Kotlin já está disponível.

Resumo das mudanças

A Biblioteca Play Faturamento foi atualizada para oferecer compatibilidade com o Android 14.

Biblioteca Google Play Faturamento versão 6.0 (10-05-2023)

A versão 6.0.0 da biblioteca Google Play Faturamento e das extensões Kotlin já está disponível.

Resumo das mudanças

  • Foi adicionado um novo tipo enumerado ReplacementMode para substituir ProrationMode.

    Observe que ProrationMode ainda está disponível por motivos de compatibilidade com versões anteriores.

  • O código do pedido foi removido para compras PENDING.

    Anteriormente, o código do pedido era sempre criado, mesmo que a compra estivesse pendente. A partir da versão 6.0.0, o código de um pedido não será criado para compras pendentes. Nesses casos, ele será preenchido depois que a compra for movida para o estado PURCHASED.

  • Os métodos queryPurchases e launchPriceConfirmationFlow foram removidos.

    Os métodos queryPurchases e launchPriceConfirmationFlow, marcados como descontinuados, foram removidos da Biblioteca Play Faturamento 6.0.0. Os desenvolvedores precisarão usar queryPurchasesAsync em vez de queryPurchases. Para alternativas ao launchPriceConfirmationFlow, consulte Mudanças no preço.

  • Foi adicionado um novo código de resposta de erro de rede.

    Um novo código de resposta de erro de rede, NETWORK_ERROR, foi adicionado a partir da versão 6.0.0 da Biblioteca Play Faturamento. Esse código é retornado quando um erro ocorre devido a um problema na conexão de rede. Esses erros de conexão de rede foram relatados anteriormente como SERVICE_UNAVAILABLE.

  • SERVICE_UNAVAILABLE e SERVICE_TIMEOUT foram atualizados.

    A partir da versão 6.0.0 da Biblioteca Play Faturamento, os erros devido ao tempo limite no processamento serão retornados como SERVICE_UNAVAILABLE em vez do atual SERVICE_TIMEOUT.

    Esse comportamento não mudará nas versões anteriores da biblioteca.

  • SERVICE_TIMEOUT foi removido.

    A partir da versão 6.0.0 da Biblioteca Play Faturamento, SERVICE_TIMEOUT não será mais retornado. As versões anteriores ainda retornarão esse código.

  • Foram adicionados mais registros.

    A versão 6 da Biblioteca Play Faturamento inclui novos registros. Eles fornecem insights sobre o uso da API, como sucesso e falha, e sobre problemas de conexão de serviço. Essas informações serão usadas para melhorar o desempenho da Biblioteca Play Faturamento e oferecer melhor suporte a erros.

Biblioteca Google Play Faturamento versão 5.2.1 (22-06-2023)

A versão 5.2.1 da Biblioteca Google Play Faturamento e das extensões Kotlin já está disponível.

Resumo das mudanças

A Biblioteca Play Faturamento foi atualizada para oferecer compatibilidade com o Android 14.

Biblioteca Google Play Faturamento versão 5.2 (06-04-2023)

A versão 5.2.0 da Biblioteca Google Play Faturamento e das extensões Kotlin já está disponível.

Resumo das mudanças

Biblioteca Google Play Faturamento versão 5.2 (31-10-2022)

A versão 5.1.0 da Biblioteca Google Play Faturamento e das extensões Kotlin já está disponível.

Essa versão contém as mudanças abaixo.

Resumo das mudanças

Biblioteca Google Play Faturamento versão 5.0 (11-05-2022)

A versão 5.0.0 da Biblioteca Google Play Faturamento e das extensões Kotlin já está disponível.

Essa versão contém as mudanças abaixo.

Resumo das mudanças

  • Introdução de um novo modelo de assinaturas, incluindo novas entidades que permitem criar várias ofertas para um único produto por assinatura. Para ver mais informações, consulte o guia de migração.
  • BillingClient.queryProductDetailsAsync() foi adicionado para substituir BillingClient.querySkuDetailsAsync().
  • Adição do método setIsOfferPersonalized() para requisitos de divulgação de preços personalizados da UE. Para saber mais sobre como usar esse método, consulte Indicar um preço personalizado.
  • Remoção de queryPurchases(), que havia sido descontinuado e substituído por queryPurchasesAsync, introduzido na Biblioteca Google Play Faturamento 4.0.0.
  • launchPriceChangeFlow foi descontinuado e vai ser removido em uma versão futura. Para saber mais sobre possíveis alternativas, consulte Iniciar um fluxo de confirmação de mudança de preço.
  • Remoção de setVrPurchaseFlow(), que era usado anteriormente ao instanciar um fluxo de compra. Nas versões anteriores, esse método redirecionava o usuário para concluir a compra no dispositivo Android. Com a remoção desse método, os usuários concluem a compra pelo fluxo de compra padrão.

Biblioteca Google Play Faturamento versão 4.1 (23-02-2022)

A versão 4.1.0 da Biblioteca Google Play Faturamento e das extensões Kotlin já está disponível.

Essa versão contém as mudanças abaixo.

Resumo das mudanças

Biblioteca Google Play Faturamento versão 4.0 (18-05-2021)

A versão 4.0.0 da biblioteca Google Play Faturamento e das extensões Kotlin já está disponível.

Resumo das mudanças

Biblioteca Google Play Faturamento versão 3.0.3 (12-03-2021)

A versão 3.0.3 da Biblioteca Google Play Faturamento, a extensão do Kotlin e o plug-in do Unity já estão disponíveis.

Correções de bugs do Java e do Kotlin

  • O vazamento de memória quando endConnection() é chamado foi corrigido.
  • Corrigido o problema que ocorre quando a Biblioteca Google Play Faturamento é usada por apps que utilizam o modo de inicialização de tarefa única. Um callback onPurchasesUpdated() será acionado quando um app for retomado da tela de início do Android e a caixa de diálogo de faturamento estiver visível antes de ser suspensa.

Correções de bugs do Unity

  • Atualize para a versão 3.0.3 do Java para corrigir o vazamento de memória e resolver problemas que impediam compras quando um app era retomado da tela de início do Android e a caixa de diálogo de faturamento ficava visível antes da suspensão do app.

Versão 3.0.2 da Biblioteca Google Play Faturamento (24-11-2020)

A versão 3.0.2 da Biblioteca Google Play Faturamento e da extensão Kotlin já está disponível.

Correções de bugs

  • Correção de um bug na extensão Kotlin, em que a corrotina falhava com o erro "Já retomado".
  • Correção de referências não resolvidas quando a extensão Kotlin é usada com a Biblioteca kotlinx.coroutines versão 1.4 ou mais recente.

Versão 3.0.1 da Biblioteca Google Play Faturamento (30-09-2020)

A versão 3.0.1 da biblioteca do Google Play Faturamento e da extensão Kotlin já está disponível.

Correções de bugs

  • Correção de um bug em que, se o aplicativo fosse interrompido e restaurado durante o fluxo de faturamento, PurchasesUpdatedListener não poderia ser chamado com o resultado da compra.

Biblioteca do Google Play Faturamento versão 3.0 (08-06-2020)

A versão 3.0.0 da Biblioteca do Google Play Faturamento, a extensão do Kotlin e o plug-in do Unity já estão disponíveis.

Resumo das mudanças

  • Remoção do suporte a SKU de recompensa.
  • Remoção dos parâmetros ChildDirected e UnderAgeOfConsent.
  • Remoção dos métodos descontinuados de payload do desenvolvedor.
  • Remoção dos métodos descontinuados BillingFlowParams.setAccountId() e BillingFlowParams.setDeveloperId().
  • Remoção dos métodos descontinuados BillingFlowParams.setOldSkus(String oldSku) e BillingFlowParams.addOldSku(String oldSku).
  • Adição de anotações de nulidade.

Correções de bugs

  • SkuDetails.getIntroductoryPriceCycles() agora retorna int em vez de String.
  • Correção de um bug em que o fluxo de faturamento era tratado como tendo parâmetros extras, mesmo que nenhum estivesse definido.

Biblioteca Google Play Faturamento versão 2.2.1 (20-05-2020)

A versão 2.2.1 da Biblioteca do Google Play Faturamento está disponível.

Correções de bugs

  • Atualização da versão padrão da Biblioteca Play Faturamento Java da qual a extensão Kotlin depende.

Biblioteca Google Play Faturamento versão 2.2.0 e suporte a Unity (23-03-2020)

A versão 2.2.0 da Google Play Faturamento oferece funcionalidades que ajudam os desenvolvedores a garantir que as compras sejam atribuídas ao usuário correto. Essas mudanças substituem a necessidade de criar soluções personalizadas com base no payload do desenvolvedor. Como parte dessa atualização, a funcionalidade de payload do desenvolvedor se tornou descontinuada e será removida em uma versão futura. Para ver mais informações, incluindo alternativas recomendadas, consulte Payload do desenvolvedor.

Biblioteca do Google Play Faturamento 2 para Unity

Além das versões atuais em Java e Kotlin da biblioteca do Google Play Faturamento 2, lançamos uma versão da biblioteca para uso com Unity. Desenvolvedores de jogos que usam a API de compra no app do Unity podem fazer upgrade agora para aproveitar todos os recursos da Biblioteca Google Play Faturamento 2 e facilitar os upgrades subsequentes para versões futuras da biblioteca.

Para saber mais, consulte Usar o Google Play Faturamento com o Unity.

Resumo das mudanças

Versão 2.1.0 da Biblioteca Google Play Faturamento e da extensão Kotlin (10-12-2019)

A versão 2.1.0 da Biblioteca Google Play Faturamento e a nova extensão Kotlin já estão disponíveis. A extensão Kotlin da Biblioteca do Play Faturamento fornece alternativas de API idiomáticas para o consumo do Kotlin, com segurança nula e corrotinas melhores. Para exemplos de código, consulte Usar a Biblioteca Google Play Faturamento.

Essa versão contém as mudanças abaixo.

Resumo das mudanças

  • Em BillingFlowParams, houve a decontinuação do uso de setOldSku(String oldSku), que foi substituído por setOldSku(String oldSku, String purchaseToken) para desambiguação quando várias contas no dispositivo têm o mesmo SKU.

Biblioteca do Google Play Faturamento versão 2.0.3 (05-08-2019)

A versão 2.0.3 da biblioteca do Google Play Faturamento está disponível.

Correções de bugs

  • Correção de um bug em que o querySkuDetailsAsync() falhava ocasionalmente com o código DEVELOPER_ERROR em vez de retornar um resultado bem-sucedido.

Biblioteca Google Play Faturamento versão 2.0.2 (08-07-2019)

A versão 2.0.2 da biblioteca do Google Play Faturamento está disponível. Essa versão contém atualizações da documentação de referência e não altera a funcionalidade da biblioteca.

Biblioteca do Google Play Faturamento versão 2.0.1 (06-06-2019)

A versão 2.0.1 da biblioteca do Google Play Faturamento está disponível. Essa versão contém as alterações a seguir.

Correções de bugs

  • Correção de um bug em que as mensagens de depuração estavam sendo retornadas como null em alguns casos.
  • Correção de um possível problema de vazamento de memória.

Biblioteca Google Play Faturamento versão 2.0 (07-05-2019)

A versão 2.0 da Biblioteca Google Play Faturamento está disponível. Essa versão contém as alterações a seguir.

As compras precisam ser confirmadas em até três dias

O Google Play é compatível com a compra de produtos dentro ou fora do seu app. Para que o Google Play garanta uma experiência de compras consistente, independente de onde o usuário compra o produto, você precisa confirmar todas as compras recebidas pela Biblioteca Google Play Faturamento assim que possível depois de conceder a titularidade ao usuário. Se você não confirmar uma compra em até três dias, o usuário receberá um reembolso automaticamente, e o Google Play revogará a compra. Para transações pendentes (função nova da versão 2.0), o prazo de três dias começa a ser contado quando a compra é movida para o estado PURCHASED, e não se aplica enquanto a compra está no estado PENDING.

Para assinaturas, você precisa confirmar compras que tiverem um novo token de compra. Isso quer dizer que todas as compras iniciais, mudanças de plano e novas assinaturas precisam ser confirmadas, mas você não precisa confirmar as renovações subsequentes. Para determinar se uma compra precisa ser confirmada ou não, você pode verificar o campo de confirmação na compra.

O objeto Purchase agora inclui um método isAcknowledged(), que indica se uma compra foi confirmada. Além disso, a API Google Play Developer inclui valores booleanos de confirmação para Purchases.products e Purchases.subscriptions. Antes de confirmar uma compra, use esses métodos para determinar se ela já foi confirmada.

É possível confirmar uma compra usando um dos seguintes métodos:

  • Para produtos consumíveis, use consumeAsync(), localizado na API do cliente.
  • Para produtos não consumíveis, use acknowledgePurchase(), localizado na API do cliente.
  • Um novo método acknowledge() também está disponível na API do servidor.

BillingFlowParams.setSku() foi removido

O método BillingFlowParams#setSku() anteriormente descontinuado foi removido nesta versão. Antes de renderizar produtos em um fluxo de compras, agora é necessário chamar BillingClient.querySkuDetailsAsync(), transmitindo o objeto SkuDetails resultante para BillingFlowParams.Builder.setSkuDetails().

Para exemplos de código, consulte Usar a Biblioteca Google Play Faturamento.

O payload do desenvolvedor é compatível

A versão 2.0 da Biblioteca Google Play Faturamento adiciona suporte ao payload do desenvolvedor (strings arbitrárias que podem ser anexadas a compras). É possível anexar um payload do desenvolvedor a uma compra, mas apenas quando a compra é confirmada ou consumida. É diferente do payload do desenvolvedor em AIDL, em que o payload podia ser especificado no lançamento de um fluxo de compra. Como as compras agora podem ser iniciadas fora do seu app, essa mudança garante que você tenha sempre uma oportunidade de adicionar um payload a elas.

Para acessar o payload na nova biblioteca, os objetos Purchase agora incluem um método getDeveloperPayload().

Ofertas consistentes

Agora, quando você oferece um SKU com desconto, o Google Play retorna o preço original dele para que você possa mostrar aos usuários que eles estão recebendo um desconto.

SkuDetails contém dois novos métodos para recuperar o preço do SKU original:

Transações pendentes

Com a versão 2.0 da Biblioteca Google Play Faturamento, você precisa oferecer suporte a compras quando mais ações forem necessárias antes de conceder a titularidade. Por exemplo, um usuário pode escolher comprar seu produto em uma loja física com dinheiro. Isso significa que a transação é concluída fora do seu app. Em casos como esse, você precisa conceder a titularidade somente após o usuário ter concluído a transação.

Para ativar compras pendentes, chame enablePendingPurchases() como parte da inicialização do app.

Use Purchase.getPurchaseState() para determinar se o estado de compra é PURCHASED ou PENDING. Observe que você precisa conceder titularidade apenas quando o estado for PURCHASED. Para verificar se há atualizações de status de Purchase, faça o seguinte:

  1. Ao iniciar o app, chame BillingClient.queryPurchases() para recuperar a lista de produtos não consumidos associados ao usuário.
  2. Chame Purchase.getPurchaseState() em cada objeto Purchase retornado.
  3. Implemente o método onPurchasesUpdated() para responder a mudanças em objetos Purchase.

Além disso, a API Google Play Developer inclui um estado PENDING para Purchases.products. Transações pendentes não são compatíveis com assinaturas.

Esta versão também introduz um novo tipo de notificação de desenvolvedor em tempo real, a OneTimeProductNotification. Esse tipo de notificação contém uma única mensagem, cujo valor é ONE_TIME_PRODUCT_PURCHASED ou ONE_TIME_PRODUCT_CANCELED. Esse tipo de notificação é enviado apenas para compras associadas a formas de pagamento atrasadas, como dinheiro.

Confirme compras pendentes apenas quando o estado de compra for PURCHASED, e não PENDING.

Mudanças na API

A versão 2.0 da Biblioteca Google Play Faturamento contém várias mudanças na API para melhorar o suporte a novos recursos e esclarecer a funcionalidade existente.

consumeAsync

consumeAsync() agora leva um objeto ConsumeParams em vez de um purchaseToken. ConsumeParams contém o purchaseToken, bem como um payload opcional do desenvolvedor.

A versão anterior do consumeAsync() foi removida nesta versão.

queryPurchaseHistoryAsync

Para evitar confusões, queryPurchaseHistoryAsync() agora retorna um objeto PurchaseHistoryRecord em vez de um objeto Purchase. O objeto PurchaseHistoryRecord é o mesmo que um objeto Purchase, exceto pelo fato de refletir apenas os valores retornados por queryPurchaseHistoryAsync() e não conter os campos autoRenewing, orderId e packageName. Observe que nada foi modificado nos dados retornados: queryPurchaseHistoryAsync() retorna os mesmos dados de antes.

Valores de retorno de BillingResult

As APIs que anteriormente retornavam um valor inteiro de BillingResponse agora retornam um objeto BillingResult. BillingResult contém o número inteiro de BillingResponse, bem como uma string de depuração que pode ser usada para diagnosticar erros. A string de depuração usa uma localidade en-US e não pode ser mostrada para usuários finais.

Correções de bugs

Biblioteca Google Play Faturamento versão 1.2.2 (07/03/2019)

A versão 1.2.2 da Biblioteca Google Play Faturamento está disponível. Essa versão contém as alterações a seguir.

Correções de bugs

  • Foi corrigido um problema de linha de execução introduzido na v1.2.1. Chamadas em segundo plano não bloqueiam mais a linha de execução principal.

Outras mudanças

  • Embora o uso da linha de execução principal ainda seja recomendado, agora você pode instanciar a Biblioteca Google Play Faturamento em uma linha de execução em segundo plano.
  • A instanciação foi completamente migrada para a linha de execução em segundo plano para reduzir a chance de causar ANRs.

Biblioteca Google Play Faturamento versão 1.2.1 (04-03-2019)

A versão 1.2.1 da Biblioteca Google Play Faturamento está disponível. Essa versão contém as alterações a seguir.

Principais alterações

Outras mudanças

  • Construtores públicos para PurchasesResult e SkuDetailsResult foram adicionados para facilitar os testes.
  • Objetos SkuDetails podem usar um novo método, o getOriginalJson().
  • Todas as chamadas de serviço AIDL agora são controladas por linhas de execução em segundo plano.

Correções de bugs

  • Listeners de callback nulos não são mais passados para APIs públicas.

Biblioteca Google Play Faturamento versão 1.2 (18-10-2018)

A versão 1.2 da Biblioteca Google Play Faturamento está disponível. Essa versão contém as alterações a seguir.

Resumo das mudanças

  • A Biblioteca Google Play Faturamento agora está licenciada sob o Contrato de Licença do kit de desenvolvimento de software do Android.
  • Foi adicionada a API launchPriceChangeConfirmationFlow, que solicita que os usuários analisem uma mudança pendente feita no preço de uma assinatura.
  • Foi adicionado suporte a um novo modo de cálculo proporcional, DEFERRED, no momento do upgrade ou downgrade da assinatura de um usuário.
  • Na classe BillingFlowParams, substituindo setSku() por setSkuDetails().
  • Pequenas correções de bugs e otimizações de código.

Confirmação de alteração de preço

Agora você pode mudar o preço de uma assinatura no Google Play Console e solicitar que os usuários analisem e aceitem o novo preço ao entrarem no seu app.

Para usar essa API, crie um objeto PriceChangeFlowParams usando os skuDetails do produto por assinatura. Em seguida, chame launchPriceChangeConfirmationFlow(). Implemente o PriceChangeConfirmationListener para processar o resultado quando o fluxo de confirmação de mudança de preço terminar, conforme mostrado no snippet de código a seguir:

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.
            }
        });

O fluxo de confirmação de mudança de preço exibe uma caixa de diálogo com as novas informações de preço, pedindo que os usuários aceitem o novo valor. Esse fluxo retorna um código de resposta do tipo BillingClient.BillingResponse.

Novo modo de cálculo proporcional

Ao fazer upgrade ou downgrade da assinatura de um usuário, você pode usar um novo modo de cálculo proporcional, o DEFERRED. Esse modo atualiza a assinatura do usuário na próxima renovação. Para saber mais sobre como definir esse modo de cálculo proporcional, consulte Definir modo de cálculo proporcional.

Novo método para definir detalhes de SKU

Na classe BillingFlowParams, o método setSku() foi descontinuado Essa mudança serve para otimizar o fluxo do Google Play Faturamento.

Ao criar uma nova instância de BillingFlowParams no seu cliente de faturamento em apps, recomendamos que você trabalhe diretamente com o objeto JSON usando setSkuDetails(), conforme mostrado no snippet de código a seguir.

Na classe Builder BillingFlowParams, o método setSku() foi descontinuado. Em vez disso, use o método setSkuDetails(), conforme mostrado no snippet de código a seguir. O objeto transmitido para o objeto setSkuDetails() vem do método 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();
}

Biblioteca Google Play Faturamento versão 1.1 (07-05-2018)

A versão 1.1 da Biblioteca Google Play Faturamento está disponível. Essa versão contém as alterações a seguir.

Resumo das mudanças

  • Foi adicionado suporte para a especificação de um método de cálculo proporcional em BillingFlowParams ao fazer upgrade/downgrade de uma assinatura antiga.
  • A sinalização booleana replaceSkusProration em BillingFlowParams não é mais compatível. Em vez dela, use replaceSkusProrationMode.
  • launchBillingFlow() agora aciona um callback para respostas com falha.

Mudanças de comportamento

A versão 1.1 da Biblioteca Google Play Faturamento tem as mudanças de comportamento a seguir.

Os desenvolvedores podem definir o replaceSkusProrationMode na classe BillingFlowParams

Um ProrationMode oferece mais detalhes sobre o tipo de cálculo proporcional no momento do upgrade ou downgrade da assinatura de um usuário.

Kotlin

BillingFlowParams.newBuilder()
    .setSku(skuId)
    .setType(billingType)
    .setOldSku(oldSku)
    .setReplaceSkusProrationMode(replaceSkusProrationMode)
    .build()

Java

BillingFlowParams.newBuilder()
    .setSku(skuId)
    .setType(billingType)
    .setOldSku(oldSku)
    .setReplaceSkusProrationMode(replaceSkusProrationMode)
    .build();

Atualmente, o Google Play é compatível com os seguintes modos de cálculo proporcional:

IMMEDIATE_WITH_TIME_PRORATION A substituição entrará em vigor imediatamente, e o novo prazo de expiração será calculado de modo proporcional e creditado ou cobrado do usuário. Esse é o comportamento padrão atual.
IMMEDIATE_AND_CHARGE_PRORATED_PRICE A substituição entra em vigor imediatamente, e o ciclo de faturamento permanece o mesmo. O preço para o período restante será cobrado.

Observação: esta opção só está disponível para upgrade de assinatura.

IMMEDIATE_WITHOUT_PRORATION A substituição entrará em vigor imediatamente, e o novo preço será cobrado no próximo período de recorrência. O ciclo de faturamento permanece o mesmo.

replaceSkusProration não é mais compatível com a classe BillingFlowParams

Os desenvolvedores podiam definir uma sinalização booleana para cobrar um valor proporcional por uma solicitação de upgrade de assinatura. Como oferecemos suporte a ProrationMode, que contém instruções de cálculo proporcional mais detalhadas, essa flag booleana não é mais compatível.

launchBillingFlow() agora aciona um callback para respostas com falha

A Biblioteca Google Play Faturamento aciona o callback PurhcasesUpdatedListener e retorna uma BillingResponse de forma assíncrona. O valor de retorno síncrono de BillingResponse também é mantido.

Correções de bugs

  • Sai corretamente no início de métodos assíncronos quando o serviço é desconectado.
  • Os objetos de parâmetro Builder não se transformam mais em objetos compilados.
  • Problema 68087141: o launchBillingFlow() agora aciona um callback para respostas com falha.

Versão 1.0 da Biblioteca Google Play Faturamento (19-09-2017, Anúncio em inglês)

A versão 1.0 da Biblioteca Google Play Faturamento está disponível. Essa versão contém as alterações a seguir.

Mudanças importantes

  • Uma permissão de faturamento foi incorporada no manifesto da biblioteca. Não é mais necessário adicionar a permissão com.android.vending.BILLING no manifesto do Android.
  • Novo builder adicionado à classe BillingClient.Builder.
  • Foi introduzido um padrão de builder para que a classe SkuDetailsParams seja usada em métodos de consulta de SKUs.
  • Vários métodos de API foram atualizados para fins de consistência, com os mesmos nomes e ordens de argumentos de retorno.

Mudanças de comportamento

A versão 1.0 da biblioteca do Google Play Faturamento tem as seguintes mudanças de comportamento.

Classe BillingClient.Builder

BillingClient.Builder agora é inicializado pelo padrão newBuilder:

Kotlin

billingClient = BillingClient.newBuilder(context).setListener(this).build()

Java

billingClient = BillingClient.newBuilder(context).setListener(this).build();

O método launchBillingFlow agora é chamado com uma classe BillingFlowParams

Para iniciar o fluxo de faturamento para uma compra ou assinatura, o método launchBillingFlow() recebe uma instância BillingFlowParams inicializada com parâmetros específicos para a solicitação:

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());

Nova maneira de consultar produtos disponíveis

Os argumentos para os métodos queryPurchaseHistoryAsync() e querySkuDetailsAsync() foram agrupados em um padrão 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() {...})

Por conveniência e para fins de consistência em toda a nossa API, o resultado agora é retornado usando um código e uma lista de objetos SkuDetails em vez das classes de wrapper anteriores:

Kotlin

fun onSkuDetailsResponse(@BillingResponse responseCode: Int, skuDetailsList: List<SkuDetails>)

Java

public void onSkuDetailsResponse(@BillingResponse int responseCode, List<SkuDetails> skuDetailsList)

Ordem de parâmetros modificada no método onConsumeResponse()

A ordem dos argumentos para onConsumeResponse da interface ConsumeResponseListener mudou para ser consistente em toda a nossa API:

Kotlin

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

Java

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

Objeto PurchaseResult desagrupado

PurchaseResult foi desagrupado para ser consistente em toda a nossa API:

Kotlin

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

Java

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

Correções de bugs

Versão 1 da Visualização do desenvolvedor (12-06-2017, Anúncio em inglês)

O Developer Preview foi lançado com o objetivo de simplificar o processo de desenvolvimento relacionado ao faturamento, permitindo que desenvolvedores concentrem os esforços em implementar lógicas específicas para o app para Android, como a arquitetura do aplicativo e a estrutura de navegação.

A biblioteca inclui várias classes e recursos convenientes para você usar ao integrar seus apps Android com a API Google Play Billing. A biblioteca também fornece uma camada de abstração sobre o serviço Linguagem de definição de interface do Android (AIDL, na sigla em inglês), facilitando a definição da interface entre o app e a API Google Play Billing para os desenvolvedores.