Döviz kurları özellikle e-ticaret projelerinin olmazsa olmazlarındandır. Geçtiğimiz hafta da kodladığım bir e-ticaret projesinde döviz kurlarını çekmem gerekti. Normalde piyasa.com apisinden faydalanıyordum ama kontrol ettiğimde piyasa.com’un kapandığını farkettim. Biraz araştırınca Merkez Bankası’nın da xml ile kurları yayınladığını öğrendim. Daha önce neden doğrudan oradan çekmemişim orası da ayrı bir konu. Hazır bunu öğrenmişken Merkez Bankası’ndan döviz kurlarının nasıl çekilebileceğini de blogumda paylaşmak istedim.
Aşağıdaki kodlar yardımıyla istediğiniz döviz kurunu çekebilirsiniz. Döviz kuru kısaltmasını key(anahtar) olarak kullanabilmek için önce tüm kurları döngüde bir kez döndürdüm. Farklı yöntemlerle de kolayca alabilirsiniz ama bu yöntem bana daha kullanışlı geldi.
Türkiye Cumhuriyeti Merkez Bankası güncel döviz kurlarını http://www.tcmb.gov.tr/kurlar/today.xml adresinde yayınlıyor. İsterseniz sayfayı ziyaret ederek xml dosyasının yapısını inceleyebilirsiniz.
Örnek kodları iki parça halinde sizlerle paylaşıyorum. İlk kısım döviz kurlarını çekmemizi ikinci kısım ise onları ekrana yazdırmamızı sağlıyor.
Döviz Kurlarını Çektiğim Kısım
$xml = simplexml_load_file('http://www.tcmb.gov.tr/kurlar/today.xml'); foreach ($xml->Currency as $Currency) { // USD ALIŞ-SATIŞ if ($Currency['Kod'] == "USD") { $usd_DS = $Currency->BanknoteSelling; $usd_DA = $Currency->BanknoteBuying; } // EURO ALIŞ-SATIŞ if ($Currency['Kod'] == "EUR") { $eur_DS = $Currency->BanknoteSelling; $eur_DA = $Currency->BanknoteBuying; } // USD EFEKTİF ALIŞ-SATIŞ if ($Currency['Kod'] == "USD") { $usd_ES = $Currency->ForexSelling; $usd_EA = $Currency->ForexBuying; } // EURO EFEKTİF ALIŞ-SATIŞ if ($Currency['Kod'] == "EUR") { $eur_ES = $Currency->ForexSelling; $eur_EA = $Currency->ForexBuying; } }
Döviz Kurlarını Ekrana Yazdırdığım Kısım
<table> <tr> <td style="width: 200px;"><strong>Para Birimi</strong></td> <td style="width: 50px;"><strong>Alış</strong></td> <td style="width: 50px;"><strong>Satış</strong></td> </tr> <tr> <td>Dolar (USD)</td> <td><?php echo $usd_DS; ?></td> <td><?php echo $usd_DA; ?></td> </tr> <tr> <td>Euro (EUR)</td> <td><?php echo $eur_DS; ?></td> <td><?php echo $eur_DA; ?></td> </tr> <tr> <td>Dolar (USD) Efektif</td> <td><?php echo $usd_ES; ?></td> <td><?php echo $usd_EA; ?></td> </tr> <tr> <td>Euro (EUR) Efektif</td> <td><?php echo $eur_ES; ?></td> <td><?php echo $eur_EA; ?></td> </tr> </table>
Yukarıdaki linkleri kullanarak örnek kodların çalışıp çalışmadığını test edebilir veya indirebilirsiniz. Benzer şekilde örnek kod parçaları yayınlamaya devam edeceğim, takipte kalın..
aboooo ben daha karakterleri yazamıyorum 😀
Merhaba bu kodu kullanarak wordpress’e bu döviz kurlarını nasıl çekebiliriz?
Teşekkürler. Ancak başka sitelerin sayflarına bağımlı olunan kodlarda error handling yapmayı unutmamak lazım.
if($xml = @simplexml_load_file(‘http://www.tcmb.gov.tr/kurlar/today.xml’))
gibi
Zaten çoğu kişi bu tarz işlemleri cron dosyalarıyla yaptırır. Onlarda da hataların açık olması kullanıcıyı etkilemeyeceğinden çok da büyük bir problem değil. Yani tamamen verileri nasıl kullandığımıza göre değişen bir durum.
Ahmet bey merhaba,
Örnek kod çalışmadı acaba xml yapısında bir değişiklik olmuş olabilir mi? Uğraştım ama göremedim yardımcı olabilirseniz sevinirim.
Merhaba,
Demo sayfasında verileri doğru çektiği açıkça görülebiliyor. Yani xml yapısında bir değişiklik yok. Kodlarınızda ya da sunucu yapılandırmanızda bir problem olup olmadığını kontrol ediniz.
cache li yapabilirmisin bu scripti kardeşim eğer cache kullanırsan tadından yenmez bu script…
Script olarak yayınlamaktansa örnek olarak yayınlamayı tercih ediyorum. Böylece herkes kendi sistemine uygun şekilde kodları değiştirebiliyor. Her sistemde cache mekanizması farklı olacağından cache li haline çevirmek sistemi yazan kişiye bırakılmıştır.
Demo sayfası yayında değil sanırım artık bu kodlar ile kurları alamıyoruz
hocam altın alış ve satışlarını çekebileceğimiz bir kod yazar mısınız ?
Henüz denemedim ama yazı gayet hoş olmuş, elinize sağlık 🙂
Hocam şöyle bir hata alıyorum sorun nedir ?
Warning: simplexml_load_file(http://www.tcmb.gov.tr/kurlar/today.xml) [function.simplexml-load-file]: failed to open stream: Unable to find the socket transport “ssl” – did you forget to enable it when you configured PHP? in
Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity “http://www.tcmb.gov.tr/kurlar/today.xml”
USD:
EURO: