Чтобы отслеживать покупки в приложении, сделанные в наших приложениях Windows Phone 8, мы хотели бы знать, в какой валюте покупки совершаются внутри приложения. Сейчас мы знаем цену, используя свойство FormattedPrice, например:
public static async void LoadProductListing()
{
ListingInformation listings = await CurrentApp.LoadListingInformationAsync();
ProductListing product = listings.ProductListings["SomeProductID"];
String price = product.FormattedPrice;
}
В результате получается цена, форматированная только знаком типа €0,99
или $0.99
. Для €
это нормально, например. $
Это недостаточно информации: мы до сих пор не знаем, это доллар США, канадский доллар, австралийский доллар или чилийское песо (этот знак также равен $). Мы хотели бы получить эту информацию с соответствующим кодом валюты ISO 4217 (например, EUR
, USD
, CAD
, AUD
, CLP
)) или, по крайней мере, символ, который объясняет точную валюту (например, US$
, C$
и т.д.).
В Windows 8 можно использовать свойство ListingInformation.CurrentMarket
для получения локали текущего рынка (и, следовательно, используемой валюты), однако в документации есть примечание:
Windows Phone 8
This API is not implemented and will throw an exception if called.
Мы используем системный язык не достаточно точный: он может быть не таким, как язык, используемый для текущего рынка (но мы можем ошибаться там!).
Есть ли способ правильно определить валюту покупки в приложении из приложения Windows Phone 8?