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
3) J'ai créé un produit d'abonnement
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
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 ??
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 :)
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:
"com.argonnetech.wordswriting.noads"
mais le produit intégré à l'application configuré dans la console Google Play Developer (GPD) s'appelait simplement "noads"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".
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...
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.
La plupart des solutions ci-dessus fonctionnent, mais pour ceux qui rencontrent toujours ce problème, essayez ceci:
Ci-dessous fonctionne pour moi:
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é.