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

Arn*_*rne 12 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;
}
Run Code Online (Sandbox Code Playgroud)

这导致价格仅使用€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.
Run Code Online (Sandbox Code Playgroud)

我们使用系统区域设置进行重新调整是不够精确的:它可能与用于当前市场的区域设置不同(但我们可能错在那里!).

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

小智 11

WP8使用您的Live ID付款资料区域来选择手机使用的市场,您无法通过手机上的设置进行更改.我碰巧知道这一点,因为我的付款资料以某种方式设置为加拿大(我来自美国),我无法通过电话设置更改此信息.

但是,回到最初的问题:您的手机将始终通过System.Globalization.RegionInfo.CurrentRegion报告应用购买中使用的文化.因此,您可以从以下位置可靠地获取用于应用购买的正确货币代码:

var regionInfo = System.Globalization.RegionInfo.CurrentRegion;
var currencyCode = regionInfo.ISOCurrencySymbol;
Run Code Online (Sandbox Code Playgroud)