Android InApp Billing v3 - 测试多个设备问题

时间:2014-11-10 08:01:10

标签: android in-app-purchase in-app-billing

我在Android InApp计费v3上面临一个问题。我在playstore中创建了一个托管的inapp产品,我需要从多个设备上多次购买。为此,我正在两个不同的设备上测试应用程序。我没有在本地服务器上保留任何购买数据。因此,每当我需要再次购买该项目时,我将查询该项目以获得购买状态,并且如果该项目被购买,我将使用该项目并将再次调用购买功能。我正在详细说明我的错误情况

  1. 第一台设备上,我已完成付款,我获得了成功结果。
  2. 如果我查询购买详情,请在同一设备上,它会提供确切的信息。
  3. 同时如果我在第二台设备上查询。它将inventory.hasPurchase(sku)设为 false ,将inventory.getPurchase(sku)设为 null
  4. 谷歌搜索时,我发现这与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
                            }
    
                        }
    
                    }
            }
        };
    

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题:在第一台设备上购买了托管项目,但第二台和第三台设备上的托管项目似乎没有#34;知道"关于它。对我来说,解决方案很简单,但: 作为第一步,我清除了所有相关设备上的PlayStore缓存(虽然不确定它是否必要) 其次,我在第一台设备上再次购买了这个项目,但是其他设备似乎都无法获取信息。我给了整个"系统"一段时间(大约10-15分钟)并对设备2和3进行了重新检查。而且 - 太奇怪了! - 他们终于得到了正确的hasPurchase = true信息。