【发布时间】:2014-11-10 08:01:09
【问题描述】:
我在 Android InApp 计费 v3 上遇到了一个问题。我在 Playstore 中创建了一个托管的应用内产品,我需要从多个设备多次购买。为此,我正在两种不同的设备上测试该应用程序。我没有在本地服务器上保留任何购买数据。因此,每当我需要再次购买该商品时,我都会查询该商品以获取购买状态,并基于此,如果该商品已购买,我将使用该商品并再次调用购买功能。我在下面详细说明我的错误场景
- 在第一台设备上,我已完成付款并获得了成功的结果。
- 如果我在同一台设备上查询购买详情,它会提供准确的信息。
- 如果我在第二台设备上查询,同时。它给出了
inventory.hasPurchase(sku)为 false 和inventory.getPurchase(sku)为 null。
在谷歌搜索时,我发现这与 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
}
}
}
}
};
【问题讨论】:
-
您找到解决方案了吗?
-
同样的问题,有解决办法吗?
标签: android in-app-purchase in-app-billing