Döviz kurlarına programlı olarak erişin [kapalı]


112

Bir çevrimiçi sipariş sistemi kuruyorum, ancak Avustralya'dayım ve uluslararası müşteriler için fiyatları ABD doları veya Euro cinsinden göstermek istiyorum, böylece Avustralya dolarını dönüştürmek için zihinsel çaba sarf etmek zorunda kalmasınlar.

PHP betiğimden erişebileceğim, ayrıştırılması kolay bir biçimde net bir yerde güncel döviz kurlarını alıp alamayacağımı bilen var mı?


GÜNCELLEME: Şimdi bunu uygulayan bir PHP sınıfı yazdım. Kodu web sitemden alabilirsiniz .


1
@Kelly: Çok iyi bir öneri, çünkü Google ücretsizdir ve öngörülebilir gelecekte hala buralarda bulunma şansı çok yüksektir: Bir cevap olarak göndermenizi tavsiye ederim.
Eric O Lebigot

1
Yorumu düzenleyemiyor. İşte yeni bağlantı jarloo.com/exchange-rate-api
Kelly

1
@Adam Pierce'i paylaştığınız için teşekkürler! Geçmiş oranları da almanın bir yolu var mı?
Aris

Bu bağlantıyı da kullanabilirsiniz. Ücretsizdir, sadece kaydolun ve API KEY'i edinin. jsonrates.com/docs
Gajendra K Chauhan

Kullanım currencylayer.com - onlar (birkaç PHP örneklerle birlikte gerçek zamanlı ve JSON biçiminde tarihsel oranları sağlar currencylayer.com/documentation )
Frank

Yanıtlar:


71

Para birimi dönüştürmelerini yahoo'dan basit bir biçimde alabilirsiniz:

Örneğin, GBP'den EUR'ya dönüştürmek için: http://download.finance.yahoo.com/d/quotes.csv?s=GBPEUR=X&f=sl1d1t1ba&e=.csv


Bu günceldir ve ayrıştırılması kolaydır. Peşinde olduğum şey bu.
Adam Pierce

4
Bununla da ilgileniyorum, parametrelerin ne anlama geldiğine dair herhangi bir bilgi var mı? Özellikle "f" parametresi. Hiçbir yerde bilgi bulamıyorum.
Fishcake

9
Ticari bir web siteniz varsa bu verileri okumak yasal mı?
Junior Mayhé

4
Daha fazla deney, 's' parametresindeki sembolleri virgülle ayırarak aynı anda birden fazla dönüşüm oranı talep edebileceğinizi gösteriyor: download.finance.yahoo.com/d/…
Myster

3
Bir tarih belirlemenin bir yolu var mı?
Maxim Egorushkin

40

Bu cevap ÇOK geç, ancak yukarıdaki cevaplarda eksik olan önemli bir bilgi var.

Müşterilerinize doğru fiyatlar göstermek istiyorsanız, döviz kurlarının nasıl çalıştığını anlamak önemlidir.

Çoğu FX hizmeti yalnızca spot kur için teklif verir (Alış ve Satış arasında ortada). Spot, döviz kurunun bir tür kısaltmasıdır, ancak hiç kimse spotu alamaz çünkü yalnızca teklifte satış yapabilir veya talepte satın alabilirsiniz. Genellikle aralarında en az% 1'lik bir dağılım görüyorsunuz, bu nedenle müşterileriniz için spot oran% 0,5'tir.

Ancak burada bitmiyor, müşterileriniz neredeyse kesinlikle bir kredi kartı kullanıyor ve Visa / Mastercard / Amex'in tümü döviz ücreti alıyor. Bunlar benim deneyimime göre önemsiz değil, EN AZ% 2,5. Örneğin, Citibank Avustralya% 3,3 ücret almaktadır. Bunlar karttan karta farklılık gösterdiğinden, müşterilerinizin faturalandırılacağı son fiyatı tahmin etmenin bir yolu yoktur.

Müşterilerinize bir döviz kuruna dayalı "doğru" bir fiyat teklif etmek istiyorsanız, yukarıdakileri hesaba katmanız ve teklif ettiğinizden daha fazla ücret talep etmemek için bir tampon sağlamanız gerekir.

FWIW, F / X dönüşümünün aksi takdirde göstereceği şeye% 4 ekledim.


Ayrıca, forex oranları her zaman değişir ve bankalar oranı yalnızca yerel saate göre gece yarısı hesaba katabilir. •% 2 günlük dalgalanma ile, var olan kararsızlık.
Alexandre C.

1
Bu harika bir nokta. Bir para birimini görüntülüyorsanız, ancak diğerini ücretlendiriyorsanız, bir tür tampon ihtiyacını kesinlikle güçlendirir. Değeri ne olursa olsun,% 4 dolgumla, hiç kimsenin ters ibraz yapmasını istemedim.
philoye

Tüm bankalar bunu talep etmez. Örneğin Meksika'dan gelen kredi ve banka kartları, para birimini, para birimi satışı için o gün sahip oldukları fiyattan çevirecek, başka bir şey değil.
Francisco Zarabozo

26

Eklemek güzel olabilir

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

listeye.

Avrupa Merkez Bankası tarafından sağlanan resmi referans oranları Merkez Bankaları Sistemi içindeki ve dışındaki merkez bankaları arasındaki düzenli günlük uyum prosedürüne dayalı olarak sağlar.

Besleme, XML ve diğer bazı biçimlerdedir .
Güncelleme normalde 2.15 (14:15) ECB saatinde (= Frankfurt saati) gerçekleşir.


4
Sadece kontrol ettim (yorumunuzdan 20 dakika sonra) ve benim için hazır.
Jacco

Bunu kullanmaya çalışıyorum, ancak VB.NET düzgün bir şekilde XPath'i reddediyor. Bunun nedeni ad alanlarını tanımlayan URL'lerin her ikisinin de 404ing olması mı?
Rikki

bu bağlantı her zaman bugünün değil dünün oranlarını gösterir.
erkanyildiz

12

Geçenlerde aynı şeyi uyguladım, ancak Google'ın API'sini kullanarak. Sorgu URL'si şuna benzer:

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

3 parametre alır. İlk parametre tutar, ardından dönüştürdüğünüz ISO 4217 para birimi kodu, eşittir işareti ve soru işareti ve dönüştürdüğünüz para birimi kodudur. Google'ın desteklediği kodların bir listesini burada bulabilirsiniz . Sorguya verilen yanıt şöyle görünecektir:

{lhs: "1 British pound",rhs: "1.6132 U.S. dollars",error: "",icc: true}

Bu oldukça açıklayıcı, bu yüzden burada ayrıntılara girmeyeceğim. Sorgu yanıtını şu şekilde ele aldım:

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

Eminim bunu yapmanın en zarif yolu değildir, ancak PHP konusunda oldukça yeniyim. Umarım yardımcı olur!


2
Daha güvenilir olmasını istiyorsanız patlatmak yerine json_decode kullanabilirsiniz.
diolemo

bu hizmetle ilgili sınırlamalar var mı?
siteler

Bunu ifade etmek ve kullanmak çok kolay ... Teşekkürler
IWIH

5
"iGoogle 1 Kasım 2013 tarihinde emekliye ayrıldı", uygulamanız artık çalışmıyor
yegor256

Kodda yalnızca iki satır değişikliğiyle Yahoo quotes.csv yöntemini kullanmak için değiştirilen benzer kodu kullandım.
Marcus

12

bir başka harika ücretsiz ve açık kaynaklı bağlantı şudur:

https://raw.github.com/currencybot/open-exchange-rates/master/latest.json
(Bu konuyu burada buldum: http://josscrowcroft.github.com/open-exchange-rates/ )

[Güncelleme] :
Açık Döviz Kurları proje verileri GitHub'dan taşınmıştır.
Şu adreste mevcuttur: http://openexchangerates.org/
JSON biçimindeki veriler şu adreste mevcuttur: http://openexchangerates.org/latest.json

Erişim ücreti yok, oran sınırı yok, çirkin XML yok - sadece JSON biçiminde ücretsiz , saatlik olarak güncellenen döviz kurları.
Bu artık "tamamen" ücretsiz değil. Yeni lisanslama, ayda 1000 isabete izin verildiğini ve ardından ödeme yapmanız gerektiğini belirtir. Tek para birimi dönüştürücüyü (temel işlev) kullanmak istiyorsanız da ödeme yapmanız gerekir.

[Not: Bu yanıta da bakmak isteyebilirsiniz . ]


1
Belki artık çalışmıyor
shasi kanth

1
@ Dskanth hatırlattığın için teşekkürler. Bağlantı ve bilgiler güncellendi. :)
zeFree

1
Ayda 1000 istekle ücretsiz bir OpenExchangeRates planı burada mevcuttur .. bu küçük bir bağlantıdır, bu yüzden çoğu durumda fark
etmezsiniz

6

YQL'e Açık Veri tablosunu ekledim, döviz kuru verilerini yahoo.finance'dan almak için kullanabilirsiniz.

YQL konsolunda deneyin

Virgülle ayrılmış biçim, "nerede çift ('EURUSD', 'GBPUSD') 'yerine tercih edilir, ancak yine de, ikisini de kullanabilir ve hatta karıştırabilirsiniz.


Tesekkurler dostum. Bu, PHP'deki YQL dokümanları ile birleştiğinde bana çok yardımcı oldu!
miCRoSCoPiC_eaRthLinG

merhaba, tarih parametresi ekleyebilir miyiz, örneğin geçmiş döviz kurunu almak istiyorum.
Elisa



3

Bu RESTful'u deneyin (Bunun gerçekten bir DİNLENME olup olmadığından emin değilim, bunu orijinal olarak bir SABUN'dan aldığım için, HTTP GET kullanarak ona erişmeye çalıştım)


Dönüştürmek için "miktarı" nereden sağladığınızı anlamıyorum, yine de bir miktar geri alıyorsunuz ... Lütfen bunu açıklar mısınız?
SpokaneDude

1
Bir miktar kabul etmiyor. Bu, yalnızca Para Birimi'nden, Para Biriminin tutarının her zaman bir (1) olduğu Para Birimine dönüştürülür. Öyleyse, tutarınızı dönüştürme algoritmanızı yapmak size kalmış
Kevin

Teşekkür ederim ... bu mantıklı. şimdi ...
SpokaneDude

3

iGoogle 1 Kasım 2013 tarihinde kullanımdan kaldırılmıştır. Bu API artık çalışmamaktadır.

Döviz kurunu almak için şunun gibi bir şey kullanabilirsiniz:

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

Daraltılmadığınızdan emin olmak için oraya bir DB önbelleği ekleyebilirsiniz.

Diğer gönderilerde / yorumlarda belirtildiği gibi, daha sonra para biriminizi hesaplamak için bu oranı kullanırsınız.




1

coinnill.com'un bir tür web hizmeti vardır.

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

size örneğin AUD -> USD oranını verecektir. Sadece geri gelen XML'i ayrıştırmanız gerekecek.


Bu veriler güncel değil gibi görünüyor. AUD 0.77 diyor ama bugün 0.69 olduğunu biliyorum.
Adam Pierce

Ayrıca yararlı veri parçası (döviz kurları), XML'de kodlanmamış tek bittir! Bu sadece bir CDATA'da düz metin ...
Rikki

1

Eklemeye mecbur hissediyorum:

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

Temiz bir RESTful API ile kullanımı son derece kolaydır ve kayıt 5 saniye sürer. Çoğu ana dil için kodlama örnekleri içerir, çoğu 2-3 satır uzunluğundadır.

Ücretler saatlik olarak güncellenir, bu nedenle çoğu kullanım için uygundur ve ayda 7 $ karşılığında 30000 aylık sorgu alabilirsiniz. Bundan daha fazlasına hiç ihtiyacım olmadı, ancak oranlar daha yüksek hacimler için çok makul.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.