2013-10-07 9 views
5

)Android In-App-rozliczenie zwrotu/anulowania trwa długo

Próbuję wdrożyć rozliczeń w aplikacji w mojej aplikacji. W Konsoli programisty Google Play zadeklarowałem zarządzany element. Kupowanie tego przedmiotu działa naprawdę dobrze. Ale teraz, gdy zwracam lub anuluję zakup w centrum handlowym Google Wallet, moja aplikacja zajmuje bardzo dużo czasu (więcej dni), aby rozpoznać, że przedmiot nie jest już własnością.

Przeczytałem już wiele innych artykułów na ten temat i uważam, że jednym logicznym wyjaśnieniem jest to, że zakup jest zapisany w pamięci podręcznej Sklepu Google Play. Chociaż wiem, że to pytanie często zadawano, proszę ponownie:

Czy można wyczyścić pamięć podręczną lub czy ktoś wie, jak powiedzieć mojej aplikacji, gdy zakup nie jest już własnością?

Jestem wdzięczny za wszelkie podpowiedzi, który pomaga mi rozwiązać ten problem: D

Ponadto, moim kodu, w którym pytam, czy przedmiot został zakupiony. Używam rozliczeń w aplikacji v3.

public boolean hasUserBoughtItem() { 

    try { 
     Bundle ownedItems = mService.getPurchases(mUsedAPI, mContext.getPackageName(), 
       mPurchaseType, null); 

     int response = ownedItems.getInt("RESPONSE_CODE"); 
     if(response == 0) { 
      ArrayList<String> ownedSkus = ownedItems.getStringArrayList("INAPP_PURCHASE_ITEM_LIST"); 

      if(!ownedSkus.isEmpty()) { 
       for(String sku : ownedSkus) { 

        if(sku.equals(Constants.ITEM_ID_ALL_RECIPES)) { 
         return true; 
        } 
       } 
      } 

      return false; 
     } 
    } catch(Exception e) { 
     e.printStackTrace(); 
    } 

    return false; 
} 

Odpowiedz

1

Zapasy zakupów zakupów w aplikacji nie są buforowane w Sklepie Play i powinny być regularnie sprawdzane w działaniach. Zniesienie zamówienia powinno zająć około 15-30 minut.

Czy korzystasz z IABHelper zgodnie z sample app, aby połączyć się z Google Play?

IabHelper.QueryInventoryFinishedListener mGotInventoryListener 
    = new IabHelper.QueryInventoryFinishedListener() { 
    public void onQueryInventoryFinished(IabResult result, 
     Inventory inventory) { 

     if (result.isFailure()) { 
     // handle error here 
     } 
     else { 
     // does the user have the premium upgrade? 
     mIsPremium = inventory.hasPurchase(SKU_PREMIUM);   
     // update UI accordingly 
     } 
    } 
}; 
Powiązane problemy