)
我正在尝试在我的应用中实施应用内结算功能。在Google Play开发者控制台中,我声明了一个托管项目。买这个项目真的很好。但现在,当我在谷歌钱包商家中心退款或取消购买时,我的应用程序需要很长时间(更多天)来识别该商品不再拥有。
我已经阅读了很多关于此问题的其他文章,并认为一个合乎逻辑的解释是购买会保存在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;
}
答案 0 :(得分:1)
Play商店根本不会缓存IAP购买广告资源,应在您的活动中定期查询。它只需要大约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
}
}
};