IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Achat in app


Sujet :

Android

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2012
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 129
    Points : 144
    Points
    144
    Par défaut Achat in app
    Bonjour,

    Je travaille actuellement sur l'achat in app dans mon application, lorsque celle-ci se lance j'ai toujours le code d'erreur querying owned items response -1003 signature verification failed lorsque j'arrive dans la méthode IabHelper.QueryInventoryFinishedListener.

    J'utilise pour le moment la version exemple de Google "Trivial Drive", je suppose que ma signature est correcte car j'arrive bien à acheter lorsque j'utilise android.app.purchassed...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
     
            // load game data
            loadData();
     
            String base64EncodedPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkpZ8ZixFTfPIkSVE4tWWJGek0C2NM5c/3dAI3w4KM4jSUjoPDGYpEsuoysQcoKFdkdkTG2X4iEkwxgRfPARMgBJyDSoDsHQk/b8rvPfEeP4yPNvP6r4J90ZXJaQfebqkQHsgyKHYXrPzzeor6sxnWmXPF7HqD10aGqu9l6bFQORK/lnMCZu4uZjfucb71qwsvNnQDHTS5+2sfvMwO1omrl83Z9oJCz90g564VAVEOZCS4rR4mQMf0RXpITgcstAlYzuj+XmLlOhqhyJKSJmqnpRoLgYbh2W4plG6yhH+3uw20VfVZkfih838NrM0mPSiwuIpcbKDxA5+0cnBPo8/vQIDAQAB";
            PublicKey key = Security.generatePublicKey(base64EncodedPublicKey);
            // Create the helper, passing it our context and the public key to verify signatures with
            Log.d(TAG, "Creating IAB helper.");
            mHelper = new IabHelper(this, base64EncodedPublicKey);
     
            // enable debug logging (for a production application, you should set this to false).
            mHelper.enableDebugLogging(true);
     
            // Start setup. This is asynchronous and the specified listener
            // will be called once setup completes.
            Log.d(TAG, "Starting setup.");
            mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
                public void onIabSetupFinished(IabResult result) {
                    Log.d(TAG, "Setup finished.");
     
                    if (!result.isSuccess()) {
                        // Oh noes, there was a problem.
                        complain("Problem setting up in-app billing: " + result);
                        return;
                    }
     
                    // Have we been disposed of in the meantime? If so, quit.
                    if (mHelper == null) return;
     
                    // IAB is fully set up. Now, let's get an inventory of stuff we own.
                    Log.d(TAG, "Setup successful. Querying inventory.");
                    mHelper.queryInventoryAsync(mGotInventoryListener);
                }
            });
        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
     
    // Listener that's called when we finish querying the items and subscriptions we own
        IabHelper.QueryInventoryFinishedListener mGotInventoryListener = new IabHelper.QueryInventoryFinishedListener() {
            public void onQueryInventoryFinished(IabResult result, Inventory inventory) {
                Log.d(TAG, "Query inventory finished.");
     
                // Have we been disposed of in the meantime? If so, quit.
                if (mHelper == null) return;
     
                // Is it a failure?
                if (result.isFailure()) {
                    complain("Failed to query inventory: " + result);
                    return;
                }
     
                Log.d(TAG, "Query inventory was successful.");
     
                /*
                 * Check for items we own. Notice that for each purchase, we check
                 * the developer payload to see if it's correct! See
                 * verifyDeveloperPayload().
                 */
                if(inventory.hasPurchase(SKU_GAS))
                {
                    Toast.makeText(getApplicationContext(),"PREMIUM",Toast.LENGTH_SHORT).show();
                }else{
                    Toast.makeText(getApplicationContext(),"NOT PREMIUM", Toast.LENGTH_SHORT).show();
                }
     
     
                // Do we have the premium upgrade?
                Purchase premiumPurchase = inventory.getPurchase(SKU_PREMIUM);
                mIsPremium = (premiumPurchase != null && verifyDeveloperPayload(premiumPurchase));
                Log.d(TAG, "User is " + (mIsPremium ? "PREMIUM" : "NOT PREMIUM"));
     
                // Do we have the infinite gas plan?
                Purchase infiniteGasPurchase = inventory.getPurchase(SKU_INFINITE_GAS);
                mSubscribedToInfiniteGas = (infiniteGasPurchase != null && verifyDeveloperPayload(infiniteGasPurchase));
                Log.d(TAG, "User " + (mSubscribedToInfiniteGas ? "HAS" : "DOES NOT HAVE")
                            + " infinite gas subscription.");
                if (mSubscribedToInfiniteGas) mTank = TANK_MAX;
     
                // Check for gas delivery -- if we own gas, we should fill up the tank immediately
                Purchase gasPurchase = inventory.getPurchase(SKU_GAS);
                if (gasPurchase != null && verifyDeveloperPayload(gasPurchase)) {
                    Log.d(TAG, "We have gas. Consuming it.");
                    mHelper.consumeAsync(inventory.getPurchase(SKU_GAS), mConsumeFinishedListener);
                    return;
                }
     
                updateUi();
                setWaitScreen(false);
                Log.d(TAG, "Initial inventory query finished; enabling main UI.");
            }
        };
    Avez-vous déjà eu le souci ? Je vois pas d'issue pour ce bug une aide de votre part sera appréciable. Merci

    Cordialement,

  2. #2
    Membre confirmé
    Homme Profil pro
    Fondateur
    Inscrit en
    Octobre 2002
    Messages
    445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Fondateur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2002
    Messages : 445
    Points : 503
    Points
    503
    Par défaut
    Bonjour,

    A priori, ton erreur provient d'un problème de clé. As-tu bien copier/coller la clé publique affichée dans la console d'admin du Play Store ?

    Sylvain
    Développeur Java / Android.
    The Truth About Bitcoin : https://www.the-truth-about-bitcoin.com/
    In Bitcoin We Trust : https://inbitcoinwetrust.substack.com
    Retrouvez mes Apps Android : https://play.google.com/store/apps/d...01024188312025
    Tout sur le Bitcoin, la Blockchain et les Altcoins : https://www.toutsurlebitcoin.fr
    Devenez une meilleure de vous-même jour après jour : https://www.jedeviensmeilleur.fr

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2012
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 129
    Points : 144
    Points
    144
    Par défaut
    Bonjour,

    Merci pour ta réponse. La clé me semble correcte car lorsque je clique comme pour acheter un produit ça m'indique que l'éditeur ne peut acheter le produit ce qui est normal en soi ( Si je mets n'importe quoi, j'ai une autre erreur comme quoi le produit n'existe pas) . Par contre, j'ai la même erreur lorsque je mets le produit test "android.test.purchasse" alors que je devrait pouvoir tester avec ça.

    J'ai fait un achat avec android.test.purchasse et là j'arrive pas à le rénitialiser si tu as déjà réussi je suis preneur.

Discussions similaires

  1. Sécurité achat in App
    Par sylflo dans le forum Android
    Réponses: 19
    Dernier message: 03/02/2015, 16h34
  2. Achat in app android.test.purchased
    Par sylflo dans le forum Android
    Réponses: 0
    Dernier message: 24/01/2015, 17h27
  3. Réponses: 36
    Dernier message: 11/12/2014, 17h28
  4. iOS : Apple teste des codes promo pour les achats in-app
    Par Stéphane le calme dans le forum Actualités
    Réponses: 0
    Dernier message: 16/05/2014, 14h53
  5. Google Wallet/Achats in-app, qu'en est-il ?
    Par Manu0086 dans le forum Android
    Réponses: 2
    Dernier message: 23/01/2014, 17h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo