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

时间:2013-01-03 15:01:05

标签: in-app-purchase 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货币代码(例如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应用程序中正确确定应用内购买货币?

2 个答案:

答案 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的区域设置。