web-dev-qa-db-fra.com

Accéder par programme aux taux de change

Je mets en place un système de commande en ligne, mais je suis en Australie et pour les clients internationaux, je voudrais afficher les prix en dollars américains ou en euros afin qu'ils n'aient pas à faire l'effort mental de convertir à partir de dollars australiens.

Est-ce que quelqu'un sait si je peux retirer des taux de change à jour sur le net quelque part dans un format facile à analyser auquel je peux accéder à partir de mon script PHP?


MISE À JOUR: J'ai maintenant écrit une classe PHP qui implémente ceci. Vous pouvez obtenir le code à partir de mon site Web .

112
Adam Pierce

Vous pouvez obtenir des conversions de devises dans un format simple à partir de Yahoo:

Par exemple, pour convertir GBP en EUR: http://download.finance.yahoo.com/d/quotes.csv?s=GBPEUR=X&f=sl1d1t1ba&e=.csv

71
Greg

Cette réponse est TRÈS tardive, mais il manque un élément clé dans les réponses ci-dessus.

Si vous voulez montrer des prix précis à vos clients, il est important de comprendre comment fonctionnent les taux de change.

La plupart des services FX ne citent que le taux au comptant (à mi-chemin entre l'offre et la demande). Le spot est une sorte de raccourci pour le taux de change, mais personne n'obtient le spot car vous ne pouvez vendre qu'à l'offre ou acheter à la demande. Vous recherchez généralement au moins un écart de 1% entre eux, le taux au comptant est donc de 0,5% pour vos clients.

Mais cela ne s'arrête pas là, vos clients utilisent presque certainement une carte de crédit et Visa/Mastercard/Amex facturent tous des frais de change. Ceux-ci ne sont pas triviaux dans mon expérience, au moins 2,5%. Par exemple, Citibank Australia facture 3,3%. Celles-ci varient d'une carte à l'autre, vous n'avez donc aucun moyen de prédire le prix final que vos clients seront facturés.

Si vous souhaitez proposer un prix "précis" à vos clients sur la base d'un taux de change, vous devez tenir compte de ce qui précède et fournir un tampon afin de ne pas facturer plus que ce que vous avez indiqué.

FWIW, j'ai ajouté 4% à ce que la conversion F/X indiquerait autrement.

40
philoye

Pourrait être agréable à ajouter

http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml

à la liste.

Les taux de référence officiels fournis par la Banque centrale européenne sur la base de la procédure de concertation quotidienne régulière entre les banques centrales au sein et en dehors du Système européen de banques centrales.

Le flux est en XML et certains autres formats .
La mise à jour a normalement lieu à 14 h 15. (14:15) heure de la BCE (= heure de Francfort).

26
Jacco

J'ai récemment implémenté la même chose, mais en utilisant l'API de Google. L'URL de la requête ressemble à ceci:

http://www.google.com/ig/calculator?hl=en&q=1GBP=?USD

Il prend 3 paramètres. Le premier paramètre est le montant, suivi du code de devise ISO 4217 à partir duquel vous effectuez la conversion, d'un signe égal et d'un point d'interrogation, et du code de devise vers lequel vous effectuez la conversion. Vous pouvez trouver une liste de codes pris en charge par Google ici . La réponse à la requête ressemblera à ceci:

{lhs: "1 British pound",rhs: "1.6132 U.S. dollars",error: "",icc: true}

C'est assez explicite, donc je n'entrerai pas dans les détails ici. Voici comment j'ai géré la réponse à la requête:

function convert_currency($amount, $from_code, $to_code){
    ini_set('max_execution_time', 60);
    $temp = 'http://www.google.com/ig/calculator?hl=en&q=' . $amount . $from_code . '=?' . $to_code;

    $response = file_get_contents($temp);
    $result_string = explode('"', $response);

    $final_result = $result_string['3'];

    $float_result = preg_replace("/[^0-9\.]/", '', $full_result);

    return $float_result;
}

Je suis sûr que c'est loin d'être la façon la plus élégante de le faire, mais je suis assez nouveau pour PHP. J'espère que ça aide!

12
Natsukane

un autre très bon lien gratuit et open source est le suivant:

https://raw.github.com/currencybot/open-exchange-rates/master/latest.json
(J'en ai trouvé ici: http://josscrowcroft.github.com/open-exchange-rates/ )

[Mise à jour]:
Les données du projet Open Exchange Rates ont été retirées de GitHub.
Il est disponible dès maintenant sur: http://openexchangerates.org/
Les données au format JSON sont disponibles sur: http://openexchangerates.org/latest.json

Aucun frais d'accès, aucune limite de taux, Pas de laid XML - juste libre, taux de change mis à jour toutes les heures au format JSON.
Ce n'est pas "entièrement" gratuit maintenant. La nouvelle licence stipule que jusqu'à 1000 visites par mois sont autorisées, puis vous devez payer. Vous devez également payer si vous souhaitez utiliser le convertisseur de devise unique (fonctionnalité de base).

[Remarque: vous voudrez peut-être également consulter cette réponse. ]

12
zeFree

J'ai ajouté la table Open Data à YQL, vous pouvez l'utiliser pour récupérer les données de taux de change de yahoo.finance.

Essayez-le dans la console YQL

Le format séparé par des virgules est préférable à "où la paire est ('EURUSD', 'GBPUSD')" mais de toute façon, vous pouvez utiliser les deux et même les mélanger.

6
mtelis

Voici un service Soap qui propose des taux de change

http://www.newyorkfed.org/markets/pilotfx.html

4
Ólafur Waage

Ce site propose gratuitement un service de conversion de devises:

http://www.webservicex.net/WS/WSDetails.aspx?WSID=1

4
David Wengier

iGoogle a été retiré le 1er novembre 2013. Cette API ne fonctionne plus.

Pour obtenir le taux de change, vous pouvez utiliser quelque chose comme ceci:

function get_exchange_rate($from, $to){
    $data = file_get_contents("http://www.google.com/ig/calculator?hl=en&q=1{$from}=?{$to}");
    preg_match('/rhs\:\s?"([0-9\.]+)/', $data, $m);
    return $m[1];
}

Vous pouvez y ajouter un cache de base de données pour vous assurer de ne pas vous limiter, etc.

Comme cela a été noté dans d'autres articles/commentaires, vous utiliseriez alors ce taux pour calculer vos devises

3
oodavid

Essayez ceci RESTful (je ne suis pas sûr que ce soit vraiment un REST, puisque je l'ai obtenu à l'origine d'un SOAP, j'ai juste essayé d'y accéder en utilisant HTTP GET)

3
Kevin

Oanda.com expose les taux de change comme une API XML, mais pas gratuitement

2
Eugene Osovetsky

XE.com fournit un flux pour leurs taux de change. Pas gratuit cependant.

2
jop

Je me sens obligé d'ajouter:

http://www.exchangerate-api.com/

Simple à utiliser avec une API RESTful propre et l'inscription prend 5 secondes. Comprend des exemples de codage pour la plupart des langues principales, la plupart sont de 2 à 3 lignes.

Les taux sont mis à jour toutes les heures, donc c'est bien pour la plupart des utilisations, et vous pouvez obtenir 30000 requêtes mensuelles pour 7 $ par mois. Je n'ai jamais eu besoin de plus que cela, mais les tarifs sont très raisonnables pour des volumes plus élevés.

1
Alex Recarey

Cela fonctionne pour moi .

Une API de taux de change: http://currency-api.appspot.com/

1
Nirav Ranpara

coinnill.com a une sorte de service Web.

http://coinmill.com/rss/AUD_USD.xml

vous donnera le taux AUD -> USD par exemple. Vous aurez juste besoin d'analyser le XML qui revient.

1
cagcowboy