Hai bisogno di API per la conversione di valuta

Si prega di consulenza API per la conversione di valuta che restituisce JSON o html di piccole dimensioni. Uso http://www.google.com/finance/converter?a=1&from=RUB&to=USD che restituisce HTML di 11 kb. Lo uso nella mia app iOS.

Grazie in anticipo!

free.currencyconverterapi.com restituisce risultati in formato JSON.

Il servizio Web supporta anche JSONP. L’API è molto facile da usare e ti consente di convertire una valuta in un’altra.

Disclaimer, sono l’autore del sito web.

Un URL di conversione di esempio è: http://free.currencyconverterapi.com/api/v5/convert?q=USD_PHP&compact=ultra che restituirà un valore in formato json, ad esempio {“USD_PHP”: 51.459999}

Come menzionato nei commenti, questo servizio è stato chiuso nel novembre 2013.

L’API di google calulator può farlo;

Richiesta:

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

Risposta:

 {lhs: "100 Euros",rhs: "145.67 US dollars",error: "",icc: true} 

( Ulteriori informazioni )

Yahoo non funziona più. Vedi il commento qui sotto

Convertitore di valute di Yahoo Finance .

Questo formato di url può essere utilizzato per recuperare i tassi di conversione in diversi formati.

 http://download.finance.yahoo.com/d/quotes.csv?s=AUDUSD=X&f=nl1d1t1 

Sostituire preventivi.csv con formato e parametri appropriati con i codici richiesti

EDIT: aggiunti i formati Url di esempio

Ora iGoogle è stato ucciso, la soluzione di Alex K non funziona più tristemente. In PHP, questa è un’alternativa che funziona allo stesso modo ed è altrettanto efficace:

 $amount = urlencode($amount); $from_Currency = urlencode($from_Currency); $to_Currency = urlencode($to_Currency); $get = file_get_contents("https://www.google.com/finance/converter?a=$amount&from=$from_Currency&to=$to_Currency"); $get = explode("",$get); $get = explode("",$get[1]); $converted_amount = preg_replace("/[^0-9\.]/", null, $get[0]); 

AGGIORNAMENTO: l’API di Yahoo non funziona più. Lasciando questa risposta legacy solo per fornire informazioni che questo non funziona più.


usa yahoo api:

 http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.xchange%20where%20pair%20in%20(%22USDLTL%22)&format=json&env=store://datatables.org/alltableswithkeys&callback= 

restituirà il formato JSON come:

 { query: { count: 1, created: "2013-12-04T13:52:53Z", lang: "en-US", results: { rate: { id: "USDLTL", Name: "USD to LTL", Rate: "2.5485", Date: "12/4/2013", Time: "8:52am", Ask: "2.5486", Bid: "2.5485" } } } } 

Controlla nell’URL che ora c’è USDLTL, quindi modifica quello che ti serve.

Inoltre a volte il tasso è così basso, che non lo vedi nemmeno con 4 numeri che mostra:

Tasso: 0,0006

Non fatevi prendere dal panico basta fare una query di inversione, capovolgere le valute e fare qualche semplice matematica.

Ad esempio, hai ottenuto che il tasso sia da KRW a EUR 0,0006 ma il tasso reale è qualcosa come 0.00000125 quindi chiedi di nuovo all’API, basta capovolgere le valute: qual è il rapporto tra EUR e USD. quindi otterrai un numero enorme come 12500000.xxx, quindi fai i calcoli per ottenere il rapporto necessario: 1/12500000 e otterrai un rapporto = 0,00000125

Spero possa aiutare 😉

L’URL decodificato PS che è più facile da leggere assomiglia a questo:

 http://query.yahooapis.com/v1/public/yql ?q=select * from yahoo.finance.xchange where pair in ("USDLTL") &format=json &env=store://datatables.org/alltableswithkeys &callback= 

Io uso una class php per convertire i tassi di cambio:

 /** * Yahoo currency rate import class * * @author Felix Geenen (http://www.geenen-it-systeme.de) * @version 1.0.3 */ class Yahoofinance { public static $_url = 'http://download.finance.yahoo.com/d/quotes.csv?s={{CURRENCY_FROM}}{{CURRENCY_TO}}=X&f=l1&e=.csv'; public static $_messages = array(); /* * converts currency rates * * use ISO-4217 currency-codes like EUR and USD (http://en.wikipedia.org/wiki/ISO_4217) * * @param currencyFrom String base-currency * @param currencyTo String currency that currencyFrom should be converted to * @param retry int change it to 1 if you dont want the method to retry receiving data on errors */ public static function _convert($currencyFrom, $currencyTo, $retry=0) { $url = str_replace('{{CURRENCY_FROM}}', $currencyFrom, self::$_url); $url = str_replace('{{CURRENCY_TO}}', $currencyTo, $url); try { $handle = fopen($url, "r"); if($handle !== false) { $exchange_rate = fread($handle, 2000); # there may be spaces or breaks $exchange_rate = trim($exchange_rate); $exchange_rate = (float) $exchange_rate; fclose($handle); if( !$exchange_rate ) { echo 'Cannot retrieve rate from Yahoofinance'; return false; } return (float) $exchange_rate * 1.0; // change 1.0 to influence rate; } } catch (Exception $e) { if( $retry == 0 ) { # retry receiving data self::_convert($currencyFrom, $currencyTo, 1); } else { echo 'Cannot retrieve rate from Yahoofinance'; return false; } } } } 

Ecco un semplice adattamento della risposta di Felix Geenen per usare curl invece di fopen dato che molti server hanno fopen distriggersto di default.

(Ho pulito un po ‘di codice e ho aggiunto un valore di decremento per riprovare.)

(Ricordare inoltre di aggiornare il riferimento automatico dei tentativi in ​​base all’ambito in cui si rilascia la funzione in per esempio static :: o $ this->)

 function convert($from, $to, $retry = 0) { $ch = curl_init("http://download.finance.yahoo.com/d/quotes.csv?s=$from$to=X&f=l1&e=.csv"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_NOBODY, false); $rate = curl_exec($ch); curl_close($ch); if ($rate) { return (float)$rate; } elseif ($retry > 0) { return convert($from, $to, --$retry); } return false; } 

Stavo usando iGoogle fino a quando non è andato a pancia in giù, mi sta bene.

Grazie a Nerfair tho nel suo commento in risposta al commento di hobailey sopra, questo funziona IMPRESSIONANTE. Ho pensato di postarlo qui così puoi vedere come funziona!

http://query.yahooapis.com/v1/public/yql?q=select * da yahoo.finance.xchange dove pair in (“USDCNY”) & format = json & env = store: //datatables.org/alltableswithkeys&callback=

Ecco il link url encoded: http://query.yahooapis.com/v1/public/yql?q=select%20 *% 20da% 20yahoo.finance.xchange% 20where% 20pair% 20in% 20% 28% 22USDCNY% 22% 29 & format = json & env = negozio: //datatables.org/alltableswithkeys&callback=

Super bello, basta cambiare la coppia di valute. Grazie Nerfair!