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 .


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


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.


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).


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!


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. ]]


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.


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



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)


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




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.


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.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.