У меня возникла такая же проблема, и после некоторого поиска и с помощью некоторых других лиц я сделал это.
Google предоставляет настройку цены для региона при покупке в приложении. Используйте шаблон ценообразования. Просто следуйте приведенным ниже инструкциям, чтобы установить цену для региона с помощью шаблона ценообразования.
Как создать шаблон:
- Откройте консоль Google Play ивыберите Настройки с левой стороны. После выбора Шаблоны ценообразования .
- В верхней части нажмите кнопку НОВЫЙ ЦЕНЫ НА ЦЕНЫ .
- Добавьте Имя , Цена и выберите Налог Второй вариант.
- Теперь Добавьте различные цены в зависимости от региона в опции Местные цены .
- После нажатия кнопки СОЗДАТЬ ШАБЛОН внизу.
![Example of pricing template](https://i.stack.imgur.com/diVsP.png)
Как связать этот шаблон с вашим идентификатором SKU подписки:
- Откройте игровую консоль. Выберите ваше приложение-> Наличие в магазине-> Покупка в приложении.
- Выберите элемент подписки, который уже создан, или создайте новый.
- Заполните каждую необходимую информацию.
- Теперь в разделе Цена вы можете увидеть опцию Импорт из шаблона ценообразования со стрелкой вниз. Нажмите на него, чтобы увидеть свой шаблон создания. Выберите ваш шаблон, и ваша цена будет автоматически связана с вашим шаблоном.
Без выбора шаблона: ![enter image description here](https://i.stack.imgur.com/825xY.png)
После выбора шаблона: ![enter image description here](https://i.stack.imgur.com/6fnpn.png)
После выполнения других шагов и сохранения элемента подписки.
Теперь каждый раз, когда пользователь делает запрос на активную цену подписки, будет отображаться и использоваться в соответствии с вашим шаблоном, который вы уже установили в соответствии с вашим регионом. мудрый. Я надеюсь, что кто-то получит помощь.
После выполнения вышеуказанного шага, пожалуйста, следуйте приведенному ниже коду
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();
}
}