PHP DÖVİZ İŞLEMLERİ

ÇAĞLAR BOSTANCI PHP DÖVİZ İŞLEMLERİ
Ticari sitelerde, küresel ürün pazarlayan sitelerde ürünlerin fiyat bilgileri dolar veya diğer döviz kurları üzerinden belirtilmektedir. Satışların ise anlık olması nedeniyle ürün biriminin ilgili döviz karşılığı anlık olarak alınmalıdır. Bu nedenle Türkiye Cumhuriyet Merkez Bankası Kurlarından döviz kurlarının alınması gerekmektedir. Bu nedenle işlerin daha kolay olması için bir fonksiyon yazdım. Siz değerli arkadaşlarla da paylaşmak istedim. Geliştirmek veya daha profesyonel hale getirmek sizlerin elinde bana bu kadarı yeterli oldu.
Her iki fonksiyonda da döviz kurlarının kendine ait belirlenmiş bir numarası var mesela dolar 0 olarak belirlenirken euro 3 olarak belirlenmiştir. Merkez Bankasının belirlemiş olduğu bu kur bilgilerini xml olarak http://www.tcmb.gov.tr/kurlar/today.xml bu adresten almaktayız. Kurların birim numaraları aşağıda verilmiştir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | /* Kur Numarası 0 : ABD DOLARI Kur Numarası 1 : AVUSTRALYA DOLARI Kur Numarası 2 : DANİMARKA KRONU Kur Numarası 3 : EURO Kur Numarası 4 : İNGİLİZ STERLİNİ Kur Numarası 5 : İSVİÇRE FRANGI Kur Numarası 6 : İSVEÇ KRONU Kur Numarası 7 : KANADA DOLARI Kur Numarası 8 : KUVEYT DİNARI Kur Numarası 9 : NORVEÇ KRONU Kur Numarası 10 : SUUDİ ARABİSTAN RİYALİ Kur Numarası 11 : JAPON YENİ Kur Numarası 12 : BULGAR LEVASI Kur Numarası 13 : RUMEN LEYİ Kur Numarası 14 : RUS RUBLESİ Kur Numarası 15 : İRAN RİYALİ Kur Numarası 16 : ÇİN YUANI Kur Numarası 17 : PAKİSTAN RUPİSİ Kur Numarası 18 : ÖZEL ÇEKME HAKKI (SDR) */ |
Birinci fonksiyon ilgili kurun bilgisini ekrana yazdırmaktadır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | function dovizKur($dovizTuru=0){ try{ $dovizKur = @simplexml_load_file('http://www.tcmb.gov.tr/kurlar/today.xml'); //ilgili adresdeki xml dosyasını cektik. Başındaki @ işareti ise hata mesajlarının ekrana basılmasını engelledik. if(empty($dovizKur)){ //Eğer döviz kuru boş ise(Yani çekilemediyse) yeni bir hata mesajı oluşuturduk catch bölümü için. throw new exception("Anlık bir hata nedeniyle döviz kuru alınamadı.Lütfen sayfayı tekrar yenileyiniz."); } return " Tarih ⇨ {$dovizKur['Tarih']}<br> Bülten ⇨ {$dovizKur['Bulten_No']}<br> Isim(Döviz Adı) ⇨ {$dovizKur->Currency[$dovizTuru]->Isim} <br> CurrencyName(Döviz Cinsi) ⇨ {$dovizKur->Currency[$dovizTuru]->CurrencyName}<br> ForexBuying(Döviz Alış) ⇨ {$dovizKur->Currency[$dovizTuru]->ForexBuying}<br> ForexSelling(Döviz Satış) ⇨ {$dovizKur->Currency[$dovizTuru]->ForexSelling}<br> BanknoteBuying(Efektif Alış) ⇨ {$dovizKur->Currency[$dovizTuru]->BanknoteBuying}<br> BanknoteSelling(Efektif Satış) ⇨ {$dovizKur->Currency[$dovizTuru]->BanknoteSelling}<br>"; }catch(Exception $dovizHata){ return $dovizHata->getMessage(); } } //Kullanımı echo dovizKur(3); //Kur Numarası 3 : EURO |
Ekran Çıktısı:
Tarih ⇨ 06.03.2018
Bülten ⇨ 2018/46
Isim(Döviz Adı) ⇨ EURO
CurrencyName(Döviz Cinsi) ⇨ EURO
ForexBuying(Döviz Alış) ⇨ 4.6930
ForexSelling(Döviz Satış) ⇨ 4.7015
BanknoteBuying(Efektif Alış) ⇨ 4.6898
BanknoteSelling(Efektif Satış) ⇨ 4.7085
İkinci fonksiyon ise girilen verilen miktarın istenilen kur türünden Türk Lirası karşılığını veriyor. Üç parametreden oluşmaktadır. Birinci parametre birim miktarı ikinci parametre döviz kurunun numeric değeri, üçüncü parametre ise alış veya satış fiyatı(0 Satış,1 Alış) üzerinden mi hesaplanacağıdır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | function dovizKurAl($birimRakam=1,$dovizTuru=0,$alisSatis=0){ //Tl Miktarı 1 lira //DÖVÜZ ÇEŞİDİ 0 Dolar //SATIŞ 0 ALIŞ 1 try{ $dovizKur = @simplexml_load_file('http://www.tcmb.gov.tr/kurlar/today.xml'); //ilgili adresdeki xml dosyasını cektik. Başındaki @ işareti ise hata mesajlarının ekrana basılmasını engelledik. if(empty($dovizKur)){ //Eğer döviz kuru boş ise(Yani çekilemediyse) yeni bir hata mesajı oluşuturduk catch bölümü için. throw new exception("Anlık bir hata nedeniyle döviz kuru alınamadı.Lütfen sayfayı tekrar yenileyiniz."); } $alisSatiMiktar=$alisSatis==0?(double)$dovizKur->Currency[$dovizTuru]->BanknoteBuying:(double)$dovizKur->Currency[$dovizTuru]->BanknoteSelling; $kurSonuc=$birimRakam*$alisSatiMiktar; return explode(".",$kurSonuc)[0].".".substr(explode(".",$kurSonuc)[1],0,2); }catch(Exception $dovizHata){ return $dovizHata->getMessage(); } } echo dovizKurAl(100,0,0)." tl";//DOLAR KURU ÜZERİNDEN SATIŞ echo " "; echo dovizKurAl(100,0,1)." tl";//DOLAR KURU ÜZERİNDEN ALIŞ |
Son olarak bir ek fonksiyon:
Aşağıdaki fonksiyon ise girilen TL miktarının istenilen kur karşılığını veriyor.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | function tlKurKarsiligi($birimRakam=1,$dovizTuru=0,$alisSatis=0){ //Tl Miktarı 1 lira //DÖVÜZ ÇEŞİDİ 0 Dolar //SATIŞ 0 ALIŞ 1 try{ $dovizKur = @simplexml_load_file('http://www.tcmb.gov.tr/kurlar/today.xml'); //ilgili adresdeki xml dosyasını cektik. Başındaki @ işareti ise hata mesajlarının ekrana basılmasını engelledik. if(empty($dovizKur)){ //Eğer döviz kuru boş ise(Yani çekilemediyse) yeni bir hata mesajı oluşuturduk catch bölümü için. throw new exception("Anlık bir hata nedeniyle döviz kuru alınamadı.Lütfen sayfayı tekrar yenileyiniz."); } $alisSatiMiktar=$alisSatis==0?(double)$dovizKur->Currency[$dovizTuru]->BanknoteBuying:(double)$dovizKur->Currency[$dovizTuru]->BanknoteSelling; $kurSonuc=$birimRakam/$alisSatiMiktar; return explode(".",$kurSonuc)[0].".".substr(explode(".",$kurSonuc)[1],0,2); }catch(Exception $dovizHata){ return $dovizHata->getMessage(); } } echo tlKurKarsiligi(100,0,0)." $";//TL 'NİN DOLAR KURU ÜZERİNDEN SATIŞ echo "<br/>"; echo tlKurKarsiligi(100,0,1)." $";//TL 'NİN DOLAR KURU ÜZERİNDEN ALIŞ |
Faydalı olması dileğiyle BAŞARILAR.