以编程方式访问货币汇率

我正在build立一个在线订购系统,但是我在澳大利亚,为了国际客户,我想用美元或者欧元来显示价格,所以他们不需要花费精力来从澳元兑换。

有谁知道我是否可以通过一个易于parsing的格式从网上获得最新的汇率,我可以从我的PHP脚本访问?


更新:我现在写了一个PHP类实现了这一点。 你可以从我的网站获取代码 。

您可以从yahoo以简单的格式获得货币转换:

例如,从GBP转换为EUR: http://download.finance.yahoo.com/d/quotes.csv?s=GBPEUR=X&f=sl1d1t1ba&e=.csv : http://download.finance.yahoo.com/d/quotes.csv?s=GBPEUR=X&f=sl1d1t1ba&e=.csv

这个答案非常晚,但是上面的答案中缺less一些关键信息。

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

大多数外汇服务只报出即期汇率(买入和卖出之间)。 现货是汇率的一种速记,但是没有人能够获得现货,因为你只能在出价时买入或者在买入时买入。 你通常看起来至less有1%的差价,因此你的客户现货汇率是0.5%。

但它不止于此,您的客户几乎可以肯定使用信用卡,Visa / Mastercard / Amex全部收取外汇费用。 根据我的经验,这是不平凡的,至less2.5%。 例如,花旗银行澳大利亚收费3.3%。 这些因卡而异,因此您无法预测您的客户将收到的最终价格。

如果您想根据汇率为您的客户报价“准确”的价格,您需要考虑上述因素并提供一个缓冲区,这样您的收费就不会超过您所报价格。

FWIW,我已经增加了4%,以F / X转换否则表示。

可能会很高兴补充

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

到名单。

欧洲中央银行根据中央银行在欧洲中央银行体系内外的常规日常协调程序提供的官方参考利率。

Feed是使用XML和其他格式的 。
更新通常在下午2点15分(14:15)ECB时间(=法兰克福时间)进行。

我最近实现了同样的事情,但使用Google的API。 查询url如下所示:

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

它需要3个参数。 第一个参数是金额,后面是您要转换的ISO 4217货币代码,等号和问号以及要转换为的货币代码。 您可以在这里findGoogle支持的代码列表。 对查询的响应如下所示:

 {lhs: "1 British pound",rhs: "1.6132 US 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。 希望能帮助到你!

另一个很好的免费和开源链接是这样的:

https://raw.github.com/currencybot/open-exchange-rates/master/latest.json
(我在这里find它: http : //josscrowcroft.github.com/open-exchange-rates/ )
[更新]:
开放汇率项目数据已经从GitHub移开。
现在可以在http://openexchangerates.org/获得;
JSON格式的数据可在http://openexchangerates.org/latest.jsonfind

没有访问费用,没有费率限制 ,没有丑陋的XML – 只是免费的 ,每小时更新JSON格式的汇率。
这现在不是“完全”免费的。 新的许可证规定,允许每月高达1000次点击,然后您需要支付。 如果您想使用单币种转换器(基本function),您还需要付费。

[注意:你也可以看看这个答案。 ]

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

在YQL控制台中试用

逗号分隔的格式比“(EURUSD”,“GBPUSD”)中的哪一对更可取,但无论如何,您可以同时使用这两种格式,甚至可以将它们混合。

这是一个提供汇率的肥皂服务

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

这个网站有免费的货币转换器服务:

http://www.webservicex.net/WS/WSDetails.aspx?WSID=10

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

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

你可以在那里添加一个数据库caching,以确保你不会受到限制

正如其他post/评论中指出的那样,您可以使用此汇率来计算您的货币

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

Oanda.com将汇率作为XML API公开,但不是免费的

coinnill.com有一种networking服务。

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

会给你例如澳元 – >美元的利率。 你只需要parsing返回的XML。

我感到不得不补充说:

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

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

费率每小时更新一次,因此大多数用途都可以,每个月可以获得每月7美元的30000美元查询。 我从来不需要更多,但是对于更高的产量来说,这个比率是非常合理的。

这是为我工作。

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