ASP.NET – Garanti Sanal Pos Entegrasyonu

ASP.NET ile yapılmış bir web sitesinde Garanti bankasının sanal pos uygulamasını kullanmak isterseniz öncelikle aşağıdaki bağlantıdan Garanti bankasının sağlamış olduğu örnekleri indirebilirsiniz. Bu yazıda ASP.NET ve C# kullanılarak, Garanti bankası tarafından sağlanan dosyalar dışında hiç bir ek dosya kullanılmadan nasıl sanal pos entegrasyonu yapılabileceğini inceleyeceğiz.

Garanti Bankası Sanal Pos Dosyaları

Öncelikle kart bilgilerinin girileceği yapıyı oluşturalım.

kartFormu

Sayfanın tamamının post-back olmaması için button’un UseSubmitBehavior=”false” özelliğini kapatmayı tercih edebiliriz. Çok pratik bir yöntem olmasa da ay ve gün için FormLoad() event’i içinde aşağıdaki kodları kullanarak DropDownList içerisinde ay ve yılları gösterebiliriz.

Ek olarak, oluşturulan elemanların HTML5 ile gelen yeni özelliklerden olan otomatik tanımlama özelliğini autocomplete=”off” parametresi ile kapatalım ve required parametresi ile gerekli hale getirelim. Bu kontroller dışında ASP.NET veya jQuery kontrolleri de ekleyebiliriz. Örneğin isim bölümüne sayı ve özel karakter girilememesi için aşağıdaki asp:RegularExpressionValidator kodunu kullanabiliriz.

Ödemeyi tamamla button’una tıklandığında olacak işlemler için button’un Click() event’ine değişkenleri tanımlayarak başlayalım.

Garanti bankası sanal pos hizmeti aldığınızda size aşağıdaki bilgiler verilecektir. Bu bilgiler kullanılarak https://gtsweb.garanti.com.tr adresine giriş yapabiliyor ve gerekli izinlere sahip olmanız gerekmektedir. Aşağıdaki kodda değiştirilmesi gereken bölümler, yanında yorum satırları ile verilmiştir. Satış işlemleri sırasında varsayılan olarak tanımlı olan PROVAUT kullanıcısı kullanılabilir.

Bankacılık işlemleri sırasında kullanıcının IP adresi de öğrenilmelidir. Bu bilgiye aşağıdaki kod ile ulaşılır.

Sırada kullanıcının bilgilerinin tutulacağı değişkenleri tanımlayalım. Burada kart bilgilerinin dışında müşterinin e-postasına, sipariş için bir ID numarasına ve toplam ödenecek tutar bilgilerine ihtiyacımız var.

 Satışta kullanılan döviz türünü ve diğer gerekli bilgileri aşağıdaki değişkenlerde tutuyoruz.

Garanti bankasının örneklerinde deneme için farklı bir host adresi de verilmektedir ancak yaşadığım tecrübeler sonucu size deneme sunucusunu kullanmamanızı şiddetle öneriyorum :) Bunun yerine 1 kuruşluk satışlar ile deneme yapabilirsiniz. Hatalı bir miktar girerseniz Garanti bankasının sanalpos sitesi aracılığıyla bir yönetici hesabı ile ödemeleri iptal edebilirsiniz.

Son olarak Garanti bankasının şifreleme algoritmasına göre şifrelenmesi gereken bir şifre oluşturmalıyız. Bu şifre oluştururken Garanti bankasının vermiş olduğu, aşağıda methodları kullanabiliriz.

Tanımlanması gereken son değişkenler ise aşağıdaki gibidir.
Artık bankaya gönderilecek XML verisini aşağıdaki kodla oluşturabiliriz. Bankanın önerdiği değişkenleri kullandığımız için bu kısımda bir değişiklik yapmamız çok gerekli değildir. Ancak burada girilen bilgiler minimum gerekli bilgilere karşılık gelmektedir. Satış sonrasında bilgilerin daha iyi arşivlenmesi için elinizdeki bilgilere göre aşağıdaki yapıyı geliştirebilirsiniz. Bu yapıdaki verilerin özellikleri ile ilgili daha detaylı dökümanlar Garanti bankasının sağlamış olduğu dosyalarda mevcuttur.
Artık banka sistemi ile iletişim kurmak için hazırız. Bankaya oluşturduğumuz XML verisini göndermek için aşağıdaki kodları kullanabiliriz.
Bütün işlemler bu kadar. Müşteriye gösterilen mesaj üzerinde sunumunuza yönelik çeşitli tasarımlar yapmanız ve sonucu başarılı / başarısız olarak göstermenizi öneririm. Eğer console’a yazılan hata mesajlarını okumak isterseniz yorum satırı haline getirilmiş kodları açıp inceleyebilirsiniz.