2011-04-04 81 views
22

在实际显示应用内购买的Android市场前端之前,如何检索应用内结算项目的价格?目前,用户只能在购买对话框中找到应用内商品的价格,并且我希望避免将价格存储在应用中,以支持所有支持的货币。Android应用内结算项目价格

回答

16

现在可以使用Billing API v3。您可以通过getSkuDetails()方法获取信息。例子是here

ArrayList skuList = new ArrayList(); 
skuList.add("premiumUpgrade"); 
skuList.add("gas"); 
Bundle querySkus = new Bundle(); 
querySkus.putStringArrayList(“ITEM_ID_LIST”, skuList); 

Bundle skuDetails = mService.getSkuDetails(3, getPackageName(), “inapp”, querySkus); 

int response = skuDetails.getInt("RESPONSE_CODE"); 
if (response == 0) { 
    ArrayList 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.equals(“premiumUpgrade”)) { 
      mPremiumUpgradePrice = price; 
     } else if (sku.equals(“gas”)) { 
      mGasPrice = price; 
     } 
    } 
} 
+0

我能有这方面的信息官方证实? – 2011-12-13 15:30:25

+0

@SergeyGlotov不,不是,这是对“我能否对此信息进行官方确认?”的回复。为VitoShadow问题,而不是你的答案是100%正确的。我为我的误会道歉。 – EvilDuck 2012-02-08 08:27:46

16

如果您使用Trivial Drive示例并包含IabHelper类,则需要将skus列表传递给queryInventoryAsync。

String[] moreSkus = {"SKU_ITEMONE", "SKU_ITEMTWO"}; 
    mHelper.queryInventoryAsync(true, Arrays.asList(moreSkus), mGotInventoryListener); 
+0

谢谢!它有很大的帮助 – vincentp 2014-11-06 07:29:48

+5

然后在'mGotInventoryListener'通过'String price = inventory.getSkuDetails(“SKU_ITEMONE”)。getPrice()获得价格;'@CíceroMoura说 – remi 2015-08-03 16:01:01

3
String price = inventory.getSkuDetails("sku_of_your_product").getPrice(); 
+0

什么是库存? – 2016-09-02 18:00:09