Programmgesteuerter Zugriff auf Wechselkurse [geschlossen]

112

Ich richte ein Online-Bestellsystem ein, bin aber in Australien und für internationale Kunden möchte ich Preise in US-Dollar oder Euro anzeigen, damit sie sich nicht die Mühe machen müssen, von australischen Dollar umzurechnen.

Weiß jemand, ob ich irgendwo in einem einfach zu analysierenden Format, auf das ich über mein PHP-Skript zugreifen kann, aktuelle Wechselkurse aus dem Internet ziehen kann?


UPDATE: Ich habe jetzt eine PHP-Klasse geschrieben, die dies implementiert. Sie können den Code von meiner Website erhalten .

Adam Pierce
quelle
1
@ Kelly: Sehr guter Vorschlag, da Google kostenlos ist und große Chancen hat, in absehbarer Zukunft noch da zu sein: Ich möchte vorschlagen, dass Sie ihn als Antwort einreichen.
Eric O Lebigot
1
Der Kommentar kann anscheinend nicht bearbeitet werden. Hier ist der neue Link jarloo.com/exchange-rate-api
Kelly
1
Danke, dass du @Adam Pierce geteilt hast! Gibt es eine Möglichkeit, auch historische Kurse zu erhalten?
Aris
Sie können diesen Link auch verwenden. Es ist kostenlos. Melden Sie sich einfach an und erhalten Sie API KEY. jsonrates.com/docs
Gajendra K Chauhan
Verwenden Sie Currencylayer.com - sie bieten Echtzeit- und
Frank

Antworten:

71

Sie können Währungsumrechnungen in einem einfachen Format von Yahoo erhalten:

Um beispielsweise von GBP in EUR umzurechnen: http://download.finance.yahoo.com/d/quotes.csv?s=GBPEUR=X&f=sl1d1t1ba&e=.csv

Greg
quelle
Das ist aktuell und leicht zu analysieren. Das ist es, wonach ich suche.
Adam Pierce
4
Das interessiert mich auch. Gibt es Informationen darüber, wofür die Parameter stehen? Speziell der Parameter "f". Ich kann nirgendwo Informationen finden.
Fishcake
9
Ist es legal, diese Daten zu lesen, wenn Sie eine kommerzielle Website haben?
Junior Mayhé
4
Weitere Experimente zeigen, dass Sie mehrere Conversion-Raten gleichzeitig anfordern können, indem Sie die Symbole im Parameter 's durch Komma trennen: download.finance.yahoo.com/d/…
Myster
3
Gibt es eine Möglichkeit, ein Datum anzugeben?
Maxim Egorushkin
40

Diese Antwort ist SEHR spät, aber in den obigen Antworten fehlt eine wichtige Information.

Wenn Sie Ihren Kunden genaue Preise anzeigen möchten, ist es wichtig zu verstehen, wie Wechselkurse funktionieren.

Die meisten FX-Dienste geben nur den Kassakurs an (auf halbem Weg zwischen Bid und Ask). Der Spot ist eine Art Abkürzung für den Wechselkurs, aber niemand bekommt den Spot, weil Sie nur zum Bid verkaufen oder zum Ask kaufen können. Normalerweise sehen Sie einen Spread von mindestens 1% zwischen ihnen, sodass der Kassakurs für Ihre Kunden 0,5% beträgt.

Aber es hört hier nicht auf, Ihre Kunden verwenden mit ziemlicher Sicherheit eine Kreditkarte und Visa / Mastercard / Amex erheben alle Devisengebühren. Diese sind meiner Erfahrung nach nicht trivial, mindestens 2,5%. Beispielsweise berechnet die Citibank Australia 3,3%. Diese variieren von Karte zu Karte, sodass Sie den endgültigen Preis, den Ihre Kunden in Rechnung stellen, nicht vorhersagen können.

Wenn Sie Ihren Kunden einen "genauen" Preis basierend auf einem Wechselkurs anbieten möchten, müssen Sie die oben genannten Faktoren berücksichtigen und einen Puffer bereitstellen, damit Sie nicht mehr als das berechnen, was Sie angegeben haben.

FWIW, ich habe 4% zu dem hinzugefügt, was die F / X-Konvertierung sonst anzeigen würde.

Philoye
quelle
Außerdem ändern sich die Devisenkurse ständig, und Banken können den Kurs möglicherweise nur um Mitternacht Ortszeit berücksichtigen. Bei einer täglichen Volatilität von ~ 2% besteht Unsicherheit.
Alexandre C.
1
Das ist ein großartiger Punkt. Verstärkt definitiv die Notwendigkeit eines Puffers, wenn Sie eine Währung anzeigen, aber eine andere berechnen. Für das, was es wert ist, habe ich mit meiner 4% igen Polsterung noch nie jemanden eine Rückbuchung vornehmen lassen.
Philoye
Das berechnen nicht alle Banken. Kredit- und Debitkarten aus Mexiko konvertieren beispielsweise die Währung nur zu dem Preis, den sie an diesem Tag für den Währungsverkauf haben, und nicht mehr.
Francisco Zarabozo
26

Könnte nett sein, hinzuzufügen

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

zur Liste.

Die offiziellen Referenzzinssätze der Europäischen Zentralbank basieren auf dem regelmäßigen täglichen Abstimmungsverfahren zwischen Zentralbanken innerhalb und außerhalb des Europäischen Systems der Zentralbanken.

Der Feed ist in XML und einigen anderen Formaten .
Die Aktualisierung erfolgt normalerweise um 14.15 Uhr (14.15 Uhr) EZB-Zeit (= Frankfurter Zeit).

Jacco
quelle
4
Gerade überprüft (20 Minuten nach Ihrem Kommentar) und es für mich verfügbar.
Jacco
Ich habe gerade versucht, dies zu verwenden, aber VB.NET weigert sich, XPath ordnungsgemäß zu verwenden. Liegt das daran, dass die URLs, die die Namespaces definieren, beide 404ing sind?
Rikki
Dieser Link zeigt immer die Preise von gestern an, nicht die von heute.
erkanyildiz
12

Ich habe kürzlich dasselbe implementiert, aber die Google-API verwendet. Die Abfrage-URL sieht folgendermaßen aus:

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

Es werden 3 Parameter benötigt. Der erste Parameter ist der Betrag, gefolgt vom ISO 4217- Währungscode , von dem Sie konvertieren, einem Gleichheitszeichen und einem Fragezeichen sowie dem Währungscode, in den Sie konvertieren. Eine Liste der von Google unterstützten Codes finden Sie hier . Die Antwort auf die Abfrage sieht folgendermaßen aus:

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

Dies ist ziemlich selbsterklärend, daher werde ich hier nicht auf Details eingehen. So habe ich die Abfrageantwort behandelt:

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;
}

Ich bin mir sicher, dass dies alles andere als die eleganteste Methode ist, aber ich bin ziemlich neu in PHP. Ich hoffe es hilft!

Natsukane
quelle
2
Sie können json_decode anstelle von explode verwenden, wenn Sie möchten, dass es zuverlässiger ist.
Diolemo
Gibt es Einschränkungen bei diesem Service?
Websites
Dies ist zu einfach zu
formulieren
5
"iGoogle wurde am 1. November 2013 in den Ruhestand versetzt", Ihre App funktioniert nicht mehr
yegor256
Ich habe ähnlichen Code verwendet, der geändert wurde, um die Yahoo quote.csv-Methode mit nur zwei Zeilenänderungen im Code zu verwenden.
Marcus
12

Ein weiterer sehr guter kostenloser und OpenSource-Link ist folgender:

https://raw.github.com/currencybot/open-exchange-rates/master/latest.json
(Ich habe es hier gefunden: http://josscrowcroft.github.com/open-exchange-rates/ )

[Update] :
Open Exchange Rates-Projektdaten wurden von GitHub entfernt.
Es ist ab sofort verfügbar unter: http://openexchangerates.org/
Daten im JSON-Format sind verfügbar unter: http://openexchangerates.org/latest.json

Keine Zugangsgebühren, keine Kursbeschränkungen , kein hässliches XML - nur kostenlose , stündlich aktualisierte Wechselkurse im JSON-Format.
Dies ist jetzt nicht "ganz" kostenlos. Die neue Lizenz besagt, dass bis zu 1000 Treffer pro Monat zulässig sind und Sie dann bezahlen müssen. Sie müssen auch bezahlen, wenn Sie den Währungsumrechner verwenden möchten (Grundfunktionalität).

[Hinweis: Möglicherweise möchten Sie auch diese Antwort anzeigen. ]]

zeFree
quelle
1
Vielleicht funktioniert es nicht mehr
Shasi Kanth
1
Danke @dskanth für die Erinnerung. Link und Informationen aktualisiert. :)
zeFree
1
Ein kostenloser OpenExchangeRates-Plan ist hier mit 1000 Anfragen pro Monat verfügbar. Es ist ein winziger Link, sodass Sie ihn in den meisten Fällen nicht erkennen können. Openexchangerates.org/signup/free
TheFlash
6

Ich habe YQL die Open Data-Tabelle hinzugefügt, mit der Sie Wechselkursdaten aus yahoo.finance abrufen können.

Probieren Sie es in der YQL-Konsole aus

Das durch Kommas getrennte Format ist dem "where pair in ('EURUSD', 'GBPUSD')" vorzuziehen, aber Sie können beide verwenden und sie sogar mischen.

mtelis
quelle
Danke Alter. Dies zusammen mit den YQL-Dokumenten auf PHP hat mir sehr geholfen!
miCRoSCoPiC_eaRthLinG
Hallo, können wir einen Datumsparameter hinzufügen, z. B. möchte ich den historischen Wechselkurs erhalten.
Elisa
4

Hier ist ein Seifenservice, der Wechselkurs bietet

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

Ólafur Waage
quelle
4
Schade, dass es SOAP und nicht REST ist. Abgesehen davon ist es eine nützliche Einrichtung
David Arno
Ist das frei und stabil? Kann ich Software versenden, die darauf basiert?
4
anscheinend haben sie damit aufgehört @ 31.12.2008
Sevki
3

Versuchen Sie dies RESTful (Ich bin nicht sicher, ob dies wirklich ein REST ist, da ich dies ursprünglich von einer SOAP erhalten habe, habe ich nur versucht, mit HTTP GET darauf zuzugreifen)

Kevin
quelle
Ich sehe nicht, wo Sie den "Betrag" für die Umrechnung angegeben haben, aber Sie erhalten eine Nummer zurück ... können Sie dies bitte erklären?
SpokaneDude
1
Es wird kein Betrag akzeptiert. Dadurch wird nur fromCurrency in toCurrency konvertiert, wobei der Betrag von fromCurrency immer eins (1) beträgt. Dann liegt es an Ihnen, Ihren Algorithmus zur Umrechnung Ihres Betrags
Kevin
Danke ... das macht Sinn. jetzt ...
SpokaneDude
3

iGoogle wurde am 1. November 2013 eingestellt. Diese API funktioniert nicht mehr.

Um den Wechselkurs zu erhalten, können Sie Folgendes verwenden:

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];
}

Sie können dort einen DB-Cache hinzufügen, um sicherzustellen, dass Sie nicht gedrosselt werden usw.

Wie bereits in anderen Posts / Kommentaren erwähnt, würden Sie diesen Kurs dann zur Berechnung Ihrer Währungen verwenden

oodavid
quelle
2

XE.com bietet Feeds für ihre Wechselkurse. Nicht frei.

jop
quelle
2

Oanda.com stellt Wechselkurse als XML-API zur Verfügung, jedoch nicht kostenlos

Eugene Osovetsky
quelle
1

coinnill.com hat eine Art Web-Service.

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

Sie erhalten zum Beispiel den Kurs AUD -> USD. Sie müssen nur das zurückkommende XML analysieren.

Cagcowboy
quelle
Diese Daten scheinen veraltet zu sein. Es heißt, AUD ist 0,77, aber ich weiß, dass es heute 0,69 ist.
Adam Pierce
Auch die nützlichen Daten (die Wechselkurse) sind das einzige Bit, das nicht in XML codiert ist! Es ist nur Klartext in einer CDATA ...
Rikki
1

Ich fühle mich gezwungen hinzuzufügen:

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

Die Verwendung mit einer sauberen RESTful-API ist kinderleicht und die Anmeldung dauert 5 Sekunden. Enthält Codierungsbeispiele für die meisten Hauptsprachen, die meisten sind 2-3 Zeilen lang.

Die Preise werden stündlich aktualisiert, sodass dies für die meisten Verwendungszwecke in Ordnung ist. Sie können 30000 monatliche Anfragen für 7 USD pro Monat erhalten. Ich habe nie mehr als das gebraucht, aber die Preise sind für höhere Mengen sehr vernünftig.

Alex Recarey
quelle