Döviz Bilgilerini Alma

Online döviz bilgilerini alma ve sitelerimizde kullanma

Döviz kuru bilgilerini alma

Web projelerinde zaman zaman karşılaştığımız sıkıntılardan birisi de online olarak döviz bilgisini kullanabilmektir.

Döviz deyince akla ilk gelen resmi kurum olan TC Merkez Bankası'nın :) http://www.tcmb.gov.tr/kurlar/today.xml adresindeki sayfasına bakacak olursanız, bize halihazırda XML formatında bütün döviz kuru bilgilerinin verildiğini görebilirsiniz.

Bize düşen iş ise basit bir class yazıp, verilen 2 parametre bilgisine göre bu adresteki ilgili bilgiyi bulmak ve değeri döndürmek.

Classa gerekli olan ilk parametre döviz tipi, (USD, Euro, vd.) diğeri de bilgi tipi (Efektik Alış/Satış, Döviz Alış/Satış).

Tüm döviz tipleri: USD, CAD, DKK, SEK, NOK, CHF, JPY, SAR, KWD, AUD, EUR, GBP, IRR, SYP, JOG, BGL, ROL, ILS.

Classımızı yazalım:

public class DovizKurlari
{
XmlDocument xml = null;
const string adres = "http://www.tcmb.gov.tr/kurlar/today.xml";

public enum KurKodu : byte
{
    USD, CAD, DKK, SEK, NOK, CHF, JPY, SAR, KWD, AUD, EUR, GBP, IRR, SYP, JOG, BGL, ROL, ILS, 
}

public enum Tur : byte
{
    ForexBuying, //Döviz alış
    ForexSelling, //Döviz satış
    BanknoteBuying, //Efektif  alış
    BanknoteSelling,  //Efektif satış
}


public DovizKurlari()
{
    xml = new XmlDocument();
    xml.Load(new XmlTextReader(adres));
}

public string TlKarsiligi(KurKodu kodu, Tur turu)
{
    string kod = kodu.ToString();
    string tur = turu.ToString();

    XmlNodeList MyNode = xml.SelectNodes("/Tarih_Date/Currency[@Kod ='" + kod + "']/" + tur);

    return MyNode.Item(0).InnerText;
}
}

Örnek kullanım:

DovizKurlari dk = new DovizKurlari();
Response.Write(dk.TlKarsiligi(DovizKurlari.KurKodu.USD, DovizKurlari.Tur.ForexBuying));

Ama noktalı yazdırmak istediğimizde sıkıntı çıkarmaması için bu kodu biz biraz düzenleyelim. (İleride çoklu dil desteği de sağlayabiliriz sitemizde, ondalık ayraçların ülkeler arası farklılık gösterdiğini unutmamak gerekir)

DovizKurlari dk = new DovizKurlari();

NumberFormatInfo nfi = new NumberFormatInfo();
nfi.CurrencyDecimalDigits = 4;
nfi.NumberDecimalSeparator = ".";
nfi.NumberGroupSeparator = ",";
nfi.NumberGroupSizes = new int[] { 3 };

double usdAlis = Convert.ToDouble(dk.TlKarsiligi(DovizKurlari.KurKodu.USD, DovizKurlari.Tur.ForexBuying), nfi);
double usdSatis = Convert.ToDouble(dk.TlKarsiligi(DovizKurlari.KurKodu.USD, DovizKurlari.Tur.ForexSelling), nfi);
double audAlis = Convert.ToDouble(dk.TlKarsiligi(DovizKurlari.KurKodu.AUD, DovizKurlari.Tur.ForexBuying), nfi);
double audSatis = Convert.ToDouble(dk.TlKarsiligi(DovizKurlari.KurKodu.AUD, DovizKurlari.Tur.ForexSelling), nfi);
double carpraz = usdSatis / audSatis;

lblUSDAlis.Text = string.Format(usdAlis.ToString(nfi)) + " TL";
lblUSDSatis.Text = string.Format(usdSatis.ToString(nfi)) + " TL";
lblAUDAlis.Text = string.Format(audAlis.ToString(nfi)) + " TL";
lblAUDSatis.Text = string.Format(audSatis.ToString(nfi)) + " TL";
lblCarpraz.Text = string.Format(carpraz.ToString("0.0000", nfi)) + " AUD";

Örnek çıktı: http://www.austockexports.com/