我正在建立一个在线订购系统,但我在澳大利亚,对于国际客户,我想以美元或欧元显示价格,这样他们就不必费力地从澳元兑换成美元。
有谁知道我是否可以以一种易于解析的格式从网上获取最新汇率,我可以从我的 PHP 脚本访问?
更新:我现在写了一个 PHP 类来实现这个。您可以从我的网站获取代码。
我正在建立一个在线订购系统,但我在澳大利亚,对于国际客户,我想以美元或欧元显示价格,这样他们就不必费力地从澳元兑换成美元。
有谁知道我是否可以以一种易于解析的格式从网上获取最新汇率,我可以从我的 PHP 脚本访问?
更新:我现在写了一个 PHP 类来实现这个。您可以从我的网站获取代码。
您可以从 yahoo 获得简单格式的货币转换:
例如,要将 GBP 转换为 EUR:
http://download.finance.yahoo.com/d/quotes.csv?s=GBPEUR=X&f=sl1d1t1ba&e=.csv
这个答案已经很晚了,但是上面的答案中缺少一些关键信息。
如果您想向您的客户显示准确的价格,了解外汇汇率的运作方式非常重要。
大多数外汇服务仅报价即期汇率(介于买入价和卖出价之间)。现货是汇率的一种简写,但没有人能拿到现货,因为你只能在买价时卖出或在卖价时买进。您通常会在它们之间寻找至少 1% 的价差,因此您的客户的即期汇率为 0.5%。
但这并不止于此,您的客户几乎可以肯定使用信用卡,而 Visa/Mastercard/Amex 都收取外汇费用。根据我的经验,这些都不是微不足道的,至少 2.5%。例如,花旗澳大利亚银行收取 3.3% 的费用。这些因卡而异,因此您无法预测客户将被计费的最终价格。
如果您想根据汇率向您的客户报价“准确”的价格,您需要考虑上述因素并提供缓冲,这样您最终的收费就不会超过您的报价。
FWIW,我一直在 F/X 转换的其他情况下增加 4%。
可能会很好添加
http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml
到列表中。
官方参考利率由欧洲中央银行根据欧洲中央银行体系内外中央银行之间的日常协调程序提供。
提要采用 XML 和其他一些格式。
更新通常在欧洲央行时间(=法兰克福时间)下午 2.15 (14:15) 进行。
另一个非常棒的免费和开源链接是:
https://raw.github.com/currencybot/open-exchange-rates/master/latest.json
(我在这里找到了它:http: //josscrowcroft.github.com/open-exchange-rates/)
[更新] :
Open Exchange Rates 项目数据已从 GitHub 移出。
现在可在以下网址获得:http: //openexchangerates.org/
JSON 格式的数据可在以下网址获得:http: //openexchangerates.org/latest.json
没有访问费用,没有速率限制,没有丑陋的 XML - 只是免费的,每小时更新的 JSON 格式的汇率。
现在这不是“完全”免费的。新的许可规定每月最多允许 1000 次点击,然后您需要付费。如果您想使用单一货币转换器(基本功能),您还需要付费。
[注意:您可能也想看看这个答案。]
我最近实现了同样的事情,但使用了谷歌的 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 还是很陌生。希望能帮助到你!
我在 YQL 中添加了 Open Data 表,您可以使用它从 yahoo.finance 检索汇率数据。
逗号分隔格式比“where pair in ('EURUSD','GBPUSD')”更可取,但无论如何,您可以同时使用它们甚至混合使用它们。
这是提供汇率的肥皂服务
本网站免费提供货币换算服务:
试试这个RESTful(我不确定这是否真的是一个 REST,因为我最初是从 SOAP 获得的,我只是尝试使用 HTTP GET 访问它)
要获得汇率,您可以使用以下内容:
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];
}
您可以在其中添加数据库缓存以确保您不会受到限制等。
正如在其他帖子/评论中所指出的那样,您将使用此汇率来计算您的货币
XE.com提供他们的汇率信息。虽然不是免费的。
Oanda.com 将货币汇率作为 XML API 公开,但不是免费的
我觉得有必要补充:
http://www.exchangerate-api.com/
使用干净的 RESTful API 非常简单,注册只需 5 秒。包括大多数主要语言的编码示例,大多数是 2-3 行长。
费率每小时更新一次,因此适用于大多数用途,您每月只需 7 美元即可获得 30000 次查询。我从来没有需要更多的东西,但是对于更高的数量来说,价格是非常合理的。
这对我有用。
货币汇率 API:http ://currency-api.appspot.com/