12 votes

Comment obtenir la devise d'un produit acheté dans l'application sur Windows Phone 8 ?

Pour assurer le suivi des achats in-app effectués avec nos applications Windows Phone 8, nous aimerions savoir dans quelle devise les achats sont effectués à l'intérieur de l'application. Actuellement, nous connaissons le prix à l'aide de la propriété FormattedPrice, comme suit :

public static async void LoadProductListing()
{
    ListingInformation listings = await CurrentApp.LoadListingInformationAsync();
    ProductListing product = listings.ProductListings["SomeProductID"];

    String price = product.FormattedPrice;
}

Cela donne un prix formaté avec seulement un signe comme €0,99 ou $0.99 . Pour c'est bien, par exemple $ ces informations ne sont pas suffisantes : nous ne savons toujours pas s'il s'agit du dollar américain, du dollar canadien, du dollar australien ou du peso chilien (dont le signe est également $). Nous aimerions avoir cette information avec un véritable système d'information. ISO 4217 le code de la monnaie (comme EUR , USD , CAD , AUD , CLP ) ou au moins un symbole qui explique la devise exacte (comme US$ , C$ etc).

Sous Windows 8, il est possible d'utiliser le ListingInformation.CurrentMarket pour obtenir la locale du marché actuel (et donc la devise utilisée), mais il y a une remarque dans la documentation :

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

Nous reconnaissons que l'utilisation de la locale du système n'est pas assez précise : elle peut ne pas être la même que la locale utilisée pour le marché actuel (mais nous pouvons nous tromper !).

Existe-t-il un moyen de déterminer correctement la devise des achats in-app à partir d'une application Windows Phone 8 ?

11voto

Tim Greenfield Points 391

WP8 utilise votre région de profil de paiement Live ID pour sélectionner le marché que le téléphone utilise et vous ne pouvez pas changer cela via un paramètre sur le téléphone. Je ne le sais que parce que mon profil de paiement est réglé sur le Canada (je suis américain) et je ne peux pas le changer via un paramètre du téléphone.

Toutefois, pour en revenir à la question initiale, votre téléphone signalera toujours la culture utilisée pour les achats dans l'application via System.Globalization.RegionInfo.CurrentRegion. Par conséquent, vous pouvez obtenir de manière fiable le code de devise correct utilisé pour les achats dans l'application :

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

1voto

David Gordon Points 544

Dans Windows Phone 8, le changement de région sur votre appareil modifiera le marché auquel vous accédez.

Par exemple, si je change la région de mon téléphone de l'Australie aux États-Unis, j'accède à la boutique américaine. Tous les achats effectués dans cette boutique le seront dans la devise locale (en supposant que je dispose d'un moyen de paiement accepté dans cette région, c'est-à-dire une carte de crédit américaine).

Ainsi, System Locale devrait être une solution de contournement adaptée à vos besoins car, contrairement à WP7, votre marché n'est pas lié à la locale de l'identifiant live.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X