Je teste actuellement la facturation intégrée à une application pour une future application, et après avoir "acheté" avec succès l'élément de test "android.test.purchased" la première fois, je reçois maintenant le code de réponse 7 chaque fois que j'essaye de l'acheter à nouveau, ce qui signifie que je possède déjà cet article.
12-15 23: 02: 14.149: E / IabHelper (19829): erreur de facturation dans l'application: impossible d'acheter l'article, réponse d'erreur: 7: article déjà possédé
D'après ce que j'ai compris, cet achat est censé être toujours possible, non? Pour que le développeur puisse tester son application?
Sinon, comment puis-je "réinitialiser" son état pour ne pas être possédé? J'utilise le package util de l'exemple de facturation Google In-App.
la source
Réponses:
Ajoutez ce code à un thread pour lancer la demande de consommation.
Ici pour le test d'achat, purchaseToken est
Et
alors la consommation est réussie.
n'oubliez pas non plus de rendre mService public dans
alors il serait possible d'accéder comme ceci:
la source
Pas besoin d'écrire un code de consommation spécial. Utilisez simplement la commande adb pour effacer les données du Google Play Store:
la source
Il s'avère que l'élément android.test.purchased se comporte comme un identifiant ordinaire. Cela signifie que si vous voulez pouvoir l'acheter à nouveau, vous devez le consommer quelque part dans votre code. Je pense que la documentation Google est trompeuse à ce sujet et qu'elle devrait ajouter un autre identifiant statique que vous pouvez acheter à l'infini à des fins de test.
la source
billingClient.queryPurchases()
ne retourne pas cet élément non consommé, alors maintenant je ne peux pas consommer article parce que je ne peux pas obtenirpurchaseToken
de celui - ciVersion 3 intégrée à l'application:
la source
Version 3 - Le moyen le plus rapide de résoudre : la suppression du cache de Google Play Store rendra "android.test.purchased" disponible à nouveau.
la source
j'ai utilisé le shell adb:
la source
C'est ainsi que nous pouvons consommer l'article
la source
android.test.purchase
à un moment donné, ce qui posait des problèmes - la tâche d'inventaire dans la facturation intégrée à l'application a juste jeté une charge d'erreurs et n'a jamais été terminée. L'exécution de cela comme une seule fois l'a effacée afin que je puisse recommencer à utiliser mon SKU réel et continuer comme avant. MerciÀ mon avis, si votre programme n'est pas conçu pour consommer l'article, vous n'avez pas besoin de modifier le code pour effacer la mémoire d'un fournisseur extérieur. Cela rendra votre code plus fragile et vous devrez alors passer beaucoup de temps à ajouter et supprimer du code qui n'appartient pas à votre logiciel donc c'est une mauvaise conception d'implémenter une telle solution.
La meilleure solution qui a fonctionné pour moi pour effacer android.test.purchased était
puis
Je n'avais pas besoin de vider de l'argent et de parcourir les paramètres de mes applications ou de modifier le code pour cela. J'ai eu besoin d'ajouter l'adb aux variables de chemin du système Windows, ce qui était assez simple. Alors oui, vous devez utiliser adb dont vous aurez probablement besoin de toute façon.
Vous ajoutez simplement votre C: \ ... \ android-sdk \ platform-tools; dans le chemin Windows dans les variables d'environnement, et j'imagine que c'est assez simple également sous mac et linux os. J'espère que cela aidera quelqu'un à passer quelques jours de moins avec la mise en œuvre d'Android dans la facturation des applications.
la source
uninstall
n'est pas nécessaire pour effacer la référence android.test.purchased .Le principal problème est que vous devez consommer l'
android.test.purchased
article. Mais cet élément ne sera pas disponible dans votre inventaire de requêtes, vous ne pouvez donc pas consommer en utilisant le flux normal.Donc, si vous utilisez IabHelper, en
IabHelper
classe, vous pouvez temporairement changer leIInAppBillingService
mService en public afin qu'il soit accessible depuis votre IabHelper.Alors dans ta classe, tu peux consommer comme ça,
En cas de succès, la réponse sera 0.
J'espère que cela t'aides.
la source
consumeAsync()
sur android.test.purchased . Il n'y a pas de problème avec ça.À des fins de test, je vous suggère également d'insérer un morceau de code qui effacera tous les produits que vous avez achetés avant d'appeler une méthode qui initialise le flux d'achat gp. C'est particulièrement confortable lorsque vous ne testez qu'un seul élément pour le moment. Par exemple, comme ceci:
la source
Accédez à la console Google Play et ouvrez l'onglet Gestion des commandes. Là, vous pouvez rembourser / annuler les achats de test.
la source
Si vous êtes dans un environnement de test
1) Dans le cas de android.test.purchased, je peux réinitialiser le faux paiement en redémarrant l'appareil Android (consommé l'inventaire).
2) Dans InApp util, il y a un fichier appelé Security.java, faites-le comme suit, pour temporaire. Étant donné que le paiement de test (faux) renvoie toujours faux en raison d'une exception de sécurité.
Ensuite, dans votre OnIabPurchaseFinishedListener, appelez fechInvForconsumeItem ()
Le fechInvForconsumeItem () est
Consume Listener est
la source
la source
Dans mon cas, il semble que Google n'enregistre pas d'achat pour l'article. Au contraire, la copie locale des services Google Play met en cache l'achat. De cette façon, lorsqu'une deuxième demande est faite sur le même appareil,
android.test.purchased already owned
apparaît. Cependant, l'utilisation d'un autre appareil ou la réinitialisation de l'appareil efface le cache et permet de répéter l'achat.la source
Dans mon cas, j'avais juste besoin de vider le cache des applications. Après avoir vidé le cache, j'ai pu relancer le flux d'achat.
Depuis mon appareil (4.4.2), j'ai accédé à "Paramètres-> Gestionnaire d'applications". Ensuite, j'ai sélectionné l'application dans l'onglet «TÉLÉCHARGÉ», puis «Vider le cache».
la source
C'est la différence entre les articles consommables et non consommables; Les articles non consommables (ce dont vous semblez avoir affaire ici) ont leur état constamment suivi, tandis que les articles consommables peuvent être achetés plusieurs fois. Vous devrez accéder à votre console de gestion Play et annuler / rembourser la vente pour la tester à nouveau.
la source