Cette version de l'application n'est pas configurée pour la facturation via Google Play

269

Lorsque j'essaie d'exécuter mon application avec la facturation via l'application, j'obtiens l'erreur: "Cette version de l'application n'est pas configurée pour la facturation via Google Play. Consultez le centre d'aide pour plus d'informations".

J'ai l'autorisation de facturation déjà dans le fichier manifeste et j'ai un .apk signé téléchargé comme brouillon sur Google Play et j'ai également installé le même apk signé sur mon téléphone.

Une aide sur la façon de résoudre ce problème?

Portier
la source

Réponses:

339

Cette erreur peut être due à plusieurs raisons.

Voici la liste des exigences pour les tests Google IAB.

Conditions préalables:

  1. AndroidManifest doit inclure l' autorisation "com.android.vending.BILLING" .
  2. APK est construit en mode de libération .
  3. L'APK est signé avec le ou les certificats de version . (Important: avec "App Signing by Google Play" cela ne fonctionne que si vous téléchargez directement depuis GooglePlayStore!)
  4. L'APK est téléchargé sur le canal de distribution alpha / bêta (auparavant - en tant que brouillon) sur la console du développeur au moins une fois. (prend un certain temps ~ 2h-24h ).
  5. Les produits IAB sont publiés et leur statut passe à actif .
  6. Le ou les comptes de test sont ajoutés dans la console des développeurs.

Exigences de test:

  1. L'APK de test a le même code de version que celui téléchargé sur la console du développeur.
  2. L'APK de test est signé avec le (s) même (s) certificat (s) que celui téléchargé sur dev.console.
  3. Compte de test (pas développeur) - est le compte principal de l'appareil. (Le compte principal peut ne pas être nécessaire - selon le commentaire @MinosL )
  4. Le compte de test est activé en tant que testeur et il est lié à un mode de paiement valide . ( @Kyone )

PS: débogage avec certificat de version : https://stackoverflow.com/a/15754187/1321401 (Thnx @dipp pour le lien)

PPS: Je voulais déjà faire cette liste depuis longtemps.

Thnx @zlgdev , @Kyone , @MinosL pour les mises à jour

Luten
la source
5
N'oubliez pas de vous assurer que le compte que vous utilisez pour tester IAB est activé en tant que testeur en utilisant l '"URL d'activation" générée une fois que vous avez téléchargé une version; ET qu'il est lié à un mode de paiement valide .
Kyone
3
Ne devrait-il pas être plus simple de simplement tester IAP? Ou pour tester les choses en général ..
Juan
1
à noter également; le compte de test ne doit pas être lié au compte développeur (ne doit pas avoir accès au téléchargement de l'APK)
guness
2
à noter également; si "Certificat de signature d'application" est activé, nous ne pouvons pas utiliser notre APK local pour tester avec de vrais achats, car nous ne pouvons pas signer avec le certificat de signature. (il m'a fallu 3 heures pour le savoir)
guness
1
J'ai testé avec succès 1) une application de débogage signée qui n'est pas 2) pas le compte principal sur l'appareil , donc le processus de test Google IAB ne semble pas aussi strict que noté ci-dessus.
MinosL
194

Ahh a trouvé la solution après avoir essayé pendant quelques heures.

  1. Google prend un certain temps pour traiter les demandes et les mettre à jour sur leurs serveurs, pour moi, cela prend environ une demi-journée. Donc, après avoir enregistré l'apk en tant que brouillon sur Google Play, vous devez attendre quelques heures avant que les produits intégrés à l'application répondent normalement et permettent des achats réguliers.
  2. Exportez et signez l'APK. Un fichier APK non signé essayant de faire des achats recevra une erreur.
Portier
la source
71
Wow, c'est sérieux? Je viens de rencontrer le même problème. J'ai fait tout ce que Google m'a demandé de faire pour tester la facturation via l'application, mais j'ai toujours le même message d'erreur évasif. Je suppose que je vais devoir attendre et voir. Mais Google s'attend-il vraiment à ce que nous, les développeurs, attendions des heures chaque fois que nous devons mettre à jour notre application afin de mettre en œuvre la facturation via l'application? Cela me semble tout à fait inapproprié, c'est le moins qu'on puisse dire.
Simon
6
Pouvez-vous tester en étant connecté à Android Studio / en cours d'exécution en étant connecté au débogueur? Ou avez-vous besoin d'installer la version apk via USB?
Alfie Hanssen
3
Existe-t-il un moyen plus simple de tester le processus d'achat que les outils Android> Exporter le projet signé ... etc, puis copier manuellement l'APK sur l'appareil, tester, .... répéter? J'ai dû louper quelque chose?
wired00
4
Sérieusement, je ne peux pas utiliser l'application avec un certificat de débogage et tester la facturation via l'application?
TacB0sS
8
Notez que vous POUVEZ utiliser des versions de débogage, directement depuis votre IDE pendant que vous travaillez. Vous avez juste besoin de changer le fichier de clés de débogage en un qui correspond à votre magasin de versions. Voir cet article pour plus d'informations sur la façon dont: stackoverflow.com/questions/10886814/…
cottonBallPaws
137

La même chose se produira si votre version publiée n'est pas la même que la version que vous testez sur votre téléphone.

Par exemple, la version téléchargée est android:versionCode="1"et la version que vous testez sur votre téléphone estandroid:versionCode="2"

sandalone
la source
3
pouvez-vous me dire si la version téléchargée est android:versionCode="1"et le téléphone est android:versionCode="2"correct, ou je dois changer mon apk google play?.
Youddh
1
Ce que vous devez faire est de réduire la version locale à "1" afin qu'elle corresponde à la version actuelle en cours, au moins temporairement pour les tests.
Romain
2
Il semble qu'il existe 2 correctifs courants à cette erreur en fonction de votre situation. Dans mon cas, c'était celui-ci.
Matt
Merci, c'était le problème. Débogage correct avec la version signée apk sur mon appareil connecté. Ensuite, changé le code de version et il a commencé à obtenir l'erreur 1005. ouf!
Anna Billstrom
@Anna sachez que -1005 est également USER_CANCELLED si vous utilisez iabHelper
JacksOnF1re
47

Vous devez signer votre APK avec votre certificat en direct. Installez-le ensuite sur votre appareil de test. Vous pouvez ensuite tester InAppBilling. Si vous testez votre application par exécution directe via Eclipse sur l'appareil (en mode débogage), vous obtiendrez cette erreur.

Si vous l'utilisez android.test.purchasedcomme SKU, cela fonctionnera tout le temps, mais vous n'aurez pas le developerPayload dans votre réponse finale.

Si vous utilisez votre propre brouillon dans l'article de l'application, vous pouvez le tester complètement, mais vous serez facturé et devrez donc le rembourser vous-même par la suite.

Vous ne pouvez pas acheter des articles avec le même compte Gmail que vous utilisez pour la console de développement Google Play.

Chirag Patel
la source
1
+1 L'exécution à partir du débogueur utilise un certificat de débogage. Après avoir exporté l'application et créé une nouvelle clé publique (et l'avoir installée dans la console développeur), envoyez-vous simplement l'apk par e-mail et installez-le depuis votre boîte de réception gmail.
cdavidyoung
Si je veux essayer "android.test.purchased", vais-je alors changer le SKU à la fois dans mon code et dans la console développeur?
Rocologo
26

Dans la console développeur:

Settings-> Account details-> License Testing-> Comptes Gmail avec accès test

et saisissez ici vos comptes

Pablo Cegarra
la source
Fonctionne comme un charme.
Jordan
17

Si vous êtes ici depuis 2018, vous devez télécharger l'APK directement depuis Play Store et installer l'APK "dérivé". Peut-être que c'est parce que le Play Store de Google dispose d'une fonctionnalité "Signature d'application par Google Play".

Law Gimenez
la source
1
Quel APK? J'utilise AIDL, dois-je encore le faire?
Zhen Liu
@ZhenLiu Je suppose que non nécessaire
Law Gimenez
En outre, l'application ne peut pas être déjà installée sur l'appareil par un autre moyen (par exemple, Android Studio). L'installation / mise à jour à partir du Play Store fonctionnera, mais pas l'IAP - vous obtiendrez l'erreur OPs.
JDune
Comment pouvons-nous déboguer cela?
Oliver Dixon
3

Cela se produira si vous utilisez une version de l'apk différente de celle de Google Play.

Amalka
la source
3

Permettez-moi d'ajouter ce qui s'est passé avec moi, peut aider quelqu'un.

C'était principalement dû à la signature.

Depuis que j'ai ajouté les détails de signature dans la structure du projet, je pensais qu'à chaque fois que je cours, l'apk signé attendu est installé. Mais le type de build 'debug' a été sélectionné.

La solution ci-dessous a résolu le problème pour moi.

  • Apk signé et généré du type de build 'release'.
  • Installation manuelle de l'apk.
Shree Harsha S
la source
2

Dans mon cas, j'ai vu le même message en raison des différentes signatures de l'apk installé et d'un téléchargement sur l'apk du marché.

goRGon
la source
2

Contrairement à de nombreuses réponses et commentaires sur SO et d'autres sites, vous n'avez PAS à effectuer de tests préliminaires avec une version alpha / bêta de votre produit qui a été téléchargée à partir de Google Play sur votre appareil de test (le processus de publication alpha / bêta mange souvent une demi-journée). Vous n'avez pas non plus à charger et à recharger une apk de version signée de votre studio de développeur sur votre appareil de test.

Vous POUVEZ déboguer les services de facturation préliminaires de Google Play dans l'application en utilisant l'application de débogage telle que chargée depuis votre studio de développement directement sur votre appareil de test via ADB. Si vous rencontrez des erreurs qui empêchent cela, il est probable que vous ayez commis une erreur dans votre code. Portez une attention particulière au CAS de vos SKU (identifiants de produit) et à leur format (par exemple, si vous chargez votre APK en tant que com.mydomain.my_product_id, assurez-vous d'essayer de l'acheter de cette façon - en fournissant le même boîtier et le même domaine) . De plus, portez une attention particulière à votre itemType - il doit s'agir respectivement de "inapp" ou de "subs" pour les achats ou les abonnements gérés / non gérés dans l'application.

Comme suggéré par Chirag Patel, à condition que votre code de facturation soit correctement établi, effectuez tous les tests en utilisant le sku android.test.purchased (ID produit) lors de vos tests préliminaires. Recherchez cet ID tout au long de vos opérations de facturation pour le passer par les contrôles de signature, de jeton et de charge utile, car ces données ne sont pas fournies par le système de test Google. De plus, attribuez à l'un de vos produits de test cet ID pour tester son achat, déverrouiller / charger et présenter tout au long de votre schéma. Pour EFFACER l'achat, consommez-le simplement, en passant le même Sku ET une chaîne de jetons formatée de cette façon - aucun autre champ n'est pertinent:

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

Une fois que vous avez terminé cette phase de test, passez aux tests semi-live avec votre produit alpha / bêta. Créez un groupe Google (essentiellement une liste de diffusion), ajoutez-y les e-mails de vos utilisateurs de test et ajoutez / invitez ce groupe à tester votre appareil au cours de cette phase (effectué dans la partie "APK" de la liste des développeurs Google de votre application). Les achats seront simulés mais pas réellement facturés.Toutefois, pour effacer et retester les achats, Google indique que vous devez les rembourser à partir de votre portefeuille Google. CECI est la seule phase de test qui nécessite le long processus d'utilisation des charges alpha / bêta et des utilisateurs de test.

Epsilon3
la source
1

J'ai eu le même problème, et il n'a pas été résolu avant de lire le message de DZDomi. Il s'est avéré soudainement qu'il y avait un paramètre dans la console développeur de Google que vous devez activer. Dans la section "Achats via l'application", il y a une ligne pour votre produit et à l'extrême droite, il y a un statut pour celui-ci. Il devrait être ACTIF!

Søren
la source
0

mon problème était que j'ai essayé de le vérifier avec le debug.keystore, je veux dire le faire fonctionner via eclipse.Je l'ai exporté avec le keystore avec lequel j'ai publié en mode alpha (il doit être publié avant de pouvoir le tester). mon téléphone et que je pouvais le tester normalement.

Gal Rom
la source
0

Le problème se produit également lorsque vous avez ajouté un achat dans l'application après avoir téléchargé l'apk, mais que vous n'avez pas publié l'application dans le Play Store (alpha, bêta et production).

Ce qui signifie essentiellement que vous devez ajouter l'achat In-App APRÈS avoir publié l'apk dans le Play Store (alpha, beta et production). Sinon, vous ne pourrez pas acheter ou demander l'achat In-App.

DZDomi
la source
0

Une autre raison non mentionnée ici est que vous devez tester sur un appareil réel. L'émulateur devenant vraiment bon, c'est une erreur facile à faire.

JDenais
la source
0

Google a récemment mis en œuvre un changement sur leurs systèmes, et puisque vous avez téléchargé au moins un APK sur votre console, vous pouvez tester vos demandes dans l'application avec votre application avec n'importe quel code / numéro de version.

LIEN de référence croisée

Configurez gradlepour signer votre version de débogage pour le débogage.

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

SOLUTION

Attendez un peu après le téléchargement de votre application sur le Play Store, car Google met un certain temps à mettre à jour les versions de l'application.

Ali Akram
la source
0

J'ai le même problème dans la moto c2 + dans mon cas, c'est un problème de périphérique une fois que je redémarre, il fonctionnera parfaitement ...

Sagar Pithiya
la source