Как получить курсы обмена валют через API, например, Google Finance?

137

Теперь я нашел Google Finance API и начал просматривать это, но я нашел много информации о портфелях, сделках, позициях и другие вещи, о которых я ничего не знаю.

Я смотрю на неправильные документы? Что мне нужно сделать, чтобы получить фид обменных курсов от GF? Возможно ли это?

ИЗМЕНИТЬ

Сделать вещи немного яснее. Меня не интересует технический материал, и я не хочу кода.

  • 0
    см. stackoverflow.com/a/21627583/592868 для php-класса с использованием Yahoo! финансов
  • 3
    @ Джордж Стокер Этот вопрос изначально был очень конкретным в отношении какого-то глупого API Google, который недавно был удален AFAIK. Каким-то образом люди начали добавлять альтернативы этому API, и он превратился в некий индекс об API обмена валют. Очевидно, что сообщество находит это полезным, так как оно получило тонны голосов и фаворитов ...
Показать ещё 4 комментария
Теги:
google-finance-api

10 ответов

726
Лучший ответ

Спасибо за все ваши ответы.

Бесплатная валютная конверсия:

  • Цены обновляются каждые 30 минут
  • Нет учетной записи

Образец конверсии URL: http://free.currencyconverterapi.com/api/v5/convert?q=EUR_USD&compact=y


Для потомков они вместе с другими возможными ответами:

  1. API Yahoo Finance Снято с производства 2017-11-06

    С поправкой с 2017-11-06 с сообщением

    Мы обратили наше внимание на то, что эта услуга используется в нарушение Условий использования Yahoo. Таким образом, услуга прекращается. Для всех будущих рынков и исследований данных о ценных бумагах, пожалуйста, обратитесь к finance.yahoo.com.

    Запрос: http://finance.yahoo.com/d/quotes.csv?e=.csv&f=sl1d1t1&s=USDINR=X
    Этот CSV использовался плагином jQuery под названием Curry. Карри с тех пор (2017-08-29) перешел на использование fixer.io вместо этого из-за проблем стабильности. Может быть полезно, если вам нужно больше, чем просто CSV.

  2. (благодаря Keyo). Язык запросов Yahoo позволяет вам получить целую кучу валют сразу в XML или JSON. Данные обновляются вторым (тогда как Европейский центральный банк имеет данные дня) и останавливается в выходные дни. Не требует никакой регистрации.

    http://query.yahooapis.com/v1/public/yql?q=select * от yahoo.finance.xchange, где пара в ("USDEUR", "USDJPY", "USDBGN", "USDCZK", "USDDKK", "USDGBP", "USDHUF", "USDLTL", "USDLVL", "USDPLN", "USDRON", "USDSEK", "USDCHF", "USDNOK", "USDHRK", "USDRUB", "USDTRY", "USDAUD" "USDCHRL", "USDCK", "USDCK", "USDHKD", "USDIDR", "USDILS", "USDINR", "USDKRW", "USDMXN", "USDMYR", "USDNZD", "USDPHP", "USDSGD", "USDTHB", "USDZAR", "USDISK") и env = store://datatables.org/alltableswithkeys

    Здесь Построитель запросов YQL , где вы можете протестировать запрос и скопировать URL-адрес: (НЕТ ДОЛГОЙ ДОСТУПНОСТИ)

    http://developer.yahoo.com/yql/console/?q=show%20tables&env=store://datatables.org/alltableswithkeys#h=select%20*%20from%20yahoo.finance.xchange%20where%20pair %20in %20% 28% 22USDMXN% 22% 2C %20% 22USDCHF% 22% 29

Изображение 7878

  1. API с открытыми исходными кодами

    Бесплатно для личного использования (1000 просмотров в месяц)
    Изменение "базы" (от "доллара США") запрещено в бесплатной учетной записи
    Требуется регистрация.
    Запрос: http://openexchangerates.org/latest.json
    Отклик:

    {
      "disclaimer": "This data is collected from various providers ...",
      "license": "all code open-source under GPL v3 ...",
      "timestamp": 1323115901,
      "base": "USD",
      "rates": {
          "AED": 3.66999725,
          "ALL": 102.09382091,
          "ANG": 1.78992886,
          // 115 more currency rates here ...
      }
    }
    
  2. API валютного слоя

    Бесплатный план для 1000 ежемесячных обращений
    Изменение "источника" (от "доллара США") запрещено в бесплатной учетной записи
    Требуется регистрация.
    Документация: currencylayer.com/documentation

    Ответ JSON:

    {
      [...]
      "timestamp": 1436284516,
      "source": "USD",
      "quotes": {
          "USDAUD": 1.345352401,
          "USDCAD": 1.27373397,
          "USDCHF": 0.947845302,
          "USDEUR": 0.91313905,
          "USDGBP": 0.647603397,
          // 168 world currencies
          }
      }
    
  3. API Fixer.io (данные Европейского центрального банка)

    Бесплатный план для 1000 ежемесячных обращений
    Изменение "источника" (от "доллара США") запрещено в бесплатном аккаунте. Требуется регистрация.

    Эта конечная точка API устарела и перестанет работать 1 июня 2018 года. Для получения дополнительной информации посетите страницу https://github.com/fixerAPI/fixer#readme)


    Веб-сайт: http://fixer.io/
    Пример запроса: http://api.fixer.io/latest?base=USD
    Собирает только одно значение за каждый день

  4. Европейский центральный банк

    Документы: http://www.ecb.int/stats/exchange/eurofxref/html/index.en.html#dev
    Запрос: http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml

    Ответ XML:

    <Cube>
      <Cube time="2015-07-07">
      <Cube currency="USD" rate="1.0931"/>
      <Cube currency="JPY" rate="133.88"/>
      <Cube currency="BGN" rate="1.9558"/>
      <Cube currency="CZK" rate="27.100"/>
    </Cube>
    
  5. Запрос на обменный курс Google (разобранный) В настоящее время недоступен:

    Запрос: http://rate-exchange.appspot.com/currency?from=USD&to=EUR
    Отклик:

    {"to": "EUR", "rate": 0.76911244400000001, "from": "USD"}
    


    Вот еще один JSON (P) API, основанный на API Google (источник: этот комментарий):
    http://rate-exchange.appspot.com/currency?from=USD&to=EUR&q=1

    Оригинальный ответ Райана.

  • 6
    Вот ссылка с более полезным объяснением API финансов Yahoo.
  • 4
    Обратите внимание, что данные проекта Open Exchange Rates были удалены из GitHub (данных там сейчас нет) и теперь обрабатываются через openexchangerates.org - спасибо!
Показать ещё 23 комментария
54
  • 0
    Привет @Keyo, когда я пробую пример YQL, который ты предоставил в моем коде Java, который пытается прочитать как URL, я получаю исключение ввода-вывода (Сервер вернул код ответа HTTP: 400 для URL: query.yahooapis.com/v1/public/ yql? q = select * from yahoo.finance.xchange, где pair in ("USDEUR") & env = store: //datatables.org/alltableswithkeys), который работает, если я просто скопирую этот URL в браузер
  • 0
    'public static void main (String [] args) {String currencyPair = "USDEUR"; Строка address = " query.yahooapis.com/v1/public/yql?q=select * from yahoo.finance.xchange где пара в (\" "+ currencyPair +" \ ") & env = store: //datatables.org/ alltableswithkeys "; try {// String response = URLReader.read (address); // System.out.println (response); URL url = новый URL (адрес); BufferedReader in = new BufferedReader (new InputStreamReader (url.openStream ())); } catch (Exception e) {// TODO Автоматически сгенерированный блок catch e.printStackTrace (); }} '
Показать ещё 3 комментария
52

Европейский центральный банк (ЕЦБ) также имеет самый надежный бесплатный канал, о котором я знаю. Он содержит приблизительно 28 валют и обновляется, по крайней мере, ежедневно.

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

Дополнительные форматы и инструменты см. на странице справки ECB: http://www.ecb.int/stats/exchange/eurofxref/html/index.en.html

  • 11
    Просто приложение, которое fixer.io обслуживает данные ECB как JSON или JSONP и с необязательным SSL.
  • 3
    К сожалению, fixer.io поставляется без гарантии. Не для производства.
Показать ещё 7 комментариев
35

Если вам нужен бесплатный и простой API для конвертации одной валюты в другую, попробуйте free.currencyconverterapi.com.

Отказ от ответственности, я автор сайта, и я использую его для одного из моих других сайтов.

Услуга бесплатна для использования даже в коммерческих приложениях, но не дает никаких гарантий. По соображениям производительности значения обновляются только каждый час.

Образец конверсии URL: http://free.currencyconverterapi.com/api/v5/convert?q=EUR_PHP&compact=ultra, который вернет json-форматированное значение, например {"EUR_PHP": 60.849184}

  • 1
    Благодарю. Каков источник конверсии? Это дает нам возможность измерить надежность вашего сервиса.
  • 0
    Существуют различные источники коэффициентов конверсии и запасной показатель, если один из источников вышел из строя. Y! это один из них.
Показать ещё 3 комментария
26

Я получил этот контент из http://www.scriptarticle.com/2012/05/03/get-live-currency-rates-and-currency-conversion-using-php-and-apis/

<?php

function get_currency($from_Currency, $to_Currency, $amount) {
    $amount = urlencode($amount);
    $from_Currency = urlencode($from_Currency);
    $to_Currency = urlencode($to_Currency);

    $url = "http://www.google.com/finance/converter?a=$amount&from=$from_Currency&to=$to_Currency";

    $ch = curl_init();
    $timeout = 0;
    curl_setopt ($ch, CURLOPT_URL, $url);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);

    curl_setopt ($ch, CURLOPT_USERAGENT,
                 "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)");
    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    $rawdata = curl_exec($ch);
    curl_close($ch);
    $data = explode('bld>', $rawdata);
    $data = explode($to_Currency, $data[1]);

    return round($data[0], 2);
}

// Call the function to get the currency converted
echo get_currency('USD', 'INR', 1);

?>
  • 5
    Если iGoogle вышел из цикла, это лучший вариант, предыдущий вариант www.google.com/ig больше не работает.
  • 0
    но если вы сделаете более 10 ответов, он больше не будет работать
Показать ещё 8 комментариев
13

Вот некоторые API обмена с примером PHP.

[ Open Exchange Rates API ]

Предоставляет 1000 запросов в месяц бесплатно. Вы должны зарегистрироваться и получить идентификатор приложения. Базовая валюта USD для бесплатной учетной записи. Проверьте поддерживаемые валюты и документацию.

// open exchange URL // valid app_id * REQUIRED *
$exchange_url = 'https://openexchangerates.org/api/latest.json';
$params = array(
    'app_id' => 'YOUR_APP_ID'
);

// make cURL request // parse JSON
$curl = curl_init();
curl_setopt_array($curl, array(
    CURLOPT_URL => $exchange_url . '?' . http_build_query($params),
    CURLOPT_RETURNTRANSFER => true
));
$response = json_decode(curl_exec($curl));
curl_close($curl);

if (!empty($response->rates)) {
    // convert 150 USD to JPY ( Japanese Yen )
    echo $response->rates->JPY * 150;
}

150 USD = 18039.09015 JPY

[ API уровня валюты ]

Предоставляет 1000 запросов в месяц бесплатно. Вы должны зарегистрироваться и захватить ключ доступа. Таможенная базовая валюта не поддерживается в бесплатной учетной записи. Проверьте документацию.

$exchange_url = 'http://apilayer.net/api/live';
$params = array(
    'access_key' => 'YOUR_ACCESS_KEY',
    'source' => 'USD',
    'currencies' => 'JPY',
    'format' => 1 // 1 = JSON
);

// make cURL request // parse JSON
$curl = curl_init();
curl_setopt_array($curl, array(
    CURLOPT_URL => $exchange_url . '?' . http_build_query($params),
    CURLOPT_RETURNTRANSFER => true
));
$response = json_decode(curl_exec($curl));
curl_close($curl);

if (!empty($response->quotes)) {
    // convert 150 USD to JPY ( Japanese Yen )
    echo '150 USD = ' . $response->quotes->USDJPY * 150 . ' JPY';
}

150 USD = 18036.75045 JPY

  • 14
    Хиты квоты очень легко .. не рекомендуется.
  • 6
    @AyushGoyal Если вы используете API для каждого преобразования, вы все равно делаете это неправильно. Установите cronjob для запроса API каждый час и сохраняйте текущие обменные курсы в таблице базы данных, а когда вам нужно выполнить расчеты обмена, извлекайте данные из таблицы так часто, как вам нравится. Таким образом, вы никогда не достигнете месячного лимита.
1

Вы можете попробовать geoplugin

Помимо геолокации, выполняемой по IP (но IP-адрес провайдера IP, поэтому не так точен), они также возвращают валюты и имеют конвертер валют: см. примеры.

У них обновлено 111 валют.

0

Для всех новичков, которые ищут некоторый намек на конвертацию валют, взгляните на эту ссылку. Datavoila

Это помогло мне много узнать о моем собственном проекте на С#. На всякий случай сайт исчезнет, ​​я добавлю код ниже. Просто добавьте приведенные ниже шаги в свой собственный проект. Извините за форматирование.

const string fromCurrency = "USD";
const string toCurrency = "EUR";
const double amount = 49.95;
// For other currency symbols see http://finance.yahoo.com/currency-converter/
// Clear the output editor //optional use, AFAIK
Output.Clear();

// Construct URL to query the Yahoo! Finance API
const string urlPattern = "http://finance.yahoo.com/d/quotes.csv?s={0}{1}=X&f=l1";
string url = String.Format(urlPattern, fromCurrency, toCurrency);

// Get response as string
string response = new WebClient().DownloadString(url);

// Convert string to number
double exchangeRate =
    double.Parse(response, System.Globalization.CultureInfo.InvariantCulture);

// Output the result
Output.Text = String.Format("{0} {1} = {2} {3}",
                            amount, fromCurrency,
                            amount * exchangeRate, toCurrency);
0

Вот один простой PHP Script, который получает обменный курс между GBP и USD

<?php
$amount = urlencode("1");
$from_GBP0 = urlencode("GBP");
$to_usd= urlencode("USD");
$Dallor = "hl=en&q=$amount$from_GBP0%3D%3F$to_usd";
$US_Rate = file_get_contents("http://google.com/ig/calculator?".$Dallor);
$US_data = explode('"', $US_Rate);
$US_data = explode(' ', $US_data['3']);
$var_USD = $US_data['0'];
echo $to_usd;
echo $var_USD;
echo '<br/>'; 
?>

Курсы валют Google не являются точными. Google говорит: > Google не может гарантировать точность обменных курсов, используемых калькулятором. Вы должны подтвердить текущие ставки перед совершением каких-либо транзакций, на которые могут повлиять изменения обменных курсов. Курсы иностранной валюты, предоставляемые Citibank N.A., отображаются по лицензии. Цены указаны исключительно в информационных целях и могут быть изменены без предварительного уведомления. Тарифы на фактические транзакции могут отличаться, и Citibank не предлагает вносить какие-либо транзакции в любой момент.

  • 2
    iGoogle был закрыт 1 ноября 2013 г. Этот API больше не работает.
0

Если вы ищете решение на основе Ruby для этой проблемы, я рекомендую использовать метод Google Calculator для решения, аналогичного следующему: http://j.mp/QIC564

require 'faraday'
require 'faraday_middleware'
require 'json'

# Debug: 
# require "pry"


country_code_src = "USD"
country_code_dst = "INR"
connection = Faraday.get("http://www.google.com/ig/calculator?hl=en&q=1#{country_code_src}=?#{country_code_dst}")

currency_comparison_hash = eval connection.body #Google output is not JSON, it a hash

dst_currency_value, *dst_currency_text = *currency_comparison_hash[:rhs].split(' ')
dst_currency_value = dst_currency_value.to_f
dst_currency_text = dst_currency_text.join(' ')

puts "#{country_code_dst} -> #{dst_currency_value} (#{dst_currency_text} to 1 #{country_code_src})"
  • 1
    iGoogle был закрыт 1 ноября 2013 г. Этот API больше не работает.
  • 0
    gist.github.com/martonpe/1c797ef3332e9724a76a - это работает

Ещё вопросы

Сообщество Overcoder
Наверх
Меню