Как узнать цену подписки в приложении подписки - PullRequest
3 голосов
/ 08 ноября 2019

Я создал ежемесячную подписку в учетной записи консоли Google Play.

Теперь я хочу получить цену подписки программно в соответствии с регионом своего устройства.

Например

Если регион моего устройства - Индия, тогда я хочу цену подписки в индийской валюте

Если регион моего устройства - Швеция, тогда я хочу цену подписки в валюте Швеции

Как я могу это сделать? ?

Пожалуйста, помогите мне с этим.

Ответы [ 2 ]

1 голос
/ 09 ноября 2019

У меня возникла такая же проблема, и после некоторого поиска и с помощью некоторых других лиц я сделал это.

Google предоставляет настройку цены для региона при покупке в приложении. Используйте шаблон ценообразования. Просто следуйте приведенным ниже инструкциям, чтобы установить цену для региона с помощью шаблона ценообразования.

Как создать шаблон:

  1. Откройте консоль Google Play ивыберите Настройки с левой стороны. После выбора Шаблоны ценообразования .
  2. В верхней части нажмите кнопку НОВЫЙ ЦЕНЫ НА ЦЕНЫ .
  3. Добавьте Имя , Цена и выберите Налог Второй вариант.
  4. Теперь Добавьте различные цены в зависимости от региона в опции Местные цены .
  5. После нажатия кнопки СОЗДАТЬ ШАБЛОН внизу.

Example of pricing template

Как связать этот шаблон с вашим идентификатором SKU подписки:

  1. Откройте игровую консоль. Выберите ваше приложение-> Наличие в магазине-> Покупка в приложении.
  2. Выберите элемент подписки, который уже создан, или создайте новый.
  3. Заполните каждую необходимую информацию.
  4. Теперь в разделе Цена вы можете увидеть опцию Импорт из шаблона ценообразования со стрелкой вниз. Нажмите на него, чтобы увидеть свой шаблон создания. Выберите ваш шаблон, и ваша цена будет автоматически связана с вашим шаблоном.

Без выбора шаблона: enter image description here

После выбора шаблона: enter image description here

После выполнения других шагов и сохранения элемента подписки.

Теперь каждый раз, когда пользователь делает запрос на активную цену подписки, будет отображаться и использоваться в соответствии с вашим шаблоном, который вы уже установили в соответствии с вашим регионом. мудрый. Я надеюсь, что кто-то получит помощь.

После выполнения вышеуказанного шага, пожалуйста, следуйте приведенному ниже коду

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();
        }
    }
0 голосов
/ 08 ноября 2019

Во время регулярных покупок в приложениях вы запрашиваете в Google Play продукты, используя их SKU (уникальный идентификатор для продуктов. Вы устанавливаете его самостоятельно). Этот запрос возвращает полные объекты продукта. Эти объекты содержат локальную цену.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...