프로그래밍 방식으로 환율에 액세스 [닫기]


112

온라인 주문 시스템을 설정하고 있지만 호주에 있으며 해외 고객을 위해 가격을 미국 달러 또는 유로로 표시하여 호주 달러에서 전환하기 위해 정신적으로 노력할 필요가 없습니다.

PHP 스크립트에서 액세스 할 수있는 파싱하기 쉬운 형식으로 인터넷 어딘가에서 최신 환율을 가져올 수 있는지 아는 사람이 있습니까?


업데이트 : 이제 이것을 구현하는 PHP 클래스를 작성했습니다. 내 웹 사이트에서 코드를 얻을 수 있습니다 .


1
@Kelly : 아주 좋은 제안입니다. Google은 무료이며 가까운 미래에도 계속 사용할 수있는 좋은 기회가 있기 때문입니다. 답으로 제출해 주시기 바랍니다.
에릭 O Lebigot

1
댓글을 수정할 수없는 것 같습니다. 여기에 새로운 링크입니다 jarloo.com/exchange-rate-api은
켈리

1
@Adam Pierce를 공유해 주셔서 감사합니다! 과거 환율도 얻을 수있는 방법이 있습니까?
Aris 2013 년

이 링크도 사용할 수 있습니다. 무료입니다. 가입하고 API KEY를 받으십시오. jsonrates.com/docs
Gajendra K Chauhan

currencylayer.com 사용 -몇 가지 PHP 예제 ( currencylayer.com/documentation ) 와 함께 JSON 형식의 실시간 및 과거 환율을 제공합니다
Frank

답변:


71

yahoo에서 간단한 형식으로 통화 변환을 얻을 수 있습니다.

예를 들어 GBP에서 EUR로 변환하려면 : http://download.finance.yahoo.com/d/quotes.csv?s=GBPEUR=X&f=sl1d1t1ba&e=.csv


이는 최신 상태이며 구문 분석하기 쉽습니다. 이것이 내가 추구하는 것입니다.
Adam Pierce

4
이것에도 관심이 있습니다. 매개 변수가 의미하는 바에 대한 정보가 있습니까? 특히 "f"매개 변수입니다. 어디에서도 정보를 찾을 수 없습니다.
Fishcake

9
상업 웹 사이트가있는 경우이 데이터를 읽는 것이 합법적입니까?
Junior Mayhé

4
추가 실험에서는 다음과 같이 's'매개 변수의 기호를 쉼표로 구분하여 한 번에 여러 전환율을 요청할 수 있음을 보여줍니다. download.finance.yahoo.com/d/…
Myster

3
날짜를 지정하는 방법이 있습니까?
Maxim Egorushkin 2012

40

이 답변은 매우 늦었지만 위의 답변에서 누락 된 핵심 정보가 있습니다.

고객에게 정확한 가격을 보여주고 싶다면 환율이 어떻게 작용하는지 이해하는 것이 중요합니다.

대부분의 FX 서비스는 현물 환율 만 표시합니다 (매수 호가와 매도 호가 중간). 스팟은 환율에 대한 일종의 속기이지만 매도시 매도하거나 매도시 매수 만 할 수 있기 때문에 아무도 현물을 얻지 못합니다. 일반적으로 그들 사이에 최소 1 %의 스프레드를보고 있으므로 현물 비율은 고객에게 0.5 % 할인됩니다.

하지만 여기서 멈추지 않습니다. 고객은 거의 확실히 신용 카드를 사용하고 있으며 Visa / Mastercard / Amex는 모두 외환 수수료를 부과합니다. 이것들은 내 경험상 최소 2.5 %로 사소하지 않습니다. 예를 들어 Citibank Australia는 3.3 %를 청구합니다. 이는 카드마다 다르므로 고객에게 청구되는 최종 가격을 예측할 방법이 없습니다.

환율을 기준으로 고객에게 "정확한"가격을 제시하려면 위의 사항을 고려하여 버퍼를 제공하여 견적 한 것보다 더 많이 청구하지 않도록해야합니다.

FWIW, 저는 F / X 변환이 그렇지 않으면 나타내는 것에 4 %를 추가했습니다.


또한 외환 환율은 항상 변경되며 은행은 현지 시간으로 자정에만 환율을 고려할 수 있습니다. ~ 2 %의 일일 변동성 불확실성이 있습니다.
Alexandre C.

1
그것은 좋은 점입니다. 한 통화를 표시하고 다른 통화를 청구하는 경우 일종의 버퍼에 대한 필요성을 확실히 강화합니다. 내 4 % 패딩으로 가치있는 이유는 아무도 지불 거절을 한 적이 없습니다.
philoye 2010 년

모든 은행이 그것을 청구하는 것은 아닙니다. 예를 들어 멕시코의 신용 카드와 직불 카드는 그날의 통화 매도 가격으로 통화를 변환합니다.
Francisco Zarabozo 17.23.23

26

추가하는 것이 좋을 수 있습니다.

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

목록에.

유럽 ​​중앙 은행유럽 ​​중앙 은행 시스템 내부와 외부의 중앙 은행 간의 정기적 인 일일 협의 절차를 기반으로 공식 기준 환율을 제공합니다 .

피드는 XML 및 기타 형식입니다. 입니다.
업데이트는 일반적으로 오후 2.15 (14:15) ECB 시간 (= 프랑크푸르트 시간)에 발생합니다.


4
방금 확인하고 (댓글 20 분 후) 사용할 수 있습니다.
Jacco

나는 이것을 사용하려고 시도했지만 VB.NET은 XPath를 올바르게 거부합니다. 네임 스페이스를 정의하는 URL이 모두 404ing이기 때문입니까?
Rikki 2012

이 링크는 항상 오늘이 아닌 어제의 요금을 보여줍니다.
erkanyildiz 2013 년

12

나는 최근에 같은 것을 구현했지만 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를 처음 사용합니다. 도움이 되었기를 바랍니다.


2
좀 더 신뢰할 수 있도록하려면 explode 대신 json_decode를 사용할 수 있습니다.
diolemo 2012

이 서비스에 제한이 있습니까?
사이트

표현하고 사용하기가 너무 쉽습니다 ... 감사합니다
IWIH

5
"iGoogle이 2013 년 11 월 1 일에 사용
중지되었습니다.

코드에서 두 줄만 변경하여 Yahoo quotes.csv 메서드를 사용하도록 변경된 유사한 코드를 사용했습니다.
마커스

12

또 다른 훌륭한 무료 오픈 소스 링크는 다음과 같습니다.

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,000 건의 조회수가 허용되며 비용을 지불해야합니다. 단일 통화 변환기 (기본 기능)를 사용하려면 비용을 지불해야합니다.

[참고 : 답변도 볼 수 있습니다 . ]


1
아마도 더 이상 작동하지 않는 그
shasi kanth

1
상기시켜 주신 @dskanth에게 감사드립니다. 링크 및 정보가 업데이트되었습니다. :)
zeFree

1
무료 OpenExchangeRates 계획은 한 달에 1000 건의 요청으로 여기에서 사용할 수 있습니다. .. 작은 링크이므로 대부분의 경우 발견하지 못할 것입니다 .. openexchangerates.org/signup/free
TheFlash

6

YQL에 Open Data 테이블을 추가했습니다.이를 사용하여 yahoo.finance에서 환율 데이터를 검색 할 수 있습니다.

YQL 콘솔에서 사용해보세요

쉼표로 구분 된 형식은 "where pair in ( 'EURUSD', 'GBPUSD')"보다 선호되지만 어쨌든 둘 다 사용할 수 있으며 심지어 혼합 할 수도 있습니다.


고마워 친구. 이것은 PHP의 YQL 문서와 결합되어 저에게 큰 도움이되었습니다!
miCRoSCoPiC_eaRthLinG

안녕하세요, 날짜 매개 변수를 추가 할 수 있습니까? 예를 들어 과거 환율을 얻고 싶습니다.
엘리사



3

RESTful을 시도하십시오 (원래 SOAP에서 얻은 것이기 때문에 이것이 실제로 REST인지 확실하지 않습니다. HTTP GET을 사용하여 액세스하려고했습니다)


변환 할 "금액"을 어디에 입력했는지 모르겠지만 숫자를 되찾았습니다. 설명해 주시겠습니까?
SpokaneDude 2010 년

1
금액을받지 않습니다. 이것은 fromCurrency의 금액이 항상 일 (1) 인 fromCurrency를 toCurrency로 변환합니다. 그리고 그것은 당신의 양을 변환하는 알고리즘을 만들기 위해 당신이야
케빈

고마워요 ... 말이 되네요. 지금 ...
SpokaneDude

3

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 캐시를 추가하여 스로틀되지 않도록 할 수 있습니다.

다른 게시물 / 댓글에서 언급했듯이이 환율을 사용하여 통화를 계산합니다.


2

XE.com 은 환율에 대한 피드를 제공합니다. 그래도 무료는 아닙니다.



1

coinnill.com에는 일종의 웹 서비스가 있습니다.

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

예를 들어 AUD-> USD 환율을 제공합니다. 돌아 오는 XML을 파싱하기 만하면됩니다.


그 데이터는 오래된 것 같습니다. AUD는 0.77이지만 오늘은 0.69입니다.
Adam Pierce

또한 유용한 데이터 (환율)는 XML로 인코딩되지 않은 유일한 비트입니다! CDATA의 일반 텍스트 일뿐입니다 ...
Rikki

1

다음을 추가해야합니다.

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

깨끗한 RESTful API로 사용하기 쉽고 등록은 5 초가 걸립니다. 대부분의 주요 언어에 대한 코딩 예제가 포함되어 있으며 대부분은 2-3 줄입니다.

요금은 매시간 업데이트되므로 대부분의 사용에 적합하며 한 달에 $ 7에 30000 개의 월별 쿼리를받을 수 있습니다. 나는 그 이상을 필요로하지 않았지만, 더 많은 볼륨에 대해 요금이 매우 합리적입니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.