Программный доступ к курсам обмена валюты

Я настраиваю систему онлайн-заказов, но я в Австралии и для международных клиентов, я хотел бы показать цены в долларах США или евро, чтобы им не приходилось делать умственные усилия, чтобы конвертировать из австралийских долларов.

Кто-нибудь знает, могу ли я поменять текущие курсы обмена с сети где-нибудь в удобном для анализа формате, с которым я могу получить доступ с моего PHP script?


UPDATE: Теперь я написал класс PHP, который реализует это. Вы можете получить код с моего сайта.

Ответ 1

Конверсии валют можно конвертировать в простой формат из yahoo:

Например, чтобы конвертировать из GBP в EUR: http://download.finance.yahoo.com/d/quotes.csv?s=GBPEUR=X&f=sl1d1t1ba&e=.csv

Ответ 2

Этот ответ ОЧЕНЬ поздний, но есть ключевой бит информации, отсутствующий в приведенных выше ответах.

Если вы хотите показать точные цены своим клиентам, важно понять, как работают обменные курсы.

Большинство услуг FX цитируют только курс спот (на полпути между Bid и Ask). Место является своего рода сокращением обменного курса, но никто не получает место, потому что вы можете продавать только на торгах или покупать по запросу. Обычно вы просматриваете, по крайней мере, 1% -ный спрэд между ними, поэтому спот-курс для ваших клиентов составляет 0,5%.

Но это не останавливается на достигнутом, ваши клиенты почти наверняка используют кредитную карту, а Visa/Mastercard/Amex взимают комиссию за обмен валюты. В моем опыте это нетривиально, на уровне 2,5%. Например, Citibank Australia взимает 3,3%. Они варьируются от карты к карте, поэтому вы не можете предсказать конечную цену, которую будут платить ваши клиенты.

Если вы хотите указать "точную" цену для своих клиентов на основе обменного курса, вам необходимо учитывать вышеизложенное и предоставить буфер, чтобы вы не загружались больше, чем вы указали.

FWIW, я добавил 4% к тому, что в противном случае означает преобразование F/X.

Ответ 4

другая очень большая свободная ссылка и ссылка на источник:

<ы > https://raw.github.com/currencybot/open-exchange-rates/master/latest.json
(Я нашел здесь: http://josscrowcroft.github.com/open-exchange-rates/)
[Update]:
Данные проекта "Открытые обменные курсы" были удалены с GitHub.
Он доступен сейчас: http://openexchangerates.org/
Данные в формате JSON доступны по адресу: http://openexchangerates.org/latest.json

Нет платы за доступ, без ограничений по скорости, без уродливого XML - просто бесплатно, почасово обновляемые курсы обмена в формате JSON.
Сейчас это не совсем "бесплатно". В новом лицензировании указывается, что разрешено до 1000 обращений в месяц, а затем вам нужно заплатить. Вам также нужно заплатить, если вы хотите использовать конвертер единой валюты (базовые функции).

[Примечание. Возможно, вы захотите посмотреть на этот ответ. ]

Ответ 5

Недавно я реализовал то же самое, но использовал Google API. URL-адрес запроса выглядит следующим образом:

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

Требуется 3 параметра. Первый параметр - это сумма, за которой следует код валюты ISO 4217, который вы конвертируете, знак равенства и знак вопроса, а также код валюты, который вы конвертируете к. Вы можете найти список кодов, которые Google поддерживает здесь. Ответ на запрос будет выглядеть так:

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

Это довольно понятно, поэтому я не буду вдаваться в подробности здесь. Вот как я обработал ответ на запрос:

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

Я уверен, что это далеко не самый элегантный способ сделать это, но я довольно новичок в PHP. Надеюсь, это поможет!

Ответ 6

Я добавил таблицу Open Data в YQL, вы можете использовать ее для извлечения данных обменного курса из yahoo.finance.

Попробуйте в консоли YQL

Формат, разделенный запятыми, предпочтительнее "где пара в (" EURUSD "," GBPUSD ")", но в любом случае вы можете использовать оба и даже смешать их.

Ответ 9

Попробуйте это RESTful (я не уверен, что это действительно REST, так как я получил это из SOAP, я просто попробовал для доступа к нему с помощью HTTP GET)

Ответ 10

iGoogle был уволен 1 ноября 2013 года. Этот API больше не работает.

Чтобы получить обменный курс, вы можете использовать что-то вроде этого:

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

Вы можете добавить кэш БД там, чтобы убедиться, что вы не получаете дросселирование и т.д.

Как было отмечено в других сообщениях/комментариях, вы использовали этот курс для расчета своих валют.

Ответ 11

XE.com предоставляет фид для своих обменных курсов. Не бесплатно, хотя.

Ответ 12

Oanda.com предоставляет валютные курсы как XML API, но не бесплатно

Ответ 13

coinnill.com имеет своего рода веб-сервис.

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

даст вам курс AUD → USD, например. Вам просто нужно проанализировать XML, который возвращается.

Ответ 14

Я вынужден добавить:

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

Мертвый прост в использовании с чистым API RESTful и регистрация занимает 5 секунд. Включает примеры кодирования для большинства основных языков, большинство из которых длиной 2-3 строки.

Цены обновляются ежечасно, так что это нормально для большинства целей, и вы можете получать 30000 ежемесячных запросов за 7 долларов в месяц. Мне никогда не требовалось больше, но ставки очень разумны для более высоких объемов.