以编程方式访问货币汇率

我正在建立一个在线订购系统,但是我在澳大利亚,对于国际客户,我希望以美元或欧元显示价格,这样他们就不必费心从澳元转换成其他货币。

有没有人知道我是否可以通过 PHP 脚本以一种易于解析的格式从网上找到最新的汇率?


更新: 我现在已经编写了一个 PHP 类来实现这个.You can get the code from my website

74389 次浏览

Coinnill.com 有一种网络服务。

Http://coinmill.com/rss/aud_usd.xml

将给出澳元-> 美元利率,例如。您只需要解析返回的 XML。

XE.com 为他们的汇率提供饲料,虽然不是免费的。

Here is a Soap service that offers exchange rate

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

This site has a currency converter service for free:

Http://www.webservicex.net/ws/wsdetails.aspx?wsid=10

你可以从雅虎获得一个简单的货币转换格式:

For example, to convert from GBP to EUR: http://download.finance.yahoo.com/d/quotes.csv?s=GBPEUR=X&f=sl1d1t1ba&e=.csv

也许应该加上

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

名单。

欧洲中央银行根据欧洲中央银行体系内外的中央银行之间的日常协商程序,提供官方参考汇率。

提要是 XML 和 其他格式格式的。
Updating normally takes place at 2.15 p.m. (14:15) ECB time (= Frankfurt time).

Oanda.com 以 XML API 的形式公开货币汇率,但不是免费的

This answer is VERY late, but there is a key bit of info missing from the above answers.

如果你想向你的客户展示准确的价格,了解外汇汇率是如何工作的就很重要。

大多数外汇服务只报即期汇率(在买入和卖出之间)。现货是汇率的一种简写,但是没有人能够得到现货,因为你只能在买入时卖出或者在卖出时买入。你通常会看到他们之间至少有1% 的利差,所以即期利率是0.5% 为您的客户。

但事情还不止于此,你的客户几乎肯定在使用信用卡,而且 Visa/Mastercard/Amex 都要收取外汇手续费。根据我的经验,这些都不是小数目,至少有2.5% 。例如,澳大利亚花旗银行(Citibank Australia)收取3.3% 的费用。这些不同的卡,所以没有办法为您预测最终的价格,您的客户将收取帐单。

如果你想根据汇率向你的客户报出一个“准确”的价格,你需要考虑上述因素,并提供一个缓冲区,这样你就不会收取比你报价更多的费用。

FWIW, I've been adding 4% to what the F/X conversion would otherwise indicate.

我不得不补充一句:

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

非常简单,使用一个干净的 RESTful API 和注册需要5秒钟。包括大多数主要语言的编码示例,大多数是2-3行长。

费率每小时更新一次,所以对于大多数用户来说都是可以接受的,每月7美元就可以获得30000次查询。我从来没有需要比这更多的,但利率是非常合理的,为更高的数量。

我将 Open Data 表添加到 YQL 中,您可以使用它从 yahoo.finance 检索汇率数据。

在 YQL 控制台中尝试

Comma-separated format is preferrable over "where pair in ('EURUSD','GBPUSD')" but anyway, you can use both and even intermix them.

试试这个 RESTful (我不确定这是否真的是一个 REST,因为我最初是从 SOAP 获得它的,所以我只是尝试使用 HTTP GET 访问它)

another very great free and opensource link is this:

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

No access fees, no rate limits, No ugly XML - just 自由, hourly updated exchange rates in JSON format.
这并不是“完全”免费的。新的许可规定允许每月最多1000次点击,然后你需要付费。如果您想使用单一货币转换器(基本功能) ,还需要付费。

[注意: 你可能也想看看 这个的答案。]

IGoogle 于2013年11月1日退役,这个 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];
}

你可以添加一个数据库缓存在那里,以确保你不会得到节流等。

As has been noted on other posts / comments you'd then use this rate to calculate your currencies

我最近也实现了同样的功能,但是使用的是 Google 的 API:

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

It takes 3 parameters. The first parameter is the amount, followed by the ISO 4217 currency code you're converting from, an equals sign and a question mark, and the currency code you're converting to. You can find a list of codes that Google supports 给你. The response to the query will look like this:

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

I'm sure it's far from the most elegant way to do this, but I'm pretty new to PHP. Hope it helps!

This is working for me .

货币汇率 API: http://currency-api.appspot.com/