Sanal Pos Kütüphanesi

January 13, 2010

Tüm dünyada da aynı mıdır bilmiyorum ama Türkiye'de düşünmeyi sevmeyen ve sıcak para gelsinde nasıl olursa olsun diye düşünen bir girişimci kitlesi vardır. Bu kitlenin müdavimlerini çeşitli şekillerde gördük ve görmeye devam edeceğiz elbette. Buna birkaç örnek vermek gerekirse; Sucular, İnternet Kafeler ilk aklıma gelenlerden birkaçı.

Birçok sektör gibi yazılım şirketlerinde de durum pek farklı değil. Türkiye'de her yazılımcı bir dönem Muhasebe yazılımları ile köşe olmayı düşünmüş ve bu alanda yazılımlar geliştirmiş ve sonunda batmıştır :) İşini hakkıyla yapan AirTies, SesTek, Sobee gibi şirketleri bunun dışında tutmak istiyorum tabii. Onlar gerçekten göğsümüzü kabartan güzel şirketler.

Bu durum internet sektöründe de neredeyse böyle. Internet'te dönemsel olarak popüler olan konular hep olmuştur. Şirket sitesi yapanlar, e-ticaret sitesi yapanlar bunun en büyük örneği. E-ticaret belkide en zahmetli ve uçtan uca hizmet vermeyi gerektiren, güvene dayalı olduğu düşünülürse fırsatlar ve riskler kendini hemen belli eden bir konu olduğu halde, en çok uğraş verilen ve yukarıdaki saydıklarım göz önünde bulunmadan girilen bir iş modeli. E-ticaret bu yazının ana konusu değil, bu yüzden e-ticaretin sorunlarına bu yazıda değinmeyeceğim. Ama bu kadar çok üzerinde konuşulan, araştırmalar yapılan ürünler geliştirilen sektörde neden Magento, OpenCart gibi açık kaynak projelerin Türkiye'den çıkmadığını merak ediyorum doğrusu!? Tamam bu çok büyük bir proje ama hazır yemeğe alışan bizler defalarca POS kütüphanesi yazdığımız halde bunu neden açık kaynak kodlarını yayınlamıyoruz?!

Türkiye'nin önde gelen birkaç e-ticaret platformunun altyapısını geliştirenlerden biri olarak bu soruyu kendime yönelttiğim de, en azından Türk yazılım camiasına böyle bir katkıda bulunmam gerektiğine karar verdim. İyimi ettim, kötü mü ettim zaman gösterecek elbette!. Geliştirdiğim API kütüphanesinin kullanıcı rehberi belgeyi yakında tamamlayacağım. Bu konuda ki gelişmeleri @HasanOzgan(benim) ya da @dahius'un twitter hesabından takip edebilirsiniz.

Sanal Pos Kütüphanesi (vpos4php)

Bu kütüphane aynı zamanda PEAR kütüphanesi hazırlamaya, paketlemeye, Phing ve phpDocumentory kullanımı için bir örnektir. PHPUnit'de kullanımı ile ilgili örnekleri TestCase'lerinide ileride ekleyeceğim.

Türkiye'de Sanal POS altyapısını sunan 2 firma bulunmaktadır. EST ve POSNET. Birçok banka bu iki firmanın altyapısını kullanır. EST altyapısını kullanan bankalara Garanti, İşbankası, Axess, HSBC, Finansbank; POSNET altyapısını kullanan bankalara ise YapıKredi örnek verilebilir. Yani bu firmaların API'lerini kullanan her bankada bu kodlar çalışacaktır. Başka bir şirketin yaptığı altyapıyıda desteklemek için dökümanı bana gönderebilirsiniz.

Yapılan işlemler aşağı yukarı tüm POS altyapılarında aynı olunca bunları aynı veritabanları gibi tek bir arayüz üzerinden çalıştırmak gerekmektedir. İşte bunun için; projeyi geliştirilirken, tasarım kalıplarından(design patterns), fabrika (Factory Pattern) kullanılmıştır.

Kütüphane aşağıdaki methodları desteklemektedir.

  1. provision($request) methodu, kredi kartından çekilen para miktarı, kart limitinden düşürülür. Ama hesabınıza geçmez. Bazı firmalar kart doğrulama gibi işlemler için bunu kullanırlar. Bankalar arasında farklılık gösterse de, eğer daha sonra disposal methodu ile finanslaştırılmazsa tutarın kart üzerindeki blokesi kaldırılır.
    3D secure işlemi desteklenir.
  2. sale($request) methodu, $request nesnesi içerisinde belirtilen tutar kredi kartı limitinden düşürülür ve hesabınıza geçer.
    3D secure işlemi desteklenir.
  3. disposal($request) methodu, daha önce provision methodundan geri dönen işlem numarası (transactionId) ile birlikte finanslaştırmaya yarar. Yani daha önce kart limitinizden düşürülen para hesabınıza geçer.
  4. reversal($request) methodu, daha önce disposal ya da sale methoduyla finanslaştırdığınız işlemlerde kısmi iadeler yapmayı sağlar. Yani fiyatı güncelleştirebilirsiniz.
  5. refusal($request) methodu, daha önce yaptığınız bir işlemi iptal etmeyi sağlar.
  6. complete($request) methodu ise, 3DSecure işlemlemini tamamlamayı sağlar.

Bu api ile ilgili her türlü sorularınızı bana yöneltebilirsiniz. Fırsat buldukça size yardım etmeye çalışacağım.

vpos4php kütüphanesinin proje sayfasına buradan indirebilirsiniz.