【问题标题】:Android In-App billing item priceAndroid 应用内计费项目价格
【发布时间】:2011-07-28 20:49:15
【问题描述】:

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

【问题讨论】:

    标签: android in-app-purchase billing


    【解决方案1】:

    现在可以使用 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;
            }
        }
    }
    

    【讨论】:

    • @SergeyGlotov 不不,这是对“我可以就此信息进行官方确认吗?”的回应。对于 VitoShadow 问题,而不是 100% 正确的答案。很抱歉造成误解。
    【解决方案2】:

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

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

    【讨论】:

    • 然后在mGotInventoryListener 得到String price = inventory.getSkuDetails("SKU_ITEMONE").getPrice(); 的价格,正如@Cícero Moura 所说的
    • 对于 IABv3,我需要使用 mHelper.queryInventoryAsync(true, Arrays.asList(moreSkus), null, mGotInventoryListener);
    【解决方案3】:
    String price = inventory.getSkuDetails("sku_of_your_product").getPrice();
    

    【讨论】:

    • 什么是库存?
    【解决方案4】:

    如果您没有遵循 google trivia 示例,则可以使用此代码获取价格。

    private void getItemsPrice(){
        List<String> skuList = new ArrayList<>();
        skuList.add("example1");
        skuList.add("example2");
        SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();
        params.setSkusList(skuList).setType(BillingClient.SkuType.INAPP);
        mBillingClient.querySkuDetailsAsync(params.build(),
                new SkuDetailsResponseListener() {
                    @Override
                    public void onSkuDetailsResponse(int responseCode, List<SkuDetails> skuDetailsList) {
                        if (responseCode == BillingClient.BillingResponse.OK
                                && skuDetailsList != null) {
                            for (SkuDetails skuDetails : skuDetailsList) {
                                String sku = skuDetails.getSku();
                                String price = skuDetails.getPrice();
                                Log.d("item price",price);
                                if ("example1".equals(sku)) {
                                        tvPlan1.setText(price);
                                }
                                else if ("example2".equals(sku)){
                                        tvPlan2.setText(price);
    
                                }
                            }
                        }
    
                    }
                });
    }
    

    【讨论】:

    • 这个价格是四舍五入的吗?如果有怎么办?我在哪里可以读到它?
    猜你喜欢
    • 2012-03-31
    • 2017-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多