2013-10-07 12 views
5

Androidアプリ内課金の払い戻し/キャンセルに時間がかかります

私のアプリ内でアプリ内課金を実装しようとしています。 Google Playデベロッパーコンソールでは、管理対象アイテムを宣言しました。このアイテムを購入すると、本当にうまく動作します。しかし、現在、Googleウォレットの販売センターで購入した商品を払い戻しまたはキャンセルすると、商品の所有期間が長くなっていることを認識するまでにアプリの処理に時間がかかります。

私は既にこの問題について多くの記事を読んでおり、その購入はGoogle Playストアのキャッシュに保存されるという論理的な説明があると思います。

キャッシュをクリアすることは可能ですか、購入した商品がそれ以上所有されていない場合は、誰にもアプリを教える方法は分かりますか? Dまた

、私のコードのアイテムを購入した場合、私は、頼む:

は、私は私がこの問題を解決するのに役立ちます任意のヒント、感謝です。アプリ内課金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; 
} 

答えて

1

IAP購入在庫がまったくPlayストアでキャッシュされていないとあなたの活動に定期的に照会する必要があります。注文の取り消しが伝播するのに約15-30分しかかかりません。

sample appでIABHelperを使用して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 
     } 
    } 
}; 
関連する問題