Sanal Pos Gereksinimleri ve Tecrübeleriniz
Merhaba,
php ile tasarladığım bir siteye işbankası sanal pos kurarak 5 çeşit ürünü satışa sunacağım.
burada merak ettiğim bazı konular var. tecrübelerinizden yararlanmak istiyorum.
1- sanal posla ilgili herşeyi bankanın vereceği apiden faydalanarak mı yapacağım?
2- faturalandırmayı eatura ile yapmak zorundamıyım. yoksa sanal bir fatura örnegi gönderip manuel kesebilir miyim ?
3- sanal pos için hosting de özel IP ve Özel SSL mi gerekiyor? yoksa firmanın verdiği free SSL de iş görür mü?
4- sanalposla işlem yaparken benzersiz bir ürün ID si gibi bazı gereksinimler oluyordu. bu tip şeyleri banka api si ilemi yoksa manuel mi yapmam gerekiyor. bildiğiniz detayları yazar mısınız?
Merhaba, şu ana kadar 3 banka ile sanal pos olarak çalışma fırsatım oldu. Deniz Bank, Ziraat ve KuveytTürk
İlk soru için hem evet hem hayır.. Banka API olarak link, kullanıcı adı ve şifre veriyor (Tam olarak kullanıcı adı ve şifre olmasa da o mantıkta) sen o linke, kullanıcı adını, şifreni, fiyatı, müşterinin kart bilgilerini, olumlu dönüş linki, olumsuz dönüş linki, hash'i vb gibi bir çok parametre iletiyorsun. Oradan dönen yanıta göre de, müşteriye uygun sayfayı (Ödeme başarılı, kart bilgileri hatalı vb. Hatalı durumda bankadan hata sebebi dönüyor zaten) gösteriyorsun.. Github 'da yapılmış class'lar var (Sadece banka ile aradaki iletişimi sağlıyor, geri kalan gene senin elinde) onları da kullanabilirsin..
İkinci sorunun yanıtını bilmiyorum, lakin sanal pos ile giren her para için fatura kesme zorunluluğu var.. Firma da e-fatura'ya tabii olduğu için manuel olarak da e-fatura kesebilirsin.
Üçüncü soru için ise biraz karışık.. Kuveyt, Deniz, Ziraat problem etmeden Let's Encrypt SSL ile verdi sanal POS 'u (Ziraat kart bilgilerini POST almak yerine, iframe ile ben alırım dedi sadece) Akbank ise EV sertifikalı SSL istedi.
Ziraat 'den 1 kere red yedik, WP kullanıyordu site, WooCommerce.. Açık kaynak bir proje olduğu için, saldırıya uğrama tehlikesine karşın vermedi. Özel yazılıma geçince verdi.
Son sorumuza gelirsek, ben SiparisID olarak bir hash oluşturup onu gönderiyorum, dönen yanıta göre (Ödeme alındı, alınmadı) eğer ödeme alınmışsa, veri tabanında o hash'e ait siparişe gidip, ödemesi alındı olarak değiştiriyorum. Dolayısıyla benzersiz bir SiparisID oluşturmak yararınıza olacaktır.. Bir zorunluluğu yok, $siparisid = Time(); bile verebilirsiniz..