【问题标题】:How to get subscription price from in app subscription如何从应用内订阅中获取订阅价格
【发布时间】:2019-11-08 07:44:08
【问题描述】:

我已在 Google Play 控制台帐户中创建了每月订阅。

现在我想以编程方式根据我的设备区域获取订阅价格。

例如

如果我的设备所在地区是印度,那么我想要印度货币的订阅价格

如果我的设备所在地区是瑞典,那么我想要瑞典货币的订阅价格

我该怎么做??

请帮帮我。

【问题讨论】:

    标签: android in-app-subscription


    【解决方案1】:

    我也遇到过同样的问题,经过一番搜索并在其他人的帮助下,我做到了。

    Google 为应用内购买提供区域明智的价格设置。使用定价模板。只需按照以下步骤使用定价模板设置区域明智的价格。

    如何创建模板:

    1. 打开 google play 控制台并从左侧选择 设置。选择定价模板后。
    2. 点击顶部的新定价模板按钮。
    3. 添加您的名称价格并选择税金第二个选项。
    4. 现在在本地价格选项中添加您所在地区的不同价格。
    5. 点击底部的CREATE TEMPLATE按钮后。

    如何将此模板与您的订阅 SKU ID 相关联:

    1. 打开您的游戏控制台。选择您的应用->商店存在->应用内购买。
    2. 选择您已创建的订阅项目或创建新的。
    3. 填写所有必需的相关信息。
    4. 现在在价格部分,您可以看到带有下拉箭头的从定价模板导入选项。单击它,您可以看到您的创建模板。选择您的模板,您的价格将自动与您的模板相关联。

    没有模板选择:

    选择模板后:

    1. 完成其他步骤并保存您的订阅项目后。

    现在,每当用户请求主动订阅价格时,将按照您已根据您的模板设置的模板显示和使用 区域明智。我希望有人能得到帮助。

    按照上述步骤后,请按照以下代码进行操作

    private int REQ_FOR_QUERY_INVENTORY = 0;
        public static final int REQUEST_FOR_SKU_DETAIL = 1;
        public static final int REQUEST_FOR_CHECK_ACTIVE_SKU = 2;
    
    private void updateSubscriptionPrice() {
            try {
                Log.i(TAG, "request for check Query inventory is active or not");
                REQ_FOR_QUERY_INVENTORY = REQUEST_FOR_SKU_DETAIL;
    //            List<String> itemSku = new ArrayList<>();
                List<String> subSku = new ArrayList<>();
                subSku.add("subscription_id");
                subSku.add("subscription_id");
                mHelper.queryInventoryAsync(true, subSku, mQotInventoryListener);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    private IabHelper.QueryInventoryFinishedListener mQotInventoryListener = new IabHelper.QueryInventoryFinishedListener() {
        @Override
        public void onQueryInventoryFinished(IabResult result, Inventory inv) {
            try {
                Log.d(TAG, "mQotInventoryListener Query inventory finished.");
                handleQueryInventoryFinishResult(result, inv, REQ_FOR_QUERY_INVENTORY);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    };
    private void handleQueryInventoryFinishResult(IabResult result, Inventory inventory, int requestForQueryInventory) {
            try {
    
                // Have we been disposed of in the meantime? If so, quit.
                if (mHelper == null) return;
    
                // Is it a failure?
                if (result.isFailure()) {
                    Log.e(TAG, "mQotInventoryListener Failed to query inventory: " + result);
    //                complain("Error purchasing: " + result);
    //                billingCallBackListener.onError();
                    return;
                }
    
                Log.d(TAG, "mQotInventoryListener Query inventory was successful.");
    
                switch (requestForQueryInventory) {
                    case REQUEST_FOR_SKU_DETAIL:
                        try {
                            SkuDetails monthlySKU = inventory.getSkuDetails("subscription_id");
                            if (monthlySKU != null) {
                                String price = monthlySKU.getPrice();
                                Log.e(TAG, "SkuDetails are below......");
                                Log.i(TAG, "monthlySKU.getSku::->" + monthlySKU.getSku());
                                Log.i(TAG, "monthlySKU.getType::->" + monthlySKU.getType());
                                Log.i(TAG, "monthlySKU.getPrice: " + monthlySKU.getPrice());
                                Log.i(TAG, "monthlySKU.getPriceAmountMicros::->" + monthlySKU.getPrice());
    //                            Log.i(TAG, "monthlySKU.getPriceCurrencyCode::->"+monthlySKU.get);
                                Log.i(TAG, "monthlySKU.getTitle::->" + monthlySKU.getTitle());
                                Log.i(TAG, "monthlySKU.getDescription::->" + monthlySKU.getDescription());
                                Log.i(TAG, "monthlySKU.getDescription::->" + monthlySKU.getDescription());
    //                            String currencyCode = monthlySKU.getPriceCurrencyCode();
                                textview.setText(monthlySKU.getPrice().concat(" ").concat(getResources().getString(R.string.monthly_eur_1)));
    
                            } else {
                                Log.e(TAG, "monthlySKU details is null");
                            }
    
                            SkuDetails yearlySKU = inventory.getSkuDetails("subscription_id");
                            if (yearlySKU != null) {
                                String price = yearlySKU.getPrice();
                                Log.e(TAG, "yearly price : " + price);
                                textview.setText(price.concat(" ").concat(getResources().getString(R.string.yearly_eur_10)));
                            } else {
                                Log.e(TAG, "yearlySKU details is null");
                            }
    
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                        break;
                }
    
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    

    【讨论】:

      【解决方案2】:

      在常规应用内购买流程中,您使用其 SKU(产品的唯一标识符。您自己设置)查询 google play 中的产品。此查询返回完整的产品对象。这些对象包含当地价格。

      【讨论】:

        猜你喜欢
        • 2019-08-02
        • 1970-01-01
        • 2012-08-05
        • 2019-03-28
        • 2020-03-11
        • 1970-01-01
        • 2016-07-23
        • 2015-08-24
        • 2022-01-19
        相关资源
        最近更新 更多