web-dev-qa-db-ja.com

為替レートをプログラムでアクセスする

私はオンライン注文システムをセットアップしていますが、オーストラリアにいます。国際的な顧客の場合、価格を米ドルまたはユーロで表示したいので、オーストラリアドルから変換するために精神的な努力をする必要はありません。

PHPスクリプトからアクセスできる解析しやすい形式でどこかで最新の為替レートをネットから引き上げることができるかどうかは誰にもわかりますか?


UPDATE:これを実装するPHPクラスを作成しました。 コードは私のウェブサイト

112
Adam Pierce

Yahooから簡単な形式で通貨換算を取得できます。

たとえば、GBPからEURに変換するには:http://download.finance.yahoo.com/d/quotes.csv?s=GBPEUR=X&f=sl1d1t1ba&e=.csv

71
Greg

この回答は非常に遅れていますが、上記の回答には重要な情報がありません。

正確な価格を顧客に表示する場合は、外国為替レートの仕組みを理解することが重要です。

ほとんどのFXサービスは、スポットレート(買値と売値の中間)のみを引用しています。スポットは為替レートの一種の略記ですが、入札でのみ販売できるか、売りで購入できるため、誰もスポットを取得できません。通常、それらの間で少なくとも1%のスプレッドを見ているため、スポットレートは顧客に対して0.5%オフです。

しかし、それだけではありません。顧客はほぼ確実にクレジットカードを使用しており、Visa/Mastercard/Amexはすべて外国為替手数料を請求しています。私の経験では、これらは少なくとも2.5%であり、些細なことではありません。たとえば、Citibank Australiaは3.3%を請求します。これらはカードごとに異なるため、顧客に請求される最終価格を予測することはできません。

為替レートに基づいて顧客に「正確な」価格を見積もる場合は、上記を考慮して、見積額以上に請求しないようにバッファを提供する必要があります。

FWIW、私はF/X変換がそうでなければ示すであろうものに4%を加えてきました。

40
philoye

追加するといいかもしれません

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

リストに。

公式の参照レートは、欧州中央銀行システム内外の中央銀行間の定期的な毎日の調整手順に基づいて、 ヨーロッパ中央銀行 によって提供されます。

フィードはXMLで、 その他の形式 です。
更新は通常午後2時15分に行われます。 (14:15)ECB時間(=フランクフルト時間)。

26
Jacco

最近同じことを実装しましたが、Googleの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にはかなり慣れていません。それが役に立てば幸い!

12
Natsukane

もう1つの非常に優れた無料のオープンソースリンクは次のとおりです。

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形式の1時間ごとに更新される為替レート。
現在、これは「完全に」無料ではありません。新しいライセンスでは、1か月あたり最大1000件のヒットが許可されているため、料金を支払う必要があります。単一通貨コンバーター(基本機能)を使用する場合も支払いが必要です。

[注: this answerもご覧ください。 ]

12
zeFree

Open DataテーブルをYQLに追加しました。これを使用して、yahoo.financeから為替レートデータを取得できます。

YQLコンソールで試してみてください

「where pair in( 'EURUSD'、 'GBPUSD')」よりもコンマ区切り形式の方が望ましいですが、とにかく両方を使用することも、それらを混在させることもできます。

6
mtelis

こちらが為替レートを提供する石鹸サービスです

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

4
Ólafur Waage

このサイトには、無料の通貨換算サービスがあります。

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

4
David Wengier

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

DBキャッシュをそこに追加して、スロットルなどが発生しないようにすることができます。

他の投稿/コメントで指摘されているように、このレートを使用して通貨を計算します

3
oodavid

試してみてください RESTful(これが本当にRESTかどうかはわかりません。元々SOAPから取得したので、HTTP GETを使用してアクセスしようとしました)

3
Kevin

Oanda.comは通貨レートをXML APIとして公開していますが、無料ではありません

2

XE.com は、為替レートのフィードを提供します。しかし無料ではありません。

2
jop

以下を追加する必要があります。

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

クリーンなRESTful APIとサインアップを使用すると非常に簡単に使用でき、5秒かかります。ほとんどの主要言語のコーディング例が含まれています。ほとんどは2〜3行です。

料金は1時間ごとに更新されるため、ほとんどの用途で問題ありません。また、1か月あたり7ドルで30000の月間クエリを取得できます。それ以上必要なことは一度もありませんが、量が多い場合は料金が非常に妥当です。

1
Alex Recarey

これは私のために働いています。

為替レートAPI: http://currency-api.appspot.com/

1
Nirav Ranpara

coinnill.comには一種のWebサービスがあります。

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

たとえば、AUD-> USDレートが表示されます。戻ってくるXMLを解析するだけです。

1
cagcowboy