web-dev-qa-db-fra.com

facturation dans l'application Android l'authentification de retour est requise lorsque vous essayez de vous abonner au produit

C'est la première fois que je traite avec la facturation via l'application dans Android 1) J'utilise l'API v3 2) J'ai téléchargé une version alpha de mon application pour pouvoir tester ensuite

enter image description here

3) J'ai créé un produit d'abonnement

enter image description here

4) Voici mon code pour m'inscrire dans le produit

mSubscribeButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            try {

                Bundle subscribeIntentBundle = mService.getBuyIntent(3, getPackageName(), "my_product_id", "subs", "bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ");
                PendingIntent pendingIntent = subscribeIntentBundle.getParcelable("BUY_INTENT");

                if (subscribeIntentBundle.getInt("RESPONSE_CODE") == 0) {

                    startIntentSenderForResult(pendingIntent.getIntentSender(), 4002, new Intent(), Integer.valueOf(0), Integer.valueOf(0), Integer.valueOf(0));
                } else {
                    Toast.makeText(MainActivity.this, "Error Code: " + subscribeIntentBundle.getInt("RESPONSE_CODE"), Toast.LENGTH_SHORT).show();
                }
            } catch (RemoteException e) {
                e.printStackTrace();
            } catch (SendIntentException e) {
                e.printStackTrace();
            }
        }
    });

5) J'obtiens l'erreur suivante

enter image description here

  • J'ai essayé d'utiliser différents appareils et j'ai tous la même erreur, je suis également connecté avec mon compte Google et je peux ouvrir Google Play Store et voir mes applications

  • J'ai également essayé d'effacer les données de Google Play Store du gestionnaire d'applications

Quelqu'un peut-il aider s'il vous plaît ??

45

J'ai le même problème précédemment. Accédez à votre console de développeur Google et assurez-vous que votre application est PUBLIÉE vers n'importe quelle version (alpha, bêta ou prod). Ensuite, l'achat dans l'application fonctionnera :)

40
mmw5610

Vous avez le même problème avec un message terrible:

Une authentification est requise. Vous devez vous connecter à votre compte Google.

Il y avait deux problèmes pour moi:

  1. J'ai essayé d'acheter un produit dans mon code avec l'identifiant "com.argonnetech.wordswriting.noads" mais le produit intégré à l'application configuré dans la console Google Play Developer (GPD) s'appelait simplement "noads"
  2. Après avoir changé le nom du produit intégré à l'application dans la console GPD, j'ai dû le mettre en mode "Actif"

Cela a fonctionné. Le message d'erreur est trompeur, une erreur telle que "l'élément d'application n'existe pas serait préférable".

19
a.dibacco

Les développeurs Android testant le compte d'achat dans l'application doivent suivre ces clés.

Base64EncodedPublicKey

// Test de base64EncodedPublicKey

public static final String base64EncodedPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCg" +
 "KCAQEAhNe2XQ70DceAwE6uyYJGK1dIBbZcPdlER/9EEzylr6RDU6tnGj0Tk7kceN03GKvRf/ucT+ERLL3O" +
 "aHR22PXRXLZ17NZ81x6oS2vGmLyXBnjrU/I+asl8cNuLGySaoCdXxPAV+A9g6OG13dk+KY9i0O1roGpFH" +
 "fsAFyKCgSqR0PMJZ1bS+wFFBYf3M4IxgBcxuuZKDmR+MztCgm5N4zc6w2CwFZn3mXeDoTg15mWDU3sZO" +
 "WeRwFeynhV+FCYdDp8DpAkLk1b5IiXYFQ53wxCh/GxiKqBB6uQMmAixFjAcZV1QWfcBABae9vxiV5" +
 "VAEJvOOnhPxnaT9HYadW0pQ/UbJwIDAQAB";

Et l'article acheté la clé comme ça

ITEM_PURCHASED

// Test ITEM_PURCHASED

public static final String ITEM_PURCHASED = "Android.test.purchased";

Et à partir de mettre ce code onCreate () à l'initialisation IabHelper classe pour achat in-app,

IabHelper helper = new IabHelper(this, Constants.base64EncodedPublicKey);
helper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
        public void onIabSetupFinished(IabResult result) {
            if (!result.isSuccess()) {
                Log.d("#InAppStartSetup#", "In-app Billing setup failed: " + result);
            } else {
                Log.d("#InAppStartSetup#", "In-app Billing setup successful.");
            }
        }
    });

Et enfin acheté du temps sur cette poignée de code ici,

helper.launchPurchaseFlow(YOUR_ACTIVITY, Constants.ITEM_PURCHASED,
                YOUR_REQUEST_CODE, mPurchaseFinishedListener, "");

Merci les gars...

6
Najib Ahmed Puthawala

La documentation sur developer.Android.com semble obsolète.

Si vous souhaitez tester votre facturation in-app sans la publier, vous devez créer un groupe google et ajouter une liste alpha de testeurs. Voir ici: https://support.google.com/googleplay/Android-developer/answer/3131213?hl=en

[~ # ~] mise à jour [~ # ~]

À la mi-2015, cela n'est plus nécessaire. Vous disposez de plusieurs nouvelles options de test dans la console des développeurs google play.

2
lenooh

La plupart des solutions ci-dessus fonctionnent, mais pour ceux qui rencontrent toujours ce problème, essayez ceci:

  • Dans Android Studio signez votre application avec la clé de version (cela créera un app-release.apk fichier)
  • Ensuite ASSURE-TOI vous l'installez sur votre appareil physique en utilisant chemin d'installation adb/vers/votre/app-release.apk (PAS via Alpha/Beta)

screenshot


2
herveweb

Ci-dessous fonctionne pour moi:

  • Téléchargez le projet d'application sous forme alpha ou bêta avec un code de version.
  • Connectez-vous sur l'appareil avec un compte abonné actif.
  • Installez l'application signée sur cet appareil avec la même version que dans la version alpha/bêta.
1
Shanki Bansal

Dans mon cas, les versionCode, versionName et applicationId n'étaient pas synchronisés avec la version actuelle de l'application sur la console du développeur. J'ai changé ces derniers dans le fichier build.gradle. Ils étaient différents parce que j'ai réécrit l'application dans Android studio d'Eclipse. Après cela, la facturation dans l'application a fonctionné.

1
Pete