Quelles sont les possibilités pour obtenir ce code d'erreur 3 dans l'achat InApp?
j'utilise le code InApp V3 pour les achats In-app dans mon application , j'obtiens cette erreur BILLING_RESPONSE_RESULT_BILLING_UNAVAILABLE
et error value :3
quand le compte Google n'est pas disponible dans l'appareil. Je veux savoir est-il d'autres possibilités pour obtenir cette erreur, parce que quand je reçois cette erreur que j'ai besoin d'afficher un popup à l'utilisateur avec des données. Si cela provoque en raison du compte Google non disponible sur le périphérique, je vais afficher le dialogue avec le texte correspondant. c'est le code que j'utilise
mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
public void onIabSetupFinished(IabResult result) {
if (!result.isSuccess()) {
// error here
return;
}
}
});
c'est l'erreur Error checking for billing v3 support. (response: 3:Billing Unavailable)
7 réponses
comme nous pouvons le voir directement dans le code de la configuration de L'IabHElper de l'échantillon fourni par google, l'erreur signifie:
" service de facturation non disponible sur l'appareil."
comme vous pouvez lire ici cette erreur signifie
Billing API version is not supported for the type requested
il s'agit de la référence de facturation In-app (IAB Version 3), donc l'erreur signifie que le V3 IAB n'est pas installé sur appareil.
en fait cela signifie que l'Utilisateur a un compte google, et probablement aussi un service de facturation In-app, mais il n'a pas la dernière version. Cela se produit dans les vieux appareils, et où l'utilisateur ne met jamais rien à jour, il utilise pour être des appareils où vous pouvez voir l'ancienne application du marché au lieu de L'application de jeu.
donc l'erreur que vous devez montrer à l'utilisateur, et le test que vous devez effectuer n'est pas si le périphérique a un compte google, mais s'il a les services google play installés et correctement mis à jour.
mise à jour:
Si vous cherchez le code dans la bibliothèque SDK, et les classes d'assistance fourni par google, le seul endroit où nous pouvons trouver exactement dans la fonction que vous appelez: startSetup
de la IabHelper
classe
Intent serviceIntent = new Intent(
"com.android.vending.billing.InAppBillingService.BIND");
if (!mContext.getPackageManager().queryIntentServices(serviceIntent, 0)
.isEmpty()) {
// service available to handle that Intent
mContext.bindService(serviceIntent, mServiceConn,
Context.BIND_AUTO_CREATE);
} else {
// no service available to handle that Intent
mServiceConn=null;
if (listener != null) {
listener.onIabSetupFinished(new IabResult(
BILLING_RESPONSE_RESULT_BILLING_UNAVAILABLE,
"Billing service unavailable on device."));
}
}
cela signifie que l'application ne pouvait pas se connecter au service dans le dispositif, depuis le gestionnaire de paquets ne le sait même pas . C'est la seule option qui peut déclencher d'erreur. Et qu'est-ce qui signifie qu'il ne pouvait pas se connecter au service? Cela signifie que l'un de ces:
- le dispositif n'a pas le service installé.
- il a une ancienne version, puisque nous savons que les dernières versions de play store, utilise le V3 D'IAB.
ainsi, votre erreur seulement peut signifier un de ceci, que pour vous signifie que vous devez montrer un mesagge à l'utilisateur comme "Vous n'avez pas de google play installé, ou vous devez mettre à jour". Et il n'y a pas d'autres possibilités ou d'obtenir cette erreur.
mais, si vous voulez le rendre plus facile pour les utilisateurs, vous pouvez dire qu'ils ont besoin de mettre à jour L'application Google Play à la dernière version . Et qui fera tout fonctionne comme un charme.
cette erreur est également reçue après que l'Utilisateur a retiré son compte google de l'appareil.
possibilité majeure de votre numéro BILLING_RESPONSE_RESULT_BILLING_UNAVAILABLE
est que dans certains pays encore en Achat App N'est pas autorisé comme la Serbie et de nombreux pays.
donc tout utilisateur du pays où Google Play ne prend pas en charge L'achat de L'application, alors vous obtiendrez BILLING_RESPONSE_RESULT_BILLING_UNAVAILABLE
.
ce serait moins de chance que l'utilisateur n'ont pas mis à jour le service Google Play installé sur le téléphone donc ne vous inquiétez pas de ce cas.
Essayez cette hacks
supprimez le cache, les données et les mises à jour pour l'application play, redémarré l'application play à nouveau, il devrait fonctionner! ou essayez avec les dernières mises à jour (si elle est fixe)
pour information:
il suffit de garder à l'esprit:
-
IABv3 est intégré dans les services Google Play, il nécessite donc une mise à jour pour le Play apk.
-
V2 a été intégré dans le client Play store lui-même. Le problème cache / CLUF n'est pas spécifiquement lié à L'IAB, il est lié à la mise en place de jeu Services (et si tout va bien est inutile pour la plupart des utilisateurs, la partie cache de toute façon).
-
c'est une déception d'être dans cette période de transition où Play Services a d'être mis à jour avant que votre application peut en profiter, mais je pense la plupart des gens seraient d'accord que c'est mieux que d'attendre pour un OS mise.'
voir cette Réf: rapport de bogue , g+ post
parfois, si vous n'avez pas authentifié votre appareil avec Google account, peut recevoir cette erreur.
inscrivez-vous au magasin de jeux avec n'importe quel compte.
après la signature dans la facturation fonctionne même sur Android Studio émulateur.
pour ceux qui sont encore confrontés à ce problème, dans la plupart des cas iab n'est pas soutenu dans votre pays comme Williams a dit. Vous pouvez utiliser un VPN pour le faire fonctionner.