2015-03-25 142 views
1

我在应用功能在我app.Currently使用API​​ 3用于测试目的我使用检查项目编码的Android应用程序内购买API 3消耗测试购买

android.test.purchased

一切工作正常,我可以购买产品。但如果我再次点击“购买”按钮,它说“已购买”,并需要30分钟,让用户再次购买。然后我试图使用下面的代码使用此产品但是如果(result.isFailure)条件成立,它会在QueryInventoryFinishedListener's之内结束。以下是我的代码

public void consumeItem() { 
     mHelper.queryInventoryAsync(mReceivedInventoryListener); 

    } 

    IabHelper.QueryInventoryFinishedListener mReceivedInventoryListener = new IabHelper.QueryInventoryFinishedListener() { 
     public void onQueryInventoryFinished(IabResult result, 
       Inventory inventory) { 


      if (result.isFailure()) { 
       // Handle failure 

       Log.i("Ajji", "Failed in Query Inventory Finished Listener"); 

      } else { 
       mHelper.consumeAsync(inventory.getPurchase(ITEM_SKU), 
         mConsumeFinishedListener); 

      } 
     } 
    }; 

    IabHelper.OnConsumeFinishedListener mConsumeFinishedListener = new IabHelper.OnConsumeFinishedListener() { 
     public void onConsumeFinished(Purchase purchase, IabResult result) { 

      if (result.isSuccess()) { 
       // clickButton.setEnabled(true); 

       Log.i("Ajji", "Item Consumed Successfully"); 
       rowPayment.setClickable(true); 

      } else { 
       // handle error 
       Log.i("Ajji", "Not Consumed"); 
      } 
     } 
    }; 

我把这种方法用于消费项目,而且我使用谷歌的Trivial Drive样本项目来拨打电话

回答

1

我得到了解决谢谢,我需要编辑从平凡驱动项目的security.java文件。我将verifyPurchase方法中的“return false”行更改为“return true”(不要忘记它仅适用于调试模式)。现在我可以在app中成功使用测试。以下是验证购买方法的编辑

public static boolean verifyPurchase(String base64PublicKey, 
     String signedData, String signature) { 
    if (TextUtils.isEmpty(signedData) || TextUtils.isEmpty(base64PublicKey) 
      || TextUtils.isEmpty(signature)) { 
     Log.e(TAG, "Purchase verification failed: missing data."); 
     if (BuildConfig.DEBUG) { 
      return true; 
     } 
     return false; 
    } 

    PublicKey key = Security.generatePublicKey(base64PublicKey); 
    return Security.verify(key, signedData, signature); 
}