web-dev-qa-db-fra.com

Quelles sont les possibilités d'obtenir ce code d'erreur 3 lors de l'achat InApp?

J'utilise le code InApp V3 pour les achats intégrés dans mon application. Je reçois cette erreur BILLING_RESPONSE_RESULT_BILLING_UNAVAILABLE et error value :3 lorsque le compte Google n'est pas disponible sur l'appareil. Je veux savoir s'il existe d'autres possibilités pour obtenir cette erreur, car lorsque je reçois cette erreur, j'ai besoin de montrer un menu contextuel à l'utilisateur avec des données. Si cela est dû au fait que le compte Google n'est pas disponible sur l'appareil, je vais afficher la boîte de dialogue avec le texte associé. 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)

22

Comme on peut le voir directement dans le code de la configuration de l'IabHElper de l'échantillon fourni par google, l'erreur signifie:

"Service de facturation indisponible sur l'appareil."

Comme vous pouvez le 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 intégrée (version 3 d'IAB). Par conséquent, l'erreur signifie que l'IAB v3 n'est pas installé sur le périphérique. 

En réalité, cela signifie que l'utilisateur a un compte Google et probablement aussi un service de facturation intégré à l'application, mais il n'a pas la dernière version. Cela se produit dans les anciens appareils, et lorsque l'utilisateur ne met jamais à jour quoi que ce soit, il s'agit généralement d'appareils sur lesquels vous pouvez voir l'ancienne application Market au lieu de l'application Play. 

Ainsi, l'erreur que vous devez montrer à l'utilisateur et le test que vous devez effectuer ne concernent pas le périphérique qui dispose d'un compte Google, mais les services de Google Play installés et correctement mis à jour.

METTRE À JOUR:

Si vous recherchez le code dans tout le SDK de la bibliothèque et dans les classes d'assistance fournies par Google, il s'agit du seul endroit où l'on peut trouver exactement cela dans la fonction que vous appelez: la startSetup de la classe IabHelper

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 peut pas se connecter au service de l'appareil, puisque le gestionnaire de paquets ne le sait même pas. C’est la seule option qui puisse déclencher cette erreur. Et qu'est-ce qui signifie qu'il n'a pas pu se connecter au service? Cela signifie l'un de ceux-ci:

  • Le périphérique n'a pas le service installé.
  • Il a une ancienne version, car nous savons que les dernières versions de Play Store utilisent IAB v3.

Donc, votre erreur ne peut signifier qu'une chose, cela signifie pour vous que vous devez montrer un message à l'utilisateur du type "Vous n'avez pas installé les services de Google Play, ni mis à jour le logiciel". Et il n'y a pas d'autres possibilités ou obtenir cette erreur.

Toutefois, si vous souhaitez simplifier la tâche des utilisateurs, vous pouvez indiquer qu'ils doivent mettre à jour l'application Google Play vers la dernière version. Et cela fera que tout fonctionne comme un charme.

33
Carlos Robles

Cette erreur est également reçue lorsque l'utilisateur supprime son compte Google de l'appareil.

14
pareshgoel

La principale possibilité de votre problème BILLING_RESPONSE_RESULT_BILLING_UNAVAILABLE est que, dans certains pays, In App Purchase n'est pas autorisé comme la Serbie et de nombreux pays.

Ainsi, tout utilisateur du pays où Google Play ne prend pas en charge l'achat intégré, vous obtiendrez alors BILLING_RESPONSE_RESULT_BILLING_UNAVAILABLE.

Cela aurait moins de chance que l'utilisateur n'ait pas mis à jour le service Google Play sur le téléphone, alors ne vous inquiétez pas pour ce cas.

5
N Sharma

Connectez-vous au Play Store avec n'importe quel compte.

Une fois connecté, la facturation fonctionne même sur Android Studio Emulator.

3
Babken Vardanyan

Essayez ces hacks 

Supprimer le cache, les données et les mises à jour pour l'application de lecture, redémarrez l'application de lecture à nouveau, cela devrait fonctionner! ou essayez avec les dernières mises à jour (si cela est corrigé)

FYI:

Gardez juste à l'esprit:

  • IABv3 étant intégré aux services Google Play, une mise à jour de The Play Services apk est nécessaire.

  • La V2 a été intégrée au client Play Store lui-même. Le problème de cache/CLUF N’est pas spécifiquement lié à IAB, mais à la configuration de PlayServices (et est, espérons-le, inutile pour la plupart des utilisateurs, la partie cache De toute façon).

  • Il est décevant de se trouver dans cette période de transition au cours de laquelle Play Services doit être mis à jour avant que votre application ne puisse en tirer parti, mais je pense que la plupart des gens s'accordent pour dire qu'il vaut mieux attendre que d'avoir un système d'exploitation '

Voir cette ref: rapport de bug , G + post

2
LOG_TAG

Parfois, si vous n'avez pas authentifié votre appareil avec un compte Google, peut recevoir cette erreur.

1
User2364902

Comme le dit Williams, dans votre pays, iab n’est pas pris en charge dans votre pays. Vous pouvez utiliser un VPN pour le faire fonctionner.

0
Drilon Blakqori