2013-01-03 46 views
12

要跟蹤使用我們的Windows Phone 8應用程序進行的應用程序內購買,我們想知道從應用程序內購買哪種貨幣。現在我們知道使用FormattedPrice財產,像這樣的價格:如何在Windows Phone 8上獲取應用內購買產品的貨幣?

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應用程序中正確確定應用內購買貨幣嗎?

+0

我有疑問!當我嘗試在這裏使用模擬器並且金額沒有根據當地貨幣進行轉換時,該值是否自動轉換。 – AbsoluteSith

回答

11

WP8使用您的Live ID付款配置文件區域來選擇手機使用的市場,並且您無法通過手機上的設置更改此設置。我只是碰巧知道這一點,因爲我的付款資料以某種方式設置爲加拿大(我來自美國),我無法通過電話上的設置更改此設置。

但是,回到原始問題:您的手機將始終通過System.Globalization.RegionInfo.CurrentRegion報告用於應用程序購買的文化。因此,您可以可靠地獲得用於從應用程序購買的正確貨幣代碼:

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

在Windows Phone 8中,更改設備上的區域會改變您訪問的市場。

例如,如果我將手機上的區域從澳大利亞更改爲美國,則可以訪問美國的商店。從該商店購買的任何商品都將以當地貨幣購買(假設我在該地區接受了付款方式 - 即美國信用卡)。

因此,與WP7不同,系統區域設置應該是一個適合您的目的的解決方案,您的市場沒有鏈接到活動ID的區域設置。