Google IAB API3 getSkuDetails () Methode returns fehlgeschlagen 5: Entwicklerfehler

Ich versuche, die Google-In-App-Billing-API3 in meinem Code zu integrieren, der API2 verwendet hat.

Mein Anruf an mHelper (das IabHelper-Objekt) gelingt, also bin ich mit den Google-Servern verbunden. Es scheint, dass ich eigene Artikel bestimmen kann, da mein QueryInventoryFinishedListener ein gültiges Inventar mit allen gekauften Artikeln zurückgibt. Ich bin auch in der Lage, einen Kauf auszuführen.

  • Wie man Daten von der Aktivität zum Fragment übergibt
  • Gridview-Show nach der tatsächlichen Höhe innerhalb der Scroll-Ansicht
  • Verwenden von Repo mit Msysgit
  • Die Gegenstände konnten nicht gedrückt werden. In android
  • Wie überprüfe ich alle laufenden Dienste in Android?
  • Android - beim Verlassen eines WebViews wird das Audio immer noch gespielt
  • Allerdings schlägt die Abfrage für sku Details fehl (getSkuDetails ()). Hier ist alles IabHelper-bezogene LogCat-Ausgabe von Eclipse (ich habe meinen Paketnamen und Produkt-SKUs entfernt), was zum Fehler führt:

    12-31 11:47:04.642: D/IabHelper(13633): Starting in-app billing setup. 12-31 11:47:04.832: D/IabHelper(13633): Billing service connected. 12-31 11:47:04.832: D/IabHelper(13633): Checking for in-app billing 3 support. 12-31 11:47:04.832: D/IabHelper(13633): In-app billing version 3 supported for com.XXXX.XXXX 12-31 11:47:04.832: D/IabHelper(13633): Subscriptions AVAILABLE. 12-31 11:47:04.842: D/IabHelper(13633): Starting async operation: refresh inventory 12-31 11:47:04.842: D/IabHelper(13633): Querying owned items, item type: inapp 12-31 11:47:04.842: D/IabHelper(13633): Package name: com.XXXX.XXXX 12-31 11:47:04.842: D/IabHelper(13633): Calling getPurchases with continuation token: null 12-31 11:47:04.912: D/IabHelper(13633): Owned items response: 0 12-31 11:47:04.912: D/IabHelper(13633): Sku is owned: com.XXXX.XXXX.item_one 12-31 11:47:04.922: D/IabHelper(13633): Sku is owned: com.XXXX.XXXX.item_two ... (and 45 other items) ... 12-31 11:47:05.012: D/IabHelper(13633): Continuation token: null 12-31 11:47:05.012: D/IabHelper(13633): Querying SKU details. 12-31 11:47:05.012: D/IabHelper(13633): getSkuDetails() failed: 5:Developer Error 12-31 11:47:05.012: D/IabHelper(13633): Ending async operation: refresh inventory 

    Es scheint nicht wie ein Signierproblem, da ich erfolgreich eine Verbindung herstellen und einen Kauf tätigen kann.

    Hat jemand anderes Probleme, bei denen getSkuDetails () mit der "Developer Error" -Nachricht fehlschlägt, während andere Aspekte der In-App-Billing-Arbeit?

    Dank für Ihre Zeit!

  • Xamarin: Vergleich mit nativen SDK- und JS-basierten Frameworks
  • Wie kann ich den Mime-Typ einer Datei mit seinem Uri bekommen?
  • Wie kann ich einen Keystore erstellen?
  • BitmapFactory.decodeStream, der null zurückgibt, wenn Optionen gesetzt sind
  • Drehen eines ImageViews wie ein Kompass (mit dem "Nordpol" anderswo)
  • Wie bekomme ich Android Studio, um die Datei als Quelle zu erkennen (Test)
  • 2 Solutions collect form web for “Google IAB API3 getSkuDetails () Methode returns fehlgeschlagen 5: Entwicklerfehler”

    Ich habe das gleiche Problem erlebt. Das Problem tritt auf, wenn Sie mehr als 20 SKUs in Ihrem Inventar haben.

    Die Lösung war, die SKU Details in Stücke zu bekommen. Ersetzen Sie querySkuDetails in IabHelper.java mit:

     int querySkuDetails(String itemType, Inventory inv, List<String> moreSkus) throws RemoteException, JSONException { logDebug("Querying SKU details."); ArrayList<String> skuList = new ArrayList<String>(); skuList.addAll(inv.getAllOwnedSkus(itemType)); if (moreSkus != null) { for (String sku : moreSkus) { if (!skuList.contains(sku)) { skuList.add(sku); } } } if (skuList.size() == 0) { logDebug("queryPrices: nothing to do because there are no SKUs."); return BILLING_RESPONSE_RESULT_OK; } while (skuList.size() > 0) { ArrayList<String> skuSubList = new ArrayList<String>( skuList.subList(0, Math.min(19, skuList.size()))); skuList.removeAll(skuSubList); Bundle querySkus = new Bundle(); querySkus.putStringArrayList(GET_SKU_DETAILS_ITEM_LIST, skuSubList); Bundle skuDetails = mService.getSkuDetails(3, mContext.getPackageName(), itemType, querySkus); if (!skuDetails.containsKey(RESPONSE_GET_SKU_DETAILS_LIST)) { int response = getResponseCodeFromBundle(skuDetails); if (response != BILLING_RESPONSE_RESULT_OK) { logDebug("getSkuDetails() failed: " + getResponseDesc(response)); return response; } else { logError("getSkuDetails() returned a bundle with neither an error nor a detail list."); return IABHELPER_BAD_RESPONSE; } } ArrayList<String> responseList = skuDetails .getStringArrayList(RESPONSE_GET_SKU_DETAILS_LIST); for (String thisResponse : responseList) { SkuDetails d = new SkuDetails(itemType, thisResponse); logDebug("Got sku details: " + d); inv.addSkuDetails(d); } } return BILLING_RESPONSE_RESULT_OK; } 

    Diese Methode bekommt die SKUs in Stücke von 18. Es hat für mich gearbeitet.

    Die Anzahl der SKUs ist nicht immer der Grund. Dies begann auch, nachdem Google die Art und Weise verändert hat, wie die Dinge auf dem Developer Play Store funktionieren.

    Vorher mussten wir nur signierte APK hochladen, ohne es zu veröffentlichen.

    Jetzt gibt es Abschnitte Beta und Alpha, wo Sie haben, um signierte APK hochzuladen und zu veröffentlichen, um Benutzer in-App-Kauf zu haben. Vergessen Sie nicht, sich der Testerliste hinzuzufügen und ordnungsgemäß eine Liste der Beta-Benutzer einzustellen.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.