
E como ainda não existe um artigo sobre Habré sobre isso? Não importa, é necessário corrigi-lo.
Existem duas maneiras de adicionar compras no aplicativo ao seu aplicativo Android - antigas e novas. Até 2017, todos usavam a biblioteca do anjlab, mas desde junho de 2017 a situação mudou, o Google lançou sua própria biblioteca para compras e assinaturas internas - Play Billing Library. Agora, este último é considerado o padrão.
A Biblioteca de cobrança do Google Play é muito simples.
Conecte a dependência.
implementation 'com.android.billingclient:billing:1.2'
Adicione permissão no manifesto.
<uses-permission android:name="com.android.vending.BILLING"/>
Crie uma instância BillingClient e inicie a conexão.
private BillingClient mBillingClient; ... mBillingClient = BillingClient.newBuilder(this).setListener(new PurchasesUpdatedListener() { @Override public void onPurchasesUpdated(int responseCode, @Nullable List<Purchase> purchases) { if (responseCode == BillingClient.BillingResponse.OK && purchases != null) {
Chegamos ao método
onPurchasesUpdated () quando a compra é feita, no método
onBillingSetupFinished () , você pode solicitar informações sobre mercadorias e compras.
Solicite informações do produto. Coloque
querySkuDetails () em
onBillingSetupFinished () .
private Map<String, SkuDetails> mSkuDetailsMap = new HashMap<>(); private String mSkuId = "sku_id_1"; ... @Override public void onBillingSetupFinished(@BillingClient.BillingResponse int billingResponseCode) { if (billingResponseCode == BillingClient.BillingResponse.OK) {
No código, você pode perceber o conceito de SKU, o que é? SKU - da unidade de manutenção de estoque em inglês (identificador de item de mercadoria).
Agora, no
mSkuDetailsMap , temos todas as informações sobre os produtos (nome, descrição, preço) registrados no Play Console deste aplicativo (mais sobre isso posteriormente). Preste atenção a esta linha
skuList.add (mSkuId); , aqui adicionamos o ID do produto no Play Console e liste aqui todos os produtos com os quais você deseja interagir. Temos um produto - sku_id_1.
Tudo está pronto para atender a solicitação de compra. Passamos o ID do produto. Execute esse método, por exemplo, clicando no botão
public void launchBilling(String skuId) { BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder() .setSkuDetails(mSkuDetailsMap.get(skuId)) .build(); mBillingClient.launchBillingFlow(this, billingFlowParams); }
Agora, executando este método, você verá esta caixa de diálogo (aproximadamente fotos da Internet).

Agora, se o usuário comprar os produtos, eles precisam fornecê-lo. Adicione o método
payComplete () e execute ações nele que fornecem acesso ao produto adquirido. Por exemplo, se um usuário comprou um anúncio, desconecte-o, faça esse método para que o anúncio não apareça mais.
... @Override public void onPurchasesUpdated(int responseCode, @Nullable List<Purchase> purchases) { if (responseCode == BillingClient.BillingResponse.OK && purchases != null) {
Está tudo bem, mas se o usuário reiniciar o aplicativo, nosso programa não saberá nada sobre compras. É necessário solicitar informações sobre eles. Faça isso em
onBillingSetupFinished () .
@Override public void onBillingSetupFinished(@BillingClient.BillingResponse int billingResponseCode) { if (billingResponseCode == BillingClient.BillingResponse.OK) {
Em
ordersList, obtém uma lista de todas as compras feitas pelo usuário.
Fazemos uma verificação: se as mercadorias forem compradas, execute
payComplete () .
Feito. Resta publicar este aplicativo no Play Console e adicionar produtos. Como adicionar um produto:
Descrição da página do aplicativo >
Conteúdo à venda >
Criar conteúdo limitado .
Nota 1 : você não poderá adicionar mercadorias até fazer o upload da compilação do aplicativo no Play Console.
Nota 2 : para ver a caixa de diálogo de compra, você precisa fazer o upload da versão para o Play Console, adicionar o produto e aguardar um pouco (~ 30 minutos - 1 hora - 3 horas) até que o produto seja atualizado, somente depois que uma caixa de diálogo aparecer e você poderá fará uma compra.
Nota 3 :
Corrija o erro dos
parâmetros de entrada. O SKU não pode ser nulo - o produto no Play Console ainda não foi atualizado. Aguarde.
Nota 4 : você pode encontrar o
erro Erro "Sua transação não pode ser concluída" , nos logs como
código de resposta 6, enquanto você testará. Por que razões isso acontece comigo não é exatamente conhecido, mas, de acordo com minhas observações, isso ocorre após frequentes manipulações na compra e devolução de mercadorias. Para corrigir isso, acesse o menu do cartão bancário e transfira seu cartão. Como evitar isso? Adicione sua conta ao Play Console como testador e compre apenas de um cartão de teste.
Demo no githubCompre-me café(A propósito, o sistema de donets funciona no Habr pelo botão abaixo do artigo - aprox. Moderador).