我正在设置一个在线订购系统,但我在澳大利亚,对于国际客户,我想显示美元或欧元的价格,这样他们就不必费心从澳大利亚元转换。
有人知道我是否可以从网络上获取最新的汇率,并以易于解析的格式从我的PHP脚本中访问吗?
我正在设置一个在线订购系统,但我在澳大利亚,对于国际客户,我想显示美元或欧元的价格,这样他们就不必费心从澳大利亚元转换。
有人知道我是否可以从网络上获取最新的汇率,并以易于解析的格式从我的PHP脚本中访问吗?
http://download.finance.yahoo.com/d/quotes.csv?s=GBPEUR=X&f=sl1d1t1ba&e=.csv
这个回答来的非常晚,但以上回答中缺少了一个重要信息。
如果您想向客户展示准确的价格,理解外汇汇率如何工作是很重要的。
大多数外汇服务只报价即期汇率(Bid和Ask之间的中间价)。即期汇率是一种简写的汇率表示方法,但没有人获得即期汇率,因为您只能按卖出价或买入价进行交易。它们之间通常至少有1%的差距,因此即期汇率对于您的客户而言会偏离0.5%。
但这并不止于此,您的客户几乎肯定正在使用信用卡,Visa / Mastercard / Amex都会收取外汇费用。根据我的经验,这些费用并不小,至少为2.5%。例如,澳大利亚花旗银行收取3.3%的费用。由于这些费用因卡而异,因此无法预测最终会向客户收取的价格。
如果您想基于汇率向客户提供“准确”的价格,则需要考虑上述因素并提供缓冲区,以免向客户收取比您所报价更高的价格。
顺便说一句,我一直在将外汇转换所示的价格增加4%。
可能很不错地添加
http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml
添加到列表中。
欧洲央行提供的官方参考利率基于欧洲系统内外部中央银行之间的定期每日协商程序。
该信息以XML及其他一些格式提供。
更新通常在欧洲中央银行时间(=法兰克福时间)下午2点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次请求,然后需要付费。如果您想使用单一货币转换器(基本功能),也需要付费。
[注意:您可能还想查看这个答案。]
我最近实现了同样的功能,但是使用了Google的API。查询URL看起来像这样:
http://www.google.com/ig/calculator?hl=en&q=1GBP=?USD
这个函数需要3个参数。第一个参数是金额,然后是你要转换的ISO 4217 货币代码、一个等于号和一个问号,以及你要转换成的货币代码。你可以在这里找到Google支持的代码列表here。查询的响应结果如下:
{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还不是很熟悉。希望能对你有所帮助!
尝试一下 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];
}
你可以在其中添加一个数据库缓存,以确保不会被限制等。
正如其他帖子/评论所指出的那样,然后您将使用此速率计算您的货币。