Не удалось получить метод API IAB API3 getSkuDetails () Google. 5: Ошибка разработчика

Я пытаюсь включить API-интерфейс Google для составления приложений Google в моем коде, который использует API2.

Мой вызов функции mHelper (объект IabHelper) завершается успешно, поэтому я подключаюсь к серверам Google. Похоже, что я могу определить принадлежащие вам предметы, так как мой QueryInventoryFinishedListener возвращает действительный инвентарь со всеми моими купленными предметами. Я также могу выполнить покупку.

Однако запрос на детали sku не удается (getSkuDetails ()). Вот весь вывод LogCat, связанный с IabHelper из Eclipse (я удалил имя своего пакета и SKU продукта), что привело к сбою:

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 

Это не похоже на проблему с подписью, так как я могу успешно подключиться и совершить покупку.

У кого-нибудь еще были проблемы, когда getSkuDetails () терпит неудачу с сообщением «Ошибка разработчика», а другие аспекты работы с биллингами в приложении?

Спасибо за ваше время!

Solutions Collecting From Web of "Не удалось получить метод API IAB API3 getSkuDetails () Google. 5: Ошибка разработчика"

Я испытал ту же проблему. Проблема возникает, если в вашем инвентаре содержится более 20 единиц кода.

Решение заключалось в том, чтобы получить детали SKU в кусках. Замените querySkuDetails в IabHelper.java на:

 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; } 

Этот метод получает SKU в кусках 18. Он работал для меня.

Количество SKU не всегда является причиной. Это также начало развиваться после того, как Google изменил способ работы в PlayStation Store.

Раньше нам приходилось загружать подписанный APK без его публикации.

Теперь есть разделы Beta и Alpha, где вы должны загружать подписанный APK и публиковать его для покупки приложений внутри приложения. Не забудьте добавить себя в список тестеров и правильно установить список бета-пользователей.