Intereting Posts
EditText maxLines не работает – пользователь может все еще вводить больше строк, чем установлено Android – отключить ландшафтный режим? Какова логика проектирования для фрагментов как статических внутренних классов и автономных публичных классов? Как исправить нижний относительный макет, когда приходит мягкая клавиатура? Предупреждение. Не печатайте «/ data /»; Вместо этого используйте Context.getFilesDir (). GetPath () Как медленно или быстро работает Qt для Android Эффективный способ хранения изображений в Android Получить координаты, щелкнув по карте (openstreetmaps) Использование jars, которые используют классы java.beans (Introspector, BeanInfo или PropertyDescriptor) Где драйвер ADB для Windows? Почему Android использует концепцию Java вместо языка D или C или C ++? Но веб-браузер Chromium находится на C ++, его очень сложное совпадение Как получить список записей фрагмента backstack в android? Ошибка при добавлении динамических данных Как сделать PDF в Android Android studio – отсутствует каталог инструментов SDK "

Как получить отдельную информацию о ценах и валюте для покупки в приложении?

Я осуществляю покупки в приложении для приложения с поддержкой нескольких стран.

API-интерфейс In-App Billing версии 3 утверждает, что :

Конвертация или форматирование валюты не требуется: цены указаны в валюте пользователя и отформатированы в соответствии с их языковым стандартом.

Это действительно так , поскольку skuGetDetails() выполняет все необходимые форматирования. Ответ включает поле, называемое price , которое содержит

Отформатированная цена товара, включая знак валюты. Цена не включает налог.

Тем не менее, мне нужен код валюты ISO 4217 (восстанавливаемый, если я знаю локаль магазина) и фактическую неформатированную цену (оптимально в переменной с плавающей запятой или десятичной), поэтому я могу выполнить дальнейшую обработку и анализ самостоятельно.

Анализ skuGetDetails() не является надежной идеей, поскольку во многих странах используются одни и те же символы валюты.

валюты

Как я могу получить код валюты ISO 4217 и неформатную цену покупки в приложении с помощью In-App Billing Version 3 API?

Solutions Collecting From Web of "Как получить отдельную информацию о ценах и валюте для покупки в приложении?"

Полную информацию можно найти здесь , но в основном в августе 2014 года это было разрешено:

Метод getSkuDetails ()

Этот метод возвращает сведения о продукте для списка идентификаторов продуктов. В ответном пакете, отправленном Google Play, результаты запроса сохраняются в String ArrayList, сопоставленном с ключом DETAILS_LIST. Каждая строка в списке деталей содержит сведения о продукте для одного продукта в формате JSON. Поля в строке JSON с информацией о продукте приведены ниже

Price_currency_code ISO 4217 код валюты по цене. Например, если цена указана в британских фунтах стерлингов, price_currency_code – «GBP».

Price_amount_micros Цена в микро-единицах, где 1 000 000 микро-единиц равны одной единице валюты. Например, если цена «7,99 евро», price_amount_micros «7990000».

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

https://code.google.com/p/marketbilling/issues/detail?id=93

Ты можешь. Вам необходимо изменить SkuDetails.java, как показано ниже.

шаги:

  1. Проверьте их пример приложения для выставления счетов в приложении.
  2. Измените файл SkuDetails.java следующим образом:
 import org.json.JSONException; import org.json.JSONObject; /** * Represents an in-app product's listing details. */ public class SkuDetails { String mItemType; String mSku; String mType; int mPriceAmountMicros; String mPriceCurrencyCode; String mPrice; String mTitle; String mDescription; String mJson; public SkuDetails(String jsonSkuDetails) throws JSONException { this(IabHelper.ITEM_TYPE_INAPP, jsonSkuDetails); } public SkuDetails(String itemType, String jsonSkuDetails) throws JSONException { mItemType = itemType; mJson = jsonSkuDetails; JSONObject o = new JSONObject(mJson); mSku = o.optString("productId"); mType = o.optString("type"); mPrice = o.optString("price"); mPriceAmountMicros = o.optInt("price_amount_micros"); mPriceCurrencyCode = o.optString("price_currency_code"); mTitle = o.optString("title"); mDescription = o.optString("description"); } public String getSku() { return mSku; } public String getType() { return mType; } public String getPrice() { return mPrice; } public String getTitle() { return mTitle; } public String getDescription() { return mDescription; } public int getPriceAmountMicros() { return mPriceAmountMicros; } public String getPriceCurrencyCode() { return mPriceCurrencyCode; } @Override public String toString() { return "SkuDetails:" + mJson; } } 

Вот мой способ обхода 🙂

 private static Locale findLocale(String price) { for (Locale locale : Locale.getAvailableLocales()){ try { Currency currency = Currency.getInstance(locale); if (price.endsWith(currency.getSymbol())) return locale; }catch (Exception e){ } } return null; } 

Применение:

 Locale locale = findLocale(price); String currency = Currency.getInstance(locale).getCurrencyCode(); double priceClean = NumberFormat.getCurrencyInstance(locale).parse(price).doubleValue(); 

Вы можете проверить это. Разработчики Android в некоторых странах теперь могут предлагать приложения для продажи в разных валютах через Google Wallet Merchant Center. Чтобы продавать ваши приложения в других валютах, вам нужно будет установить цену приложения в каждой стране / валюте. Список поддерживаемых стран / валют доступен в нашем справочном центре.

Если вы делаете приложение доступным в местной валюте, клиенты Google Play будут видеть приложение только для продажи в этой валюте. Клиенты будут платить в местной валюте, но оплата будет выписана в валюте, установленной в вашем аккаунте Merchant Center в Google Кошельке.

Другим способом жесткого кодирования является ценовое предложение для стран с одним и тем же символом, по-разному на цент или около того. Когда вы извлекаете цену товара из игры Google при покупке, и вы знаете, что полученный символ валюты является тем, который используется во многих странах, т.е. $. Затем у вас есть журнал различных цен на вашем серверном сервере и коррелирует цена покупки с конкретной страной.

Очень просто. SKU возвращает код валюты (поле price_currency_code). С помощью этого кода вы можете получить символ, используя класс Currency. См. Прилагаемый код:

 String currencyCode = skuObj.getString("price_currency_code"); currencySymbol = Currency.getInstance(currencyCode).getSymbol();