Accesso programmatico ai tassi di cambio delle valute [chiuso]


112

Sto impostando un sistema di ordinazione online ma sono in Australia e per i clienti internazionali vorrei mostrare i prezzi in dollari USA o euro in modo che non debbano fare lo sforzo mentale di convertire dai dollari australiani.

Qualcuno sa se posso aggiornare i tassi di cambio dalla rete da qualche parte in un formato facile da analizzare a cui posso accedere dal mio script PHP?


AGGIORNAMENTO: ora ho scritto una classe PHP che lo implementa. Puoi ottenere il codice dal mio sito web .


1
@Kelly: Ottimo suggerimento, perché Google è gratuito e ha grandi possibilità di essere ancora in giro nel prossimo futuro: vorrei suggerire di inviarlo come risposta.
Eric O Lebigot

1
Non riesco a modificare il commento. Ecco il nuovo link jarloo.com/exchange-rate-api
Kelly

1
grazie per la condivisione @Adam Pierce! C'è un modo per ottenere anche i tassi storici?
Aris

Puoi usare anche questo link. È gratuito Basta registrarsi e ottenere la chiave API. jsonrates.com/docs
Gajendra K Chauhan

Usa currencylayer.com : forniscono tassi storici e in tempo reale in formato JSON, insieme ad alcuni esempi PHP ( currencylayer.com/documentation )
Frank

Risposte:


71

Puoi ottenere conversioni di valuta in un formato semplice da yahoo:

Ad esempio, per convertire da GBP a EUR: http://download.finance.yahoo.com/d/quotes.csv?s=GBPEUR=X&f=sl1d1t1ba&e=.csv


Questo è aggiornato e facile da analizzare. Questo è quello che cerco.
Adam Pierce

4
Mi interessa anche questo, ci sono informazioni su cosa significano i parametri? In particolare il parametro "f". Non riesco a trovare nessuna informazione da nessuna parte.
Fishcake

9
È legale leggere questi dati se hai un sito web commerciale?
Junior Mayhé

4
Ulteriori esperimenti mostrano che puoi richiedere più tassi di conversione contemporaneamente separando i simboli con una virgola nel parametro "s" in questo modo: download.finance.yahoo.com/d/…
Myster

3
C'è un modo per specificare una data?
Maxim Egorushkin

40

Questa risposta è MOLTO in ritardo, ma mancano alcune informazioni chiave dalle risposte precedenti.

Se vuoi mostrare prezzi accurati ai tuoi clienti, è importante capire come funzionano i tassi di cambio.

La maggior parte dei servizi FX quotano solo il tasso spot (a metà tra Bid e Ask). Lo spot è una sorta di scorciatoia per il tasso di cambio, ma nessuno lo ottiene perché puoi solo vendere al bid o comprare al ask. Di solito stai cercando almeno uno spread dell'1% tra di loro, quindi la tariffa spot è dello 0,5% per i tuoi clienti.

Ma non finisce qui, i tuoi clienti quasi certamente utilizzano una carta di credito e Visa / Mastercard / Amex addebitano tutte le commissioni di cambio. Questi non sono banali nella mia esperienza, ALMENO 2,5%. Ad esempio, Citibank Australia addebita il 3,3%. Questi variano da carta a carta, quindi non puoi prevedere il prezzo finale che verrà fatturato ai tuoi clienti.

Se desideri quotare un prezzo "accurato" ai tuoi clienti in base a un tasso di cambio, devi tenere conto di quanto sopra e fornire un buffer in modo da non dover addebitare più di quanto hai citato.

FWIW, ho aggiunto il 4% a quello che altrimenti indicherebbe la conversione F / X.


Inoltre, i tassi di cambio cambiano continuamente e le banche possono prendere in considerazione solo il tasso a mezzanotte, ora locale. Con ~ 2% volatilità giornaliera, non v'è incertezza.
Alexandre C.

1
Questo è un ottimo punto. Sicuramente rafforza la necessità di un buffer di qualche tipo se si visualizza una valuta, ma ne addebita un'altra. Per quel che vale, con la mia imbottitura del 4%, non ho mai avuto nessuno storno di addebito.
philoye

Non tutte le banche lo fanno pagare. Le carte di credito e di debito del Messico, ad esempio, convertiranno semplicemente la valuta al prezzo che hanno quel giorno per la vendita di valuta, e nient'altro.
Francisco Zarabozo

26

Potrebbe essere carino aggiungere

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

alla lista.

I tassi di riferimento ufficiali forniti dalla Banca Centrale Europea sulla base della regolare procedura giornaliera di concertazione tra le banche centrali all'interno e all'esterno del Sistema europeo di banche centrali.

Il feed è in XML e in altri formati .
L'aggiornamento avviene normalmente alle 14:15 (14:15), ora della BCE (= ora di Francoforte).


4
Appena controllato (20 minuti dopo il tuo commento) ed è disponibile per me.
Jacco

Ho appena provato a usarlo, ma VB.NET si rifiuta di XPath in modo corretto. È perché gli URL che definiscono gli spazi dei nomi sono entrambi 404?
Rikki

questo collegamento mostra sempre le tariffe di ieri, non di oggi.
erkanyildiz

12

Recentemente ho implementato la stessa cosa, ma utilizzando l'API di Google. L'URL della query ha questo aspetto:

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

Richiede 3 parametri. Il primo parametro è l'importo, seguito dal codice valuta ISO 4217 da cui stai convertendo, un segno di uguale e un punto interrogativo e il codice valuta in cui stai convertendo. Puoi trovare un elenco di codici supportati da Google qui . La risposta alla query sarà simile a questa:

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

Questo è abbastanza autoesplicativo, quindi non entrerò nei dettagli qui. Ecco come ho gestito la risposta alla query:

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

Sono sicuro che non sia il modo più elegante per farlo, ma sono abbastanza nuovo per PHP. Spero che sia d'aiuto!


2
Puoi usare json_decode invece di explode se vuoi che sia più affidabile.
diolemo

ci sono limitazioni con questo servizio?
siti

È troppo facile da
esprimere

5
"iGoogle è stato ritirato il 1 ° novembre 2013", la tua app non funziona più
yegor256

Ho usato un codice simile che è stato modificato per utilizzare il metodo Yahoo quotes.csv con solo due modifiche di riga nel codice.
Marcus

12

un altro ottimo collegamento gratuito e opensource è questo:

https://raw.github.com/currencybot/open-exchange-rates/master/latest.json
(l'ho trovato qui: http://josscrowcroft.github.com/open-exchange-rates/ )

[Aggiornamento] :
I dati del progetto Open Exchange Rates sono stati spostati da GitHub.
È ora disponibile su: http://openexchangerates.org/ I
dati in formato JSON sono disponibili su: http://openexchangerates.org/latest.json

Senza costi di accesso, senza limiti di frequenza , non è un brutto XML - appena liberi , tassi di cambio aggiornati ogni ora in formato JSON.
Questo non è "completamente" gratuito ora. La nuova licenza afferma che sono consentite fino a 1000 visite al mese, quindi è necessario pagare. È inoltre necessario pagare se si desidera utilizzare il convertitore di valuta unico (funzionalità di base).

[Nota: potresti dare un'occhiata anche a questa risposta. ]


1
Forse non funziona più
shasi kanth

1
Grazie @dskanth per il ricordo. Link e informazioni aggiornate. :)
zeFree

1
Un piano OpenExchangeRates gratuito è disponibile qui con 1000 richieste al mese .. è un collegamento minuscolo quindi non lo individuerai nella maggior parte dei casi .. openexchangerates.org/signup/free
TheFlash

6

Ho aggiunto la tabella Open Data a YQL, puoi usarla per recuperare i dati sul tasso di cambio da yahoo.finance.

Provalo nella console YQL

Il formato separato da virgole è preferibile rispetto a "where pair in ('EURUSD', 'GBPUSD')" ma in ogni caso, puoi usarli entrambi e persino mescolarli.


Grazie amico. Questo, combinato con i documenti YQL su PHP, mi ha aiutato molto!
miCRoSCoPiC_eaRthLinG

ciao, possiamo aggiungere il parametro della data, ad esempio, voglio ottenere il tasso di cambio storico.
Elisa



3

Prova questo RESTful (non sono sicuro che sia davvero un REST, poiché l'ho ottenuto originariamente da un SOAP, ho appena provato ad accedervi utilizzando HTTP GET)


Non vedo dove hai fornito l '"importo" da convertire, eppure ricevi un numero indietro ... puoi spiegarlo per favore?
SpokaneDude

1
Non accetta un importo. Questo convertirà solo fromCurrency in toCurrency dove l'importo di fromCurrency è sempre uno (1). Quindi spetta a te creare il tuo algoritmo per convertire l'importo
Kevin

Grazie ... ha senso. ora ...
SpokaneDude

3

iGoogle è stato ritirato il 1 ° novembre 2013. Questa API non funziona più.

Per ottenere il tasso di cambio puoi usare qualcosa del genere:

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

Potresti aggiungere una cache DB per assicurarti di non subire limitazioni, ecc.

Come è stato notato in altri post / commenti, useresti questo tasso per calcolare le tue valute


2

XE.com fornisce feed per i loro tassi di cambio. Non gratis però.



1

coinnill.com ha una sorta di servizio web.

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

ti darà il tasso AUD -> USD per esempio. Dovrai solo analizzare l'XML che ritorna.


Quei dati sembrano obsoleti. Dice che AUD è 0,77 ma so che oggi è 0,69.
Adam Pierce

Inoltre, i dati utili (i tassi di cambio) sono l'unico bit non codificato in XML! È solo testo in chiaro in un CDATA ...
Rikki

1

Mi sento in dovere di aggiungere:

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

Morto semplice da usare con un'API RESTful pulita e la registrazione richiede 5 secondi. Include esempi di codifica per la maggior parte delle lingue principali, la maggior parte è lunga 2-3 righe.

Le tariffe vengono aggiornate ogni ora, quindi va bene per la maggior parte degli usi e puoi ricevere 30000 query mensili per $ 7 al mese. Non ne ho mai avuto bisogno, ma le tariffe sono molto ragionevoli per volumi maggiori.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.