2013-05-11 90 views
11

我已经成功实现了应用程序结算到我的应用程序,这一切工作正常。我现在试图检索项目的价格(在开发者控制台中设置),以便我可以在不使用硬编码值的情况下在应用内反映这些价格。在应用程序结算getPrice()Android

此代码很明显只收集物品的价格已通过这不是库存购买什么我在寻找:

SkuDetails gasDetails = inventory.getSkuDetails(SKU_FULL);  

      if (gasDetails != null){ 
       alert("Gas is " + gasDetails.getPrice());} 

我看过一个在docs可以转让,但苦苦查询项目明白它。我会认为助手类会实施某种获取价格的方法。

所以,我的问题:任何人都可以指向正确的方向吗?

回答

4

好的,我找到了解决方案。我破译了开发人员文档,看起来有错误。

这是内IabHelper创建我的解决方案:

public String getPricesDev(String packageName) throws RemoteException, JSONException{ 


     ArrayList<String> skuList = new ArrayList<String>(); 
     skuList.add("full.discount.fetch"); 
     skuList.add("gas"); 
    Bundle querySkus = new Bundle(); 
    querySkus.putStringArrayList("ITEM_ID_LIST", skuList); 

    Bundle skuDetails = mService.getSkuDetails(3,packageName, "inapp", querySkus); 


    int response = skuDetails.getInt("RESPONSE_CODE"); 
    if (response == 0) { 
     ArrayList<String> responseList 
      = skuDetails.getStringArrayList("DETAILS_LIST"); 

     for (String thisResponse : responseList) { 
      JSONObject object = new JSONObject(thisResponse); 
      String sku = object.getString("productId"); 
      String price = object.getString("price"); 

      if(sku.contains("full.discount.fetch")) return price; 

     } 
    } 
    return "Not found"; 


} 
9

如果您使用的是谷歌的“TrivialDrive”样本中提出的实现,你可以检索所有SKU的信息(即使他们没有购买)通过传递真实的PARAMATERS“详细信息”和“moreSkus”在查询库存的方法

/** 
* Queries the inventory. This will query all owned items from the server, as well as 
* information on additional skus, if specified. This method may block or take long to execute. 
* Do not call from a UI thread. For that, use the non-blocking version {@link #refreshInventoryAsync}. 
* 
* @param querySkuDetails if true, SKU details (price, description, etc) will be queried as well 
*  as purchase information. 
* @param moreItemSkus additional PRODUCT skus to query information on, regardless of ownership. 
*  Ignored if null or if querySkuDetails is false. 
* @param moreSubsSkus additional SUBSCRIPTIONS skus to query information on, regardless of ownership. 
*  Ignored if null or if querySkuDetails is false. 
* @throws IabException if a problem occurs while refreshing the inventory. 
*/ 
public Inventory queryInventory(boolean querySkuDetails, List<String> moreItemSkus, 
            List<String> moreSubsSkus) throws IabException {