Accéder par programme aux taux de change [fermé]


112

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

Est-ce que quelqu'un sait si je peux obtenir 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 cela. Vous pouvez obtenir le code sur mon site Web .


1
@Kelly: Très bonne suggestion, car Google est gratuit et a de grandes chances d'être encore là dans un avenir prévisible: j'aimerais vous suggérer de la soumettre comme réponse.
Eric O Lebigot

1
Impossible de modifier le commentaire. Voici le nouveau lien jarloo.com/exchange-rate-api
Kelly

1
merci de partager @Adam Pierce! Existe-t-il un moyen d'obtenir également des taux historiques?
Aris

Vous pouvez également utiliser ce lien. C'est gratuit, inscrivez-vous et obtenez la clé API. jsonrates.com/docs
Gajendra K Chauhan

Utilisez currencylayer.com - ils fournissent des taux en temps réel et historiques au format JSON, ainsi que quelques exemples PHP ( currencylayer.com/documentation )
Frank

Réponses:


71

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

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


C'est à jour et facile à analyser. C'est ce que je recherche.
Adam Pierce

4
Cela m'intéresse également, y a-t-il des informations sur la signification des paramètres? Plus précisément le paramètre "f". Je ne trouve aucune information nulle part.
Fishcake

9
Est-il légal de lire ces données si vous avez un site Web commercial?
Junior Mayhé

4
Une expérimentation plus poussée montre que vous pouvez demander plusieurs taux de conversion à la fois en séparant les symboles du paramètre «s» comme suit: download.finance.yahoo.com/d/...
Myster

3
Existe-t-il un moyen de spécifier une date?
Maxim Egorushkin

40

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

Si vous souhaitez montrer des prix précis à vos clients, il est important de comprendre le fonctionnement des taux de change.

La plupart des services de change 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 un écart d'au moins 1% entre eux, de sorte que le taux au comptant est 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. Ce ne sont pas anodines d'après mon expérience, à au moins 2,5%. Par exemple, Citibank Australia facture 3,3%. Ceux-ci varient d'une carte à l'autre, vous n'avez donc aucun moyen de prédire le prix final facturé à vos clients.

Si vous souhaitez proposer un prix «précis» à vos clients en fonction 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.


De plus, les taux de change changent tout le temps et les banques ne peuvent prendre en compte que le taux à minuit, heure locale. Avec une volatilité quotidienne d'environ 2%, il y a de l' incertitude.
Alexandre C. le

1
C'est un excellent point. Renforce définitivement le besoin d'un tampon quelconque si vous affichez une devise, mais en facturez une autre. Pour ce que ça vaut, avec mon rembourrage de 4%, je n'ai jamais vu personne effectuer une rétrofacturation.
philoye

Toutes les banques ne facturent pas cela. Les cartes de crédit et de débit du Mexique, par exemple, convertiront simplement la devise au prix qu'elles ont ce jour-là pour la vente de devises, et rien de plus.
Francisco Zarabozo

26

Ça pourrait être bien d'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 au format XML et dans d'autres formats .
La mise à jour a normalement lieu à 14 h 15 (14 h 15), heure de la BCE (= heure de Francfort).


4
Je viens de vérifier (20 minutes après votre commentaire) et il est disponible pour moi.
Jacco

Je viens d'essayer de l'utiliser, mais VB.NET refuse de XPath correctement. Est-ce parce que les URL définissant les espaces de noms sont toutes deux 404?
Rikki

ce lien montre toujours les taux d'hier, pas d'aujourd'hui.
erkanyildiz

12

J'ai récemment mis en œuvre 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 faut 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 des 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 manière la plus élégante de faire cela, mais je suis assez nouveau dans PHP. J'espère que ça aide!


2
Vous pouvez utiliser json_decode au lieu d'exploser si vous voulez qu'il soit plus fiable.
diolemo

y a-t-il des limitations avec ce service?
sites

C'est trop facile à formuler et à utiliser ... Merci
IWIH

5
"iGoogle a été retiré le 1er novembre 2013", votre application ne fonctionne plus
yegor256

J'ai utilisé un code similaire qui a été modifié pour utiliser la méthode Yahoo quotes.csv avec seulement deux changements de ligne dans le code.
Marcus

12

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'ai trouvé à ce sujet ici: http://josscrowcroft.github.com/open-exchange-rates/ )

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

Pas de frais d'accès, pas de limites de taux , pas de XML laid - juste des taux de change gratuits et mis à jour toutes les heures au format JSON.
Ce n'est pas «entièrement» gratuit maintenant. La nouvelle licence stipule que jusqu'à 1 000 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 pouvez également consulter cette réponse. ]


1
Peut-être que cela ne fonctionne plus
shasi kanth

1
Merci @dskanth pour le rappel. Lien et informations mis à jour. :)
zeFree

1
Un plan OpenExchangeRates gratuit est disponible ici avec 1000 demandes par mois .. c'est un petit lien donc vous ne le repérerez
TheFlash

6

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ù paire dans ('EURUSD', 'GBPUSD')» mais de toute façon, vous pouvez utiliser les deux et même les mélanger.


Merci mec. Ceci combiné avec les documents YQL sur PHP m'a beaucoup aidé!
miCRoSCoPiC_eaRthLinG

salut, pouvons-nous ajouter un paramètre de date, par exemple, je veux obtenir le taux de change historique.
Elisa



3

Essayez ceci RESTful (je ne sais pas s'il s'agit vraiment d'un REST, puisque je l'ai obtenu à l'origine d'un SOAP, j'ai juste essayé d'y accéder en utilisant HTTP GET)


Je ne vois pas où vous avez fourni le «montant» à convertir, mais vous récupérez un certain nombre ... pouvez-vous expliquer cela?
SpokaneDude

1
Il n'accepte aucun montant. Cela convertira uniquement fromCurrency en toCurrency où le montant de fromCurrency est toujours un (1). Ensuite, c'est à vous de faire votre algorithme de conversion de votre montant
Kevin

Merci ... cela a du sens. maintenant ...
SpokaneDude

3

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 être limité, etc.

Comme cela a été noté sur d'autres articles / commentaires, vous utiliserez ensuite ce taux pour calculer vos devises


2

XE.com fournit des informations sur leurs taux de change. Pas gratuit cependant.



1

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.


Ces données semblent obsolètes. Il dit que l'AUD est de 0,77 mais je sais qu'il est de 0,69 aujourd'hui.
Adam Pierce

De plus, les données utiles (les taux de change) sont le seul bit non codé en XML! C'est juste du texte en clair dans un CDATA ...
Rikki

1

Je me sens obligé d'ajouter:

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

Très 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 font 2-3 lignes.

Les tarifs 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.


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.