Подтвердить что ты не робот

Как получить валюту продукта для покупки в приложении на Windows Phone 8?

Чтобы отслеживать покупки в приложении, сделанные в наших приложениях 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?

4b9b3361

Ответ 1

WP8 использует ваш профиль профиля платежей в режиме Live ID, чтобы выбрать рынок, который использует телефон, и вы не можете изменить его с помощью настройки на телефоне. Я знаю только об этом, потому что мой профиль платежей настроен на Канаду каким-то образом (я из США), и я не могу изменить это с помощью настройки на телефоне.

Однако вернемся к исходному вопросу: ваш телефон всегда будет сообщать о культуре, используемой для покупок приложений через System.Globalization.RegionInfo.CurrentRegion. Таким образом, вы можете надежно получить правильный код валюты, который используется для покупок в приложении:

var regionInfo = System.Globalization.RegionInfo.CurrentRegion;
var currencyCode = regionInfo.ISOCurrencySymbol;

Ответ 2

В Windows Phone 8 изменение области на вашем устройстве изменит доступ к рынку.

Например, если я меняю регион на своем телефоне из Австралии в США, я обращаюсь к магазину в США. Любые покупки из этого магазина будут производиться в местной валюте (при условии, что у меня есть способ оплаты, принятый в этом регионе - например, кредитная карта США).

Итак, System Locale должен быть подходящим решением для ваших целей, так как в отличие от WP7 ваш рынок не связан с локалию живого идентификатора.