112 votes

Accéder par programme aux taux de change

Je suis la mise en place d'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, de sorte qu'ils n'ont pas à faire l'effort mental pour convertir en dollars Australiens.

Personne ne sait si je peux tirer jusqu'à ce jour les taux de change sur le net quelque part dans un facile à analyser le format que je peux y accéder à partir de mon script PHP ?


Mise à JOUR: j'ai écrit une classe PHP qui la met en œuvre. Vous pouvez obtenir le code de mon site web.

71voto

Greg Points 132247

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

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

40voto

philoye Points 1125

Cette réponse est TRÈS en retard, mais il y a une clé de peu d'info manquant dans les réponses ci-dessus.

Si vous souhaitez afficher des prix exacts pour vos clients, il est important de comprendre comment le taux de change de travail.

La plupart des FX uniquement les services de citer le taux de change au comptant (à mi-chemin entre l'Offre et la demande). Le spot est une sorte de raccourci pour le taux de change, mais pas de la place parce que vous ne pouvez vendre à l'enchère ou acheter à le demander. Vous êtes à la recherche d'au moins 1% d'écart entre eux, de sorte que le taux spot est de 0,5% pour vos clients.

Mais il ne s'arrête pas là, vos clients presque certainement à l'aide d'une carte de crédit et de crédit (Visa/Mastercard/Amex tous les frais de change. Ce sont des non-trivial dans mon expérience, au MOINS de 2,5%. Par exemple, Citibank Australie frais de 3.3%. Ils varient d'une carte à l'autre donc il n'y a aucun moyen pour vous de prédire le prix final que vos clients seront facturés.

Si vous voulez citer un "précis" prix à vos clients basé sur un taux de change, vous devez tenir compte de ce ci-dessus et de fournir un tampon, de sorte que vous ne finissent pas de charge de plus que ce que vous avez cité.

FWIW, j'ai été l'ajout de 4% à ce que le F/X conversion d'indication contraire.

26voto

Jacco Points 12528

Peut-être bien d'ajouter

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

à la liste.

L'officiel des taux de référence fournit par la Banque Centrale Européenne basée sur la quotidienne régulière procédure de concertation entre les banques centrales à l'intérieur et à l'extérieur du Système Européen de Banques Centrales.

Le flux XML et d'autres formats.
La mise à jour se fait normalement à 2,15 h (14:15), heure BCE (= Francfort temps).

12voto

zeFree Points 1167

un autre très grand libre et opensource lien est le suivant:

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

[Mise à jour]:
Ouvrir les Taux de Change les données du projet a été déplacé loin de GitHub.
Il est maintenant disponible à: http://openexchangerates.org/
Les données au format JSON est disponible à: http://openexchangerates.org/latest.json

Pas de frais d'accès, pas de taux de limites, Pas de XML - juste gratuit, horaire de mise à jour des taux de change au format JSON.
Ce n'est pas "entièrement" libre maintenant. Le nouveau régime d'autorisation, les états qui jusqu'à 1000 visites par mois est autorisé, et puis vous devez payer.

[ Remarque: Vous pouvez regarder cette réponse. ]

12voto

Natsukane Points 127

J'ai récemment mis en œuvre la même chose, mais en utilisant des API 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, suivie par la norme ISO 4217 code de la devise que vous êtes à la conversion de, un signe égal et un point d'interrogation, et le code de la devise que vous convertissez. Vous pouvez trouver une liste des codes que Google prend en charge ici. La réponse à la requête devrait ressembler à ceci:

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

C'est assez explicite, donc je ne rentrerai pas dans les détails ici. C'est de cette façon que j'ai manipulé 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 de la façon la plus élégante de le faire, mais je suis assez nouveau à PHP. Espérons que cela aide!

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