Sanal pos kurulumu ve ipuçları

Merhaba arkadaşlar bildiğim kadarıyla sanal pos konusuna değinmeye çalışacağım. Eğer daha önce hiç ilgilenilmemişse çoğu insanı korkutan bir konu, sanal poslar. Hâlbu ki hiçte göründükleri gibi ürkütücü şeyler değiller. Bilmeyenler için sanal pos nedir onu söyleyeyim. Bankalar internet ortamında bildiğimiz fiziksel pos cihazlarının işlevini manüel olarak gören bir hizmet sunuyorlar, manüel diyorum çünkü kartı fiziksel posa soktuğumuzda ilgili bilgiler bankamıza gönderiliyor, sanal posta biz elimizle giriyoruz. Bu hizmete sanal pos diyoruz. Yapı esasında bir cümlede anlatılacak kadar basit değil ama en genel haliyle bu şekilde düşünebilirsiniz.

 

banka sanal posEskiden çoğu banka bu hizmeti vermiyordu ama günümüzde internetten alış veriş (e-ticaret) aldı başını gidiyor, bildiğim kadarıyla bu hizmeti vermeyen banka bulunmuyor. Bankaya işletmenin bizzat başvurması gerekiyor. Bankaların prosedürleri için web sitelerini ziyaret edebilirsiniz. Başvurunuz onaylandıktan sonra banka size pos ile ilgili dökümanları yolluyor. Dökümanlar içerisinde php, asp, html, asp.net, java vb.. dilleriyle yapılmış örnekler ve posların tüm detayları bulunuyor. Örnekler içerisinde sadece bankanın size özel vermiş olduğu işyeri numarası, şifre gibi bilgileri değiştirerek test bilgileriyle kullanıma başlayabiliyorsunuz, yani neredeyse hiç bir şey yapmıyorsunuz. Bankalar ayrıca kendi sistemlerinden sanal pos trafiğini takip etmeniz için birde yönetici paneli veriyor. Buradan çekimleri iptalde edebiliyorsunuz.

Gelelim bankayla ilgili bilgi alış-verişine

Bankaya gönderilmesi gerekli kodlar;

  1. Bankada tanımlı bilgiler. (üye iş numarası, şifre, posid gibi..) *
  2. Kredi kartı üzerindeki ad, soyad *
  3. Kredi kartı numarası *
  4. Son kullanma tarihi *
  5. Güvenlik numarası (cvc) *
  6. İşlem türü *
  7. Çekilecek tutar *
  8. Para birimi *
  9. Taksit bilgisi *
  10. Siparişin numarası
  11. Kullanıcı bilgileri (adres, telefon, eposta vb..)

Bankadan alınması gereken bilgiler;

  1. Bankayla kurulan bağlantının başarısı *
  2. Bankanın geri döndürdüğü cevap *
  3. Bankanın geri döndürdüğü hata ve/veya hatanın kodu (bu bilgiler banka dökümanı içerisinde detaylı bir şekilde veriliyor.) *
  4. İşlemin onaylanmasında geri dönen, referans numarası ve diğer benzeri bilgiler.

Yanında (*) işareti bulunan maddeler neredeyse her banka için geçerlidir. Diğerleri ise bizim insiyatifimizdedir fakat size önerim bankaya bilgi gönderirken de alırken de alabildiğiniz kadar bilgiyi alıp saklamanız yönündedir. Bunun sebebi ileride oluşacak problemli durumlarda elinizde bir bilginin olması. Son kullanma tarihi, para birimi, çekilecek tutar gibi bilgilerin formatları bankadan bankaya değşkenlik gösterebilir. Bunun için yine bankanın gönderdiği dökümanlardan yardım alabilirsiniz.

Önemli not: Yazıp yazmamakta kararsız kaldım fakat yazmayı bir görev olarak hissetim. Kesinlikle ve kesinlik kullanıcının kart bilgilerini kendi veritabanınızda saklamayın ! Sadece kredi kartı sahibinin adını ve kart numarasının sadece ve sadece ilk ve son 2 hanesini saklayın. Buda size kullanıcı eski siparişlerini incelerken şu kartınızdan çekim yapılmış bilgisini verebilmek için. Şöyle bir soru gelebilir aklınıza bazı büyük firmalar bilgileri saklıyor, hatta aksine kredi kartı bilgimi kendim tanımlıyorum ! Doğru fakat bu işlem için ciddi anlamda güvenlik önleminin alınması ve sistemin işin uzmanları tarafından kurulmuş olması gerekir. Aklıma gelmişken çok uzun zaman önce bu konuyla ilgili bir yazı yazmıştım. Kendi fikrimi soracak olursanız ne olursa olsun saklanmasa iyi olur :)

Eğer sanal posunuzdan sürekli hatalı çekim yada benzeri bir durum olursa banka posunuzu bloklayabilir ve sizin bilginiz olmadan tekrar aktif edilemez. Bu tip durumları engellemek için elimizden geldiğince posumuza giden bilgileri filtrelemeliyiz. Bu filtrelemenin başında atmasyon girişleri engellemek için bankaların bin listesini kullanmak geliyor. (Yazının sonunda elimde olan bin listelerini vereceğim) Bin kodu ne işe yarar hemen onu söyleyeyim, banka kartlarının ilk 6 hanesi kartın hangi bankaya ve hangi özelliği taşıdığını ifade ediyor. Bu kodların listesinin tamamına sanıyorumki bin listesi deniliyor, sanıyorum diyorum çünkü %100 emin değilim. Emin olduğum nokta ise bu listelerin süper işe yaradığı. Kullanıcı kafadan bir kart numarası atıp posumuzu meşgul etmeye çalıştığında ilgili numaranın ilk 6 hanesini kontrol edip, hooop kardeşim ne yapıyorsun seçtiğin bankanın böyle bir kartı bulunmuyor deyip, önden kestirip atabilirsiniz. Bunu ajax ile birlikte kullanıp, kullanıcı kart numarasını girdiğinde kontrolde edebilir formu hiç post ettirmezsiniz. Bir başka önlem ise formu gönderen butona bir fonksiyon koyup ard arda gönderimleri engellemek. Bu durumda bilgiler doğru olsa bile 1 den fazla çekim yapılabilir. Malum Türk’ üz beklemekten hoşlanmayız ve beklemez tıklarız :)

Girdiğimiz bilgilerin yanlış olması durumunda kullanıcıyı bilgilendirmemiz gerekiyor. Örneğin; Son kullanma tarihi geçersiz, kartınız limit vermiyor gibi.. Bankalar geriye direk hata açıklamalarını gönderdiği gibi hataların kodlarınıda gönderiyor. Burada hata kodlarını kullanmak en işlevseli. Nedeni ise gelen hatanın zaman zaman İngilizce olması, çoğu hatada teknik ifadeler kullanılması bazen de boş gelmesi vb.. Dipnot olarak şunu da belirteyim, bu tarz sonuç vermeyen işlemleri dahi bankanın bize verdiği panelden kontrol edebiliyoruz. Hata kodlarını veritabanında bir tabloya kaydedip kullanıcıya oradan bu açıklamaları sunmak en işlevseli. Bunu bir kez yapıp tüm projelerinizde kullanabilirsiniz.

Elimde olan bankaların pos kodlarını buraya ekleyecektim fakat an itibariyle vazgeçtim, sonuçta bankanın verdikleriyle bire bir aynı. Bu kodlar yerine bankanın işlemi onaylaması prosedürüne bakalım. Yukarıda “Bankadan alınması gereken bilgiler” kısmında “bankayla kurulan bağlantının başarısı” adında bir madde bulunuyor. Bu şu demek; ilgili bilgileri bankaya göndermek için bankanın size vermiş olduğu ilgili adresle iletişim kurmanız gerekiyor ve bankanın sizi kabul etmesi gerekiyor. Banka bu işlem sırasında ek bir güvenlik önlemi olarak sunucunuzun ip adresinide alıp, bankaya başvururken verdiğiniz ip ile aynı olup olmadığını kontrol ediyor. Eğer değilse haliyle bağlantı kurulamıyor. Bir başka hata sebebi de o anlık banka sunucusunda yada internet bağlantısında meydana gelen aksaklık olabilir. Velhasıl kelam 1. aşama bankayla iletişim kurmak, eğer kurulmuşsa ve banka geriye işlemin tamam olduğunu belirten parametreyi döndürmüşse, para çekilmiş demektir. Bize bundan sonra düşen görev diğer prosedürleri uygulamaktır. Örneğin; veritabanına ilgili bilgileri yazmak, kullanıcıya çekildi ibaresini sunmak gibi..

Sanal poslarla çok uğraşan biriyseniz, bu iş için kendi web servisinizi yazabilirsiniz. Düşünün her seferinde uğraşmak yerine sadece 1 merkezden tüm müşteri poslarını yönetebilirsiniz. Müşterinin sayfasına sadece kart bilgilerinin ve bankanın seçilebileceği bir form koyarsınız ve kendi servisiniz üzerinden bankayla iletişim kurup geriye sonuçları döndürebilirsiniz. Kulağa çok hoş geliyor dimi :) Yakın zamanda böyle bir işe girişebilirim o zamanda konuyla ilgili tecrübelerimi sizlerle paylaşırım. Umarım faydalı bir yazı olmuştur. Herkese çalışmalarında kolaylıklar dilerim..

Arşivimdeki banka bin listelerini indirmek için tıklayın !