要跟踪使用我们的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应用程序中正确确定应用内购买货币?
答案 0 :(得分:11)
WP8使用您的Live ID付款资料区域来选择手机使用的市场,您无法通过手机上的设置进行更改。我碰巧知道这一点,因为我的付款资料以某种方式设置为加拿大(我来自美国),我无法通过电话设置更改此信息。
然而,回到最初的问题:您的手机将始终通过System.Globalization.RegionInfo.CurrentRegion报告应用内购买的文化。因此,您可以从以下位置可靠地获取用于应用内购买的正确货币代码:
var regionInfo = System.Globalization.RegionInfo.CurrentRegion;
var currencyCode = regionInfo.ISOCurrencySymbol;
答案 1 :(得分:1)
在Windows Phone 8中,更改设备上的区域将更改您访问的市场。
例如,如果我将手机上的区域从澳大利亚更改为美国,我会访问美国商店。从该商店购买的任何商品都将以当地货币进行(假设我在该地区接受了付款方式 - 即美国信用卡)。
因此,系统区域设置应该是适合您的目的的解决方法,因为与WP7不同,您的市场没有链接到实时ID的区域设置。