2013-10-07 12 views
5

)Android rimborso in-app-Billing/annullare richiede molto

Sto cercando di implementare in-app-billing nel mio app. Nella Console per gli sviluppatori di Google Play ho dichiarato un elemento gestito. L'acquisto di questo oggetto funziona davvero bene. Ma ora, quando rimborso o annullo l'acquisto nel centro commerciale di Google Wallet, la mia app impiega molto tempo (più giorni) per riconoscere che l'oggetto non è più di proprietà.

Ho già letto molti altri articoli su questo problema e penso che una spiegazione logica è che l'acquisto viene salvato nella cache del Google Play Store. Anche se so che questa domanda mi è stata posta spesso, ti chiedo di nuovo:

E 'possibile svuotare la cache o qualcuno sa come dire alla mia app, quando l'acquisto non è più di proprietà?

Sono grato per qualsiasi suggerimento, che mi aiuta a risolvere questo problema: D

Inoltre, il mio codice in cui chiedo, se l'oggetto viene acquistato. Uso la fatturazione in-app 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; 
} 

risposta

1

L'acquisto di inventario IAP non viene memorizzato nella cache dal Play Store a tutti e dovrebbe essere interrogato regolarmente nelle vostre attività. Dovrebbero essere necessari solo circa 15-30 minuti per propagare gli annullamenti degli ordini.

Si sta utilizzando l'IABHelper come da sample app per connettersi a 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 
     } 
    } 
}; 
Problemi correlati