Мое приложение содержит продукты в приложении, которые можно приобрести. Я использую API биллинга, чтобы получить список продуктов, которые можно купить, и их цены. Полученная цена представляет собой форматированную строку, содержащую как валюту, так и цену, например «$ 2,50».
Теперь я использую API Google Analytics для отслеживания покупок. Для отправки цены этот API занимает длинный параметр в микронах. Поэтому я должен отправить (2.50 * 1000000).
Существует ли API для преобразования первой цены (полученной из Billing API) во вторую (для отправки в API Analytics)?
Конечно, я мог бы сделать простое преобразование синтаксического анализа строки, но я боюсь неожиданных случаев, если я это сделаю. Например, в некоторых локалях цена будет содержать «,» вместо «.».
редактировать
Естественными решениями было бы использовать NumberFormat для конвертации с «$ 2,50» до 2,50.
Double price = NumberFormat.getCurrencyInstance().parse(priceStr).doubleValue();
Однако формат ценовой строки, полученный из Google Play, по-видимому, находится в локали страны, где расположен телефон, но NumberFormat будет использовать локаль телефона, который не обязательно является одним и тем же …
Хотя это официально не документировано, Billing API уже предоставляет необходимые данные в getSkuDetails()
.
Помимо поля price
вы также получаете следующее:
price_currency_code
Код валюты ISO
price_amount_micros
Цена продукта в микронах (Примечание: чистая цена)