Програмний доступ до обмінних курсів валют [закрито]


112

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

Хто-небудь знає, чи можу я здійснити актуальні курси обміну з мережі десь у простому для розбору форматі, до якого я можу отримати доступ зі свого сценарію PHP?


ОНОВЛЕННЯ: Зараз я написав клас PHP, який реалізує це. Ви можете отримати код з мого веб-сайту .


1
@Kelly: Дуже гарна пропозиція, оскільки Google безкоштовний і має великі шанси все-таки бути в найближчому майбутньому: я хотів би запропонувати вам надіслати це як відповідь.
Ерік О Лебігот

1
Не можу редагувати коментар. Ось нове посилання jarloo.com/exchange-rate-api
Келлі

1
дякую за поділ @Adam Pierce! Чи є спосіб отримати також історичні тарифи?
Аріс

Ви також можете використовувати це посилання. Безкоштовно. Зареєструйтесь та отримайте API KEY. jsonrates.com/docs
K Chauhan

Використовуйте Currencylayer.com - вони надають фактичні та історичні тарифи у форматі JSON, а також кілька прикладів PHP ( Currencylayer.com/documentation )
Франк,

Відповіді:


71

Ви можете отримати конвертацію валюти у простому форматі від Yahoo:

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


Це сучасний і простий аналіз. Це те, що я після.
Адам Пірс

4
Мене теж цікавить це, чи є інформація про те, які параметри стоять? Зокрема, параметр "f". Я ніде не можу знайти жодної інформації.
Рибний торт

9
Чи законно читати ці дані, якщо у вас є комерційний веб-сайт?
Молодший Мейхе

4
Подальший експеримент показує, що ви можете запитувати декілька коефіцієнтів конверсії одночасно, розділяючи комами символи в параметрі s, наприклад: download.finance.yahoo.com/d/…
Myster

3
Чи є спосіб вказати дату?
Максим Єгорушкін

40

Ця відповідь ДУЖЕ запізнюється, але у вищезазначених відповідях бракує ключової інформації.

Якщо ви хочете показати своїм клієнтам точні ціни, важливо зрозуміти, як працюють курси валют.

Більшість FX-сервісів цитують лише спотовий тариф (посередині між ставками та запитом). Пляма - це своєрідна стенограма для обмінного курсу, але ніхто не отримує це місце, тому що ви можете продавати лише за заявкою або купувати за запитом. Зазвичай ви шукаєте принаймні 1% розкиду між ними, тому ставка спот для ваших клієнтів знижується на 0,5%.

Але це не зупиняється, ваші клієнти майже напевно користуються кредитною карткою, а Visa / Mastercard / Amex стягують валютні збори. За моїм досвідом, це нетривіально - ОСТАНО 2,5%. Наприклад, Citibank Australia справляє 3,3%. Вони варіюються від картки до картки, тому ви не можете передбачити кінцеву ціну, за яку клієнтам буде виставлено рахунок.

Якщо ви хочете запропонувати вашим клієнтам "точну" ціну на основі обмінного курсу, вам потрібно врахувати вищезазначене та надати буфер, щоб ви не закінчилися стягувати більше того, що ви процитували.

FWIW, я додав 4% до того, що F / X конверсія в іншому випадку вказуватиме.


Також ставки форекс постійно змінюються, і банки можуть враховувати ставку лише опівночі за місцевим часом. З ~ 2% денної волатильності, то є невизначеність.
Олександр Ч.

1
Це чудовий момент. Однозначно підкреслює потребу в якомусь буфері, якщо ви показуєте одну валюту, а іншу заряджаєте. Для чого це варто, за моїх 4% прокладки я ніколи ні в кого не робив відшкодування.
філої

Не всі банки стягують це. Наприклад, кредитні та дебетові картки з Мексики просто конвертують валюту за ціною, яку вони мають у той день за продаж валюти, і більше нічого.
Франциско Зарабобозо

26

Можливо, приємно додати

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

до списку.

Офіційні референтні ставки встановлюються Європейським центральним банком на основі регулярних процедур щоденного узгодження між центральними банками в межах та поза Європейською системою центральних банків.

Канал у XML та деяких інших форматах .
Оновлення зазвичай відбувається о 14:15 (14:15) за ЄЦБ (= Франкфуртський час).


4
Щойно перевірено (через 20 хвилин після Вашого коментаря), і він доступний для мене.
Жакко

Я щойно намагався цим скористатися, але VB.NET відмовляється правильно XPath це. Це тому, що URL-адреси, що визначають простори імен, обидва 404ing?
Рікі

це посилання завжди показує вчорашні ставки, а не сьогоднішні.
erkanyildiz

12

Нещодавно я реалізував те саме, але за допомогою API Google. 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. Сподіваюся, це допомагає!


2
Ви можете використовувати json_decode замість вибухати, якщо хочете, щоб він був більш надійним.
діолемо

Чи є обмеження в цій службі?
сайти

Це занадто просто у
фразуванні


Я використовував аналогічний код, який було змінено для використання методу Yahoo quotes.csv із лише двома рядковими змінами коду.
Маркус

12

Ще одне чудове безкоштовне та відкрите посилання:

https://raw.github.com/currencybot/open-exchange-rates/master/latest.json
(про це я дізнався тут: http://josscrowcroft.github.com/open-exchange-rates/ )

[Оновлення] :
Дані проекту "Відкриті курси валют" були переміщені з GitHub.
Він доступний зараз за посиланням: http://openexchangerates.org/
Дані у форматі JSON доступні за адресою: http://openexchangerates.org/latest.json

Без плати за доступ, без обмеження тарифів , без потворних XML - просто безкоштовні , щогодини оновлені курси валют у форматі JSON.
Це зараз не "цілком" безкоштовно. У новому ліцензуванні зазначено, що дозволено до 1000 звернень на місяць, а потім потрібно платити. Вам також потрібно заплатити, якщо ви хочете використовувати конвертер єдиної валюти (основна функціональність).

[Примітка. Ви можете поглянути на цю відповідь також. ]


1
Можливо, це вже не працює
shasi kanth

1
Дякуємо @dskanth за нагадування. Посилання та інформація оновлені. :)
zeFree

1
Вільний план OpenExchangeRates доступний тут від 1000 запитів в місяць .. його крихітне посилання , щоб ви не помітили його в більшості випадків .. openexchangerates.org/signup/free
TheFlash

6

Я додав таблицю відкритих даних до YQL, ви можете використовувати її для отримання даних обмінного курсу з yahoo.finance.

Спробуйте його в консолі YQL

Формат, розділений комами, є кращим над "де пара в (" EURUSD "," GBPUSD ")", але в будь-якому випадку, ви можете використовувати як і навіть змішувати їх.


Дякую, чувак. Це в поєднанні з документами YQL на PHP допомогло мені великий час!
miCRoSCoPiC_eaRthLinG

привіт, чи можна додати параметр дати, наприклад, я хочу отримати історичний обмінний курс.
Еліза

4

Ось послуга Мило, яка пропонує обмінний курс

http://www.newyorkfed.org/markets/pilotfx.html


4
Соромно, що це мило, а не відпочинок. Окрім цього, це корисна споруда
Девід Арно

Це вільно і стабільно? Чи зможу я поставити програмне забезпечення, яке покладається на це?

4
мабуть, вони перестали це робити @ 31.12.2008
Sevki


3

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


Я не бачу, куди ви надали "суму" для конвертації, але ви отримаєте якусь кількість назад ... чи можете ви поясніть це?
SpokaneDude

1
Він не приймає суму. Це перетворить лише з валюти в валюту, де сума з валюти завжди одна (1). Тоді вам належить скласти алгоритм перерахування вашої суми
Кевін

Дякую ... це має сенс. зараз ...
SpokaneDude

3

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

Ви можете додати туди кеш БД, щоб переконатися, що ви не заглушите і т.д.

Як було зазначено в інших публікаціях / коментарях, ви використовували цей курс для обчислення вашої валюти




1

coinnill.com має свого роду веб-сервіс.

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

приведе, наприклад, курс AUD -> USD. Вам просто потрібно буде розібрати XML, який повертається.


Ці дані здаються застарілими. Каже, AUD становить 0,77, але я знаю, що сьогодні це 0,69.
Адам Пірс

Також корисний фрагмент даних (курси обміну) - єдиний біт, не кодований у XML! Це просто простий текст у CDATA ...
Рікі

1

Я змушений додати:

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

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

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


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.