Esta versão do aplicativo não está configurada para cobrança através do Google Play

269

Quando tento executar meu aplicativo com cobrança no aplicativo, estou recebendo o erro: "Esta versão do aplicativo não está configurada para cobrança através do Google Play. Verifique a Central de Ajuda para obter mais informações".

Já tenho a permissão de cobrança no arquivo Manifest e tenho um arquivo .apk assinado como rascunho no Google Play e também instalei o mesmo apk assinado no meu telefone.

Alguma ajuda sobre como resolver esse problema?

Porteiro
fonte

Respostas:

339

Este erro pode ser causado por vários motivos.

Aqui está a lista de requisitos para o teste do Google IAB.

Pré-requisitos:

  1. O AndroidManifest deve incluir a permissão "com.android.vending.BILLING" .
  2. O APK é construído no modo de liberação .
  3. O APK é assinado com o (s) certificado (s) de liberação . (Importante: com "App Signing by Google Play", só funciona se você baixar diretamente do GooglePlayStore!)
  4. O APK é carregado no canal de distribuição alfa / beta (anteriormente - como rascunho) no console do desenvolvedor pelo menos uma vez. (leva algum tempo ~ 2h-24h ).
  5. Os produtos IAB são publicados e seu status definido como ativo .
  6. As contas de teste foram adicionadas no console do desenvolvedor.

Requisitos de teste:

  1. O APK de teste tem o mesmo código de versão do carregado no console do desenvolvedor.
  2. O APK de teste é assinado com os mesmos certificados que o carregado no dev.console.
  3. Conta de teste (não desenvolvedor) - é a conta principal do dispositivo. (A conta principal pode não ser necessária - de acordo com o comentário do @MinosL )
  4. A conta de teste é ativada como testador e está vinculada a uma forma de pagamento válida . ( @Kyone )

PS: Depuração com certificado de versão : https://stackoverflow.com/a/15754187/1321401 (Thnx @dipp para o link)

PPS: Queria fazer essa lista já há muito tempo.

Thnx @zlgdev , @Kyone , @MinosL para atualizações

Luten
fonte
5
Não se esqueça de verificar se a conta que você está usando para testar o IAB está ativada como testador, usando o "URL de ativação" gerado após o upload de uma compilação; E que está vinculado a uma forma de pagamento válida .
kyone
3
Não deveria ser mais fácil apenas testar o IAP? Ou para testar as coisas em geral ..
Juan
1
também digno de nota; conta de teste não deve ser ligada à conta de desenvolvedor (não devem ter acesso a APK upload)
guness
2
também digno de nota; se "Certificado de assinatura do aplicativo" estiver ativado, não poderemos usar nosso APK local para testar com compras reais, pois não podemos assinar com certificado de assinatura. (me levou como 3 horas para descobrir)
guness
1
Fui testado com sucesso com 1) um aplicativo de depuração assinado que 2) não é a conta principal do dispositivo , portanto, o processo para o teste do Google IAB parece não ser tão rigoroso como mencionado acima.
MinosL 07/02/19
194

Ahh encontrou a solução depois de tentar por algumas horas.

  1. O Google leva um tempo para processar aplicativos e atualizá-los em seus servidores, para mim leva cerca de meio dia. Portanto, depois de salvar o apk como rascunho no Google Play, você deve esperar algumas horas para que os produtos no aplicativo respondam normalmente e permitam compras regulares.
  2. Exportar e assinar APK. O APK não assinado que tentar fazer compras receberá um erro.
Porteiro
fonte
71
Uau, isso é sério? Acabei de encontrar o mesmo problema. Fiz tudo o que o Google me pediu para testar o faturamento no aplicativo, mas ainda recebia a mesma mensagem de erro evasiva. Acho que vou ter que esperar e ver. Mas o Google realmente espera que os desenvolvedores esperem horas cada vez que precisamos atualizar nosso aplicativo para implementar o faturamento no aplicativo? Parece-me bastante inapropriado, para dizer o mínimo.
Simon
6
Você pode testar enquanto estiver conectado ao Android Studio / em execução enquanto estiver conectado ao depurador? Ou você precisa instalar o apk de liberação via USB?
Alfie Hanssen
3
Existe uma maneira mais fácil de testar o processo de compra, além de Ferramentas Android> Exportar projeto assinado ... etc, e copiar manualmente o APK no dispositivo, Testar ... repetir? Eu devo estar esquecendo alguma coisa?
usar o seguinte comando
4
Sério, não posso usar o aplicativo com certificado de depuração e testar o faturamento no aplicativo?
TacB0sS
8
Observe que você PODE usar compilações de depuração, diretamente do seu IDE enquanto trabalha. Você só precisa alterar o keystore de depuração para um que corresponda ao seu repositório de lançamento. Veja esta publicação para obter mais informações sobre como: stackoverflow.com/questions/10886814/…
cottonBallPaws
137

O mesmo acontecerá se sua versão publicada não for a mesma que você está testando no seu telefone.

Por exemplo, a versão carregada é android:versionCode="1"e a versão que você está testando no seu telefone éandroid:versionCode="2"

sandalone
fonte
3
você pode me dizer o que se a versão carregada é android:versionCode="1"e o telefone está na android:versionCode="2"dose ok ou eu tenho que mudar meu apk google play?
Youddh
1
O que você precisa fazer é aumentar a versão local para "1" para que ela corresponda à versão ativa atual, pelo menos temporariamente para testes.
Romain
2
Parece que existem 2 correções comuns para esse erro, dependendo da sua situação. No meu caso, foi este.
20913 Matt
Obrigado, esse foi o problema. Estava depurando bem com o lançamento do apk assinado no meu dispositivo conectado. Alterou o código da versão e começou a receber o erro 1005. uau!
Anna BILLSTRÖM
@Anna estar ciente de que -1005 também é USER_CANCELLED se você usar iabHelper
JacksOnF1re
47

Você precisa assinar seu APK com seu certificado ativo. Em seguida, instale isso no seu dispositivo de teste. Você pode testar o InAppBilling. Se você estiver testando seu aplicativo por execução direta via eclipse para o dispositivo (no modo de depuração), receberá esse erro.

Se você estiver usando android.test.purchasedcomo o SKU, ele funcionará completamente, mas você não terá o developerPayload em sua resposta final.

Se você estiver usando seu próprio rascunho no item do aplicativo, poderá testar todo o caminho, mas será cobrado e, portanto, terá que reembolsá-lo posteriormente.

Você não pode comprar itens com a mesma conta do Gmail que você usa para o console de desenvolvimento do Google Play.

Chirag Patel
fonte
1
+1 A execução do depurador usa o certificado de depuração. Depois de exportar o aplicativo e criar uma nova chave pública (e instalá-lo no console do desenvolvedor), basta enviar um e-mail para você com o apk e instalá-lo na sua caixa de entrada do gmail.
Cdavidyoung
Se eu quiser experimentar "android.test.purchased", alterarei o SKU no meu código e no console do desenvolvedor?
Rocologo
26

No console do desenvolvedor:

Settings-> Account details->License Testing -> Contas do Gmail com acesso de teste

e digite aqui suas contas

Pablo Cegarra
fonte
Funciona como um encanto.
Jordânia
17

Se você veio de 2018, precisa baixar o APK diretamente da Play Store e instalar o APK "derivado". Talvez seja por causa da Play Store do Google ter um recurso "App Signing by Google Play".

Law Gimenez
fonte
1
Qual APK? Estou usando o AIDL, ainda preciso fazer isso?
Zhen Liu
@ZhenLiu Eu acho que não é necessário #
Law Gimenez
Além disso, o aplicativo já não pode ser instalado no dispositivo por meios diferentes (por exemplo, Android Studio). A instalação / atualização da Play Store funcionará, mas o IAP não - você receberá o erro do OP.
JDune 16/07/19
Como podemos depurar isso?
Oliver Dixon
3

Isso acontecerá se você usar uma versão diferente do apk da versão do Google Play.

Amalka
fonte
3

Deixe-me adicionar o que aconteceu comigo, pode ajudar alguém.

Foi principalmente devido à assinatura.

Desde que adicionei os detalhes de assinatura na estrutura do projeto, eu pensava que toda vez que executo, o apk assinado esperado está sendo instalado. Mas o tipo de compilação 'debug' foi selecionado.

A correção abaixo resolveu o problema para mim.

  • Apk assinado gerado do tipo de compilação 'release'.
  • Instalado manualmente o apk.
Shree Harsha S
fonte
2

No meu caso, vi a mesma mensagem devido às diferentes assinaturas do apk instalado e a um upload do apk do mercado.

goRGon
fonte
2

Ao contrário de muitas respostas e comentários no SO e em outros sites, você NÃO precisa executar testes preliminares com uma versão alfa / beta do seu produto que foi baixada do Google Play para o seu dispositivo de teste (o processo de publicação alfa / beta geralmente consome metade do dia). Você também não precisa carregar e recarregar um apk de versão assinada do seu estúdio de desenvolvedor no seu dispositivo de teste.

É possível depurar o Google Play preliminar nos serviços de cobrança de aplicativos usando o aplicativo de depuração carregado do seu estúdio de desenvolvedor diretamente no seu dispositivo de teste via ADB. Se você estiver enfrentando erros que impedem isso, provavelmente você fez algo errado no seu código. Preste muita atenção ao CASE dos seus SKUs (IDs do produto) e seu formato (por exemplo, se você carregar o APK como com.mydomain.my_product_id, tente comprá-lo dessa maneira - fornecendo o mesmo caso e domínio) . Além disso, preste muita atenção ao seu itemType - deve ser "inapp" ou "subs" para gerenciados / não gerenciados em compras ou assinaturas de aplicativos, respectivamente.

Conforme sugerido por Chirag Patel, desde que você tenha seu código de cobrança devidamente estabelecido, execute todos os testes usando o sku android.test.purchased (ID do produto) durante seus testes preliminares. Verifique esse ID em todas as suas operações de cobrança para passar por verificações de assinatura, token e carga útil, pois esses dados não são fornecidos pelo sistema de teste do Google. Além disso, forneça esse ID a um de seus produtos de teste para testar sua compra, desbloqueio / carregamento e apresentação durante todo o esquema. Para LIMPAR a compra, simplesmente consuma-a, passando o mesmo Sku AND uma sequência de token formatada dessa maneira - nenhum outro campo é relevante:

    "inapp:"+appContext.getAppContext().getPackageName()+":android.test.purchased";

Depois de concluir esta fase do teste, passe para o teste semi-ativo com seu produto alfa / beta. Crie um grupo do Google (essencialmente uma lista de endereçamento), adicione seus e-mails de usuários de teste e adicione / convide este grupo para testar seu dispositivo nesta fase (realizada na parte "APK" da listagem de desenvolvedores do Google do seu aplicativo). As compras serão simuladas, mas não serão cobradas de fato. No entanto, para limpar e testar novamente as compras, o Google indica que você deve reembolsá-las da carteira do Google. Esta é a única fase do teste que requer o processo demorado de usar cargas alfa / beta e usuários de teste.

Epsilon3
fonte
1

Tinha o mesmo problema e não foi resolvido antes de ler o post do DZDomi. De repente, ocorreu que existe uma configuração no Google Developer Console que você precisa ativar. Na seção "Em compras de aplicativos", há uma linha para o seu produto e, à direita, há um status para ele. Deve ser ATIVO!

Søren
fonte
0

meu problema era que eu tentei verificá-lo com o debug.keystore, quero dizer, executá-lo através do eclipse. Eu o exportei com o keystore com o qual publiquei no modo alfa (ele deve ser publicado antes que você possa testá-lo). meu telefone e do que eu poderia testá-lo normalmente.

Gal Rom
fonte
0

O problema também ocorre quando você adiciona uma compra no aplicativo após fazer o upload do apk, mas não publica o aplicativo na loja de jogos (alfa, beta e produção).

O que basicamente significa que você deve adicionar a compra no aplicativo APÓS a publicação do apk na Play Store (alfa, beta e produção). Caso contrário, você não poderá comprar ou consultar a compra no aplicativo.

DZDomi
fonte
0

Outro motivo não mencionado aqui é que você precisa testar em um dispositivo real. Com o emulador se tornando realmente bom, é um erro fácil de cometer.

JDenais
fonte
0

Recentemente, o Google implementou uma alteração em seus sistemas e, como você enviou pelo menos um APK para seu console, você pode testar suas solicitações no aplicativo com seu aplicativo com qualquer código / número de versão.

Referência cruzada LINK

Configure gradlepara assinar sua compilação de depuração para depuração.

android {
    ...
    defaultConfig { ... }
    signingConfigs {
        release {
            storeFile file("my-release-key.jks")
            storePassword "password"
            keyAlias "my-alias"
            keyPassword "password"
        }
    }
    buildTypes {
        debug {
            signingConfig signingConfigs.release
            ...
        }
    }
}
Anoop M
fonte
0

SOLUÇÃO

Espere um pouco depois de fazer o upload do seu aplicativo na Play Store, porque o Google leva algum tempo para atualizar as versões do aplicativo.

Ali Akram
fonte
0

Eu tenho o mesmo problema no moto c2 + no meu caso, é problema do dispositivo uma vez que eu reiniciar, em seguida, ele vai rune perfeito ...

Sagar Pithiya
fonte