kişisel düşünceler, üstüne bir de teknoloji..

Php İle Güncel Döviz Kurlarını Çekmek

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.

Canlı DemoKodları İndir

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>

Canlı DemoKodları İndir

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..

12 Comments

  1. ukashbozdurma

    aboooo ben daha karakterleri yazamıyorum 😀

  2. Soner

    Merhaba bu kodu kullanarak wordpress’e bu döviz kurlarını nasıl çekebiliriz?

  3. Amplified

    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

    • Ahmet İşcan

      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.

  4. abdullah canipek

    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.

    • Ahmet İşcan

      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.

  5. MinTR

    cache li yapabilirmisin bu scripti kardeşim eğer cache kullanırsan tadından yenmez bu script…

    • Ahmet İşcan

      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.

  6. serkan ergün

    Demo sayfası yayında değil sanırım artık bu kodlar ile kurları alamıyoruz

  7. Tekonda

    hocam altın alış ve satışlarını çekebileceğimiz bir kod yazar mısınız ?

  8. Mustafa Zahid Efe

    Henüz denemedim ama yazı gayet hoş olmuş, elinize sağlık 🙂

  9. Sergen

    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:

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir