如何在Windows Phone 8上获取应用内购买产品的货币?

12

为了跟踪我们的 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货币代码(如EURUSDCADAUDCLP)或至少一个解释确切货币的符号(如US$C$等)来获得这些信息。

在Windows 8上,可以使用ListingInformation.CurrentMarket属性获取当前市场的区域设置(因此使用的货币),但文档中有一条备注:

Windows Phone 8
This API is not implemented and will throw an exception if called.

我们认为使用系统区域设置并不够精确:它可能与当前市场使用的区域设置不同(但我们可能是错误的!)。

有没有办法在Windows Phone 8应用程序中正确确定应用内购买货币?


我有一个疑问!当我在这里尝试使用模拟器时,值是否会自动转换,因为金额没有根据本地货币进行转换。 - AbsoluteSith
2个回答

11

WP8使用您的Live ID付款个人资料区域来选择手机使用的市场,您无法通过手机上的设置更改此设置。 我之所以知道这一点,是因为我的付款个人资料被设置为加拿大(我来自美国),我无法通过手机上的设置更改它。

然而,回到最初的问题:您的手机将始终通过 System.Globalization.RegionInfo.CurrentRegion 报告在应用内购买中使用的区域设置。 因此,您可以可靠地获取正在用于应用内购买的正确货币代码:

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

1
在Windows Phone 8中,更改设备的地区将更改您访问的市场。例如,如果我将手机的地区从澳大利亚更改为美国,则可以访问美国商店。从该商店购买的任何物品都将以当地货币支付(假设我有在该地区接受的付款方式-即美国信用卡)。因此,系统语言环境应该是您目的的合适解决方法,因为与WP7不同,您的市场与Live ID的语言环境没有关联。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接