Android InApp Billing v3 – тестирование с использованием нескольких устройств

Я столкнулся с одной проблемой на Android InApp billing v3. Я создал управляемый продукт inapp в playstore, и мне нужно купить его несколько раз с нескольких устройств. Для этого я тестирую приложение на двух разных устройствах. Я не храню данные о покупке на локальном сервере. Поэтому всякий раз, когда мне нужно снова купить этот элемент, я попрошу элемент, чтобы получить статус покупки, и на основе этого, если купленный товар я куплю, и снова вызову функцию покупки. Я подробно описываю свой сценарий ошибок ниже

  1. На первых устройствах я сделал с оплатой, и я получил результат успеха.
  2. На этом же устройстве, если я запрашиваю детали покупки, он даст точную информацию.
  3. В то же время, если я запрошу на втором устройстве . Его дает inventory.hasPurchase(sku) как false и inventory.getPurchase(sku) как null .

В то время как googling, я обнаружил, что это связано с кешем Google PlayStore и всеми. После этого, очистка кеша вручную, я получаю результат, как ожидалось. Может ли кто-нибудь помочь мне по вышеупомянутой проблеме.

 IabHelper.QueryInventoryFinishedListener mGotInventoryListener = new IabHelper.QueryInventoryFinishedListener() { public void onQueryInventoryFinished(IabResult result, Inventory inventory) { if (result.isFailure()) { invokePurchaseError(ResponseCode.FAILED_TO_QUERY_INVENTORY, result.toString()); } else{ if(mActionCode == RC_REQUEST_FOR_QUERYING){ boolean mIsPurchased = false; Log.e("hasPurchase", inventory.hasPurchase(mSku)+""); Log.e("getPurchase", inventory.getPurchase(mSku)+""); if( inventory.hasPurchase(mSku)){ mPurchaseStatus = inventory.getPurchase(mSku); mIsPurchased = (mPurchaseStatus != null && verifyDeveloperPayload(mPurchaseStatus)); if(mPurchaseStatus!=null){ mPurchaseStatus.getOriginalJson()); } else{ //Not purchased } } } } }; 

У меня была та же проблема: купил управляемый элемент на первом устройстве, но второй и третий из них, похоже, не «знали» об этом. Для меня решение было простым, хотя: в качестве первого шага я очистил PlayStore-кеши на всех задействованных устройствах (не уверен, что это было необходимо, хотя ..) Во-вторых, я снова купил элемент на первом устройстве, но снова другие Чтобы не получить информацию. Я отдал всю «систему» ​​некоторое время (около 10-15 минут) и выполнил повторную проверку на устройстве 2 и 3. И … о, чудо! – они наконец получили правильную hasPurchase = true информацию.