Makale Özeti

Bu makalede e-ticaret sitelerindeki kredi kartı ile taksitli/taksitsiz ödeme işleminin nasıl yapıldığını detaylı bir şekilde anlatılacaktır. Sanal POS’un özelliklerini inceleyip , oluşturduğumuz e-ticaret sitesine, Sanal POS kodlarını entegre edeceğiz.

Makale

AMAÇ

Bu makalede e-ticaret sitelerindeki kredi kartı ile taksitli/taksitsiz ödeme işleminin nasıl yapıldığını detaylı bir şekilde anlatılacaktır. Sanal POS’un  özelliklerini inceleyip , oluşturduğumuz e-ticaret sitesine,  Sanal POS kodlarını entegre edeceğiz. Teknik bilginin yanında bankalar ile yapılan işlem adımlarını da incelenecektir.

 

Sanal POS Nedir?

Kredi Kartı alışverişlerimizde kullandığımız POS (Point of sale- ödeme noktası) cihazlarının,  e-ticaret için  Internet’e uyarlanmış şekline VPOS (Virtual point of sale- sanal ödeme noktası) denir. Internet üzerindeki alışverişlerinizde kredi kartı ile ödeme yapabilmenizi on-line olarak sağlayabilmektedir. Üye işyeri için, müşterinin yaptığı ödemeler VPOS sisteminden yararlanılan bankadaki firma hesabına geçmektedir.

E-ticarte sitesi üzerinden gönderilen  kredi kartı bilgilerini ve tahsilat tutarı bilgileri için ilgili bankaların merkezi sistemde provizyon işlemi tamamlanır, üye işyeri satış/tahsilat sistemine provizyon sonucunu (onay veya ret)  döndürür.

Üye işyeri sistemi de (Yani firma web sitesindeki VPOS sistemi) provizyon sonucuna göre yapılan işlemlerin geri bildirimini web ortamına aktarır. Bu şekilde işlemin kontrolü ve takibi net bir şekilde sağlanmış olur. Tüm bu işlemler sadece birkaç saniye içinde tamamlanır

Bu süreç esnasında, gerekli kontrol işlemleri dijital olarak gerçekleştirilir. Banka ve üye işyeri arasında dijital imza, dijital sertifika yoluyla yapılan kontrol sonucu gelen teyit bilgisi, bankadan üye işyeri ödeme sistemine provizyon (nakte çevirme işlemi) sonucu olarak geri döner. Bu işlemin ardından müşterinin kredi kartından alışveriş tutarı düşülür ve üye işyerinin bankadaki hesabına geçirilir.

Firmanın kendi web sitesi yoluyla e-ticaret yapabilmesini sağlayan bir yazılım olan VPOS uygulamasına geçmek son derece kolaydır.  

Bunun için firmanın ticari hesap açtığı banka ile üye işyeri ve e-ticaret sözleşmelerini imzalaması, ardından da bankaya ait VPOS yazılımını kendi web sitesine kurması yeterlidir.

Güvenlik:

VPOS ’ta  internet üzerinden transfer edilen bilgilerin 3. şahısların ellerine geçmesini önlemek için veri transferini halen en güvenli yöntem olarak bilinen SSL 128 Bit güvenlik yöntemini kullanarak gerçekleştirmektedir. E-mağazanın bulunduğu sistemden kredi kartı bilgilerini ve tahsilat tutarı alınarak ilgili bankanın  sistemine, SSL 128 Bit güvenlik yöntemi ile internet üzerinden iletir. Bankalar sanal POS hizmeti verecekleri web sitelerinde SSL 128 bit'lik şifreleme şartını aramaktadırlar.

 

 

SSL Sertifika Maliyetleri ve Nerden Alınır?
SSL Sertifika maliyetleri, sertifika sağlayan kuruma ve sertifika özelliklerine göre değişmektedir. Her yıl SSL sertifikası için 50$ ile 700$ aralığındaki bu ücreti vermeniz gerekmektedir. SSL sertifikası, e-ticaret sitesini yayınladığınız sunucu için olduğundan, sunucu sertifikası türünden bir sertifika almalısınız.

Ayrıca SSL sertifikası kullanmak için mutlaka sabit ip kullanılmalıdır. Sabit IP’i bankalar ile yapılan anlaşma sırasında, bankanın kullandığı firewall üzerinden geçebilmek için  bildirilmesi gerekmektedir. Bu sayede yalnızca bu IP üzerinden bildirilen istekler değerlendirilmektedir. Sabit ip 'de yaklaşık 30$ civarındadır.

Bankalar SSL sertifikaları için bir herhangi bir marka tercihinde bulunmamaktadır. Dolayısıyla maliyet açısından uygun bir sertifika alınmalıdır. Sertifika sağlayıcılardan tavsiye edebileceğim bir site: http:\\www.globalsign.com.tr

 

 

Sanal POS’un Avantajları

 

  Avantajların bazıları  ;

·         Sanal POS işlemlerini yapmak için birden fazla programlama türünü destekler. (Web Servisleri, Windows DLL, Java, CGI, C)

·         Hukuksal olarak gün geçtikçe desteği artmaktadır. ( http://www.tbb.org.tr )

·         Özellikle perakende (B2C) satışlarda %35-40 arasında artış sağlamaktadır.

·         Firmanın yerel bir pazardan daha geniş pazarlara, hatta yurtdışına açılmasına olanak sağlar.

·         Firma imajını ve rekabet gücünü olumlu yönde etkiler.

·         Geleneksel satış sürecinden çok daha kısa sürelerde alışveriş olanağı tanır. Zamandan yapılan bu tasarruf, müşteri memnuniyeti ve bağımlılığını arttırır.

·       Farklı işletim sistemi, web server, programlama ortamlarına tam olarak entegrasyonunu  sağlamak mümkündür. (MS Windows NT, MS Windows 2003, HP-UNIX, SCO-UNIX, Linux, AIX, Solaris )

·         Sanal POS'la yapılan alışverişlerde güvenlik son derece yüksektir.

·    Satışlarla ilgili bilgileri veri tabanına aktarır ve saklar. Aynı database’i kullanarak CRM uygulaması ile entegrasyon sağlanabilir. Bu sayede kullanıcı bilgilerini listelenmesi ve raporlama sağlanabilir.

 

 

E-ticaret sitesi oluşturabilmek için işlem sırası  :

1- Sitenin tasarımının ve programlamasının e-ticaret için hazırlanması

2- SSL için sabit bir IP almak

3- 128 bitlik SSL sertifikası almak

4- Uygun bir banka ile Sanal POS için anlaşmak

5- Bankanın verdiği kodları siteye adapte etmek

6- Siteyi test aşamasına s****k

7- Ve siteyi yayına açmak

 

Banka Başvuru adımları nelerdir?

Önemli: Başvurular e-ticaret sitesi sahibi olana firmalar tarafından yapılmaktadır.

  1. Başvurunuz Banka tarafından yaklaşık 7-15 gün içinde onaylanır. Onaylanma sürecinde alışveriş sitenizin çalışan hali banka tarafından kontrol edilecektir.  (injection testi, vb)
  2. Başvurunuz öncesinde sitenizin alışveriş sepeti uygulamasının tamamlanmış olması ve sitenizin kontrol amaçlı gezilebilir duruma gelmiş olması gerekmektedir.
  3. Bu onayın ardından Sanal POS hesabınız tanımlanır.
  4. Tanım yapılır yapılmaz bildirmiş olduğunuz e-mail adresiniz ve telefon numaranız üzerinden sizinle irtibata geçilecek ve gerekli bilgiler size iletilecektir.
  5. Tanımlanan kullanıcı adını ve şifreyi kullanarak Bankanın Sanal POS sayfalarına giriş yaparak gerekli teknik bilgi ve yazılımları indirebilirsiniz.
  6. İndirdiğiniz yazılımları sunucunuza kurduktan sonra işlem geçirmeye başlayabilirsiniz. Bu etap, sisteminiz ile gerçekleştirmek istediğiniz entegrasyonun boyutlarına göre 15-20 dakikadan 4-5 saate kadar sürebilir.

Örnek : Akbank'ın Sanal Pos ön başvuru sayfası: http://www.akbank.com/eticaret/m02_07.asp

 

 

BANKA SİSTEMLERİ

 

Bankalar farklı sistemleri kullanmaktadır. Aşağıdaki şekilde hangi bankanın hani yapıyı kullandığını görebilirsiniz.

 

 

Referanslar:

http://www.est.com.tr/referanslar01.asp

http://www.est.com.tr/referanslar02.asp

http://setmpos.ykb.com/PosnetF1/index.html

http://www.vakifbank.com.tr/eticaret/vpos724.html

http://www.bankasya.com

 

EST POS SİSTEMİ

Gerekli bilgiler

Bankaların sanal posu EST firması tarafından yayınlanan epayment.ddl kütüphanesinin sunduğu işlemler yardımı ile gerçekleştirilir. Şu anda elimizde bulunan epayment.dll .net ile yazılmış olup versiyon numarası “1.0.1517.23556” dır. EST’den yeni versiyonlar geldikçe eski versiyonun yenisi ile güncellenmesini öneririm.

EST firmasından bağlantıya geçilip yardım alınabilecek adresi şudur;

Web   :http://www.est.com.tr

 

Müşteri tarafından yapılması gereken işlemler

Sanal pos testlerinin başlayabilmesi için müşterinin bankadan ilgili kişilerle konuşup sanal posta kullanılan bazı bilgileri alıp Firma’ya iletmesi gerekmektedir. Bu bilgiler;

 

Parametre

Açıklaması

Host

Banka sunucusu adresi

ClientId

Sayısal bir değer olan üye işyeri numarası

Name

Üye işyeri kullanıcı adı

Password

Üye işyeri şifresi

 

Bu bilgiler alındıktan sonra gerekiyorsa EST ile iletişe geçilip kodlama işlemine başlanır.

Firma tarafından yapılacak tanımlamalar ve işlemler

Öncelikle EST’den temin edilen test host adresi, clientId, password ve username bilgileri ile test posunda test işlemi gerçekleştirilir. Eğer onay alınıyorsa müşteriden gelen bilgiler ile gerçek işleme geçilir.

ClientId, name ve password bilgileri ile epayment.dl’lin ilgili alanlarını veri tabanında pos bilgilerinin bulunduğu tabloya şifreli olarak koymamız gerekiyor. Burada uygulanan şifreleme 2 yönlü olmalıdır, bu bilgiler kullanılacağı zaman deşifre edilir. Bu tabloda bulunması gereken alanlardan biri de host adresidir. Host adresi, clientId, password ve username test ve gerçek ortam için farklı olduğundan production ortamına geçerken adres bilgisi yeniden düzenlenmelidir.

Önemli: Dikkat edilmesi gereken nokta, Banka sanal posu için herhangi bir sabit IP tanımlamasının yapılması gerekmemektedir. Yoksa test işlemleri sırasında bankanın firewall’ında tanımlı olmayan sabit IP’miz olmadığı için, yaptığımız bütün istekler olumsuz geri dönecektir.

 

Örnek uygulama:

 

Pos parametreleri

VPOS isteği sırasında gönderilmesi gereken parametreler şunlardır;

 

Gönderilmesi zorunlu alanlar:

Host :

  Banka sunucusu adresi, test ve production ortamına göre farklı değer almaktadır.   

  Test host bilgisi             : "https://cc5test.est.com.tr/servlet/cc5ApiServer"

       Production host bilgisi    : “vpos.est.com.tr”         

Name :

Üye işyeri kullanıcı adı, test ve production ortamına göre farklı değer almaktadır.        

Test ve production için bu bilgi banka tarafından müşteriye yollanan sanal pos

dokümanından elde edilir.

Password :

Üye işyeri şifresi, test ve production ortamına göre farklı değer almaktadır.      

Test ve production için bu bilgi banka tarafından müşteriye yollanan sanal pos

dokümanından elde edilir.

 

Clientid:

Üye işyeri numarası, test ve production ortamına göre farklı değer almaktadır.  

Test ve production için bu bilgi banka tarafından müşteriye yollanan sanal pos

dokümanından elde edilir.

Orderresult :

0 olursa gerçek işlem 1 olursa test işlemi yapar. İşlemlerimizde bu alana 0 değerini

vermekteyiz.

Chargetype:

Auth PreAuth PostAuth Credit Void  olabilir ,

Auth       :  satış

PreAuth   : on otorizasyon

PostAuth : son otorizasyon, preauth yani ön otorizasyon işleminin capture edilmesi

Credit      : iade

Void         : iptal  işlemlerinin yapılmasını sağlar

Cardnumber:

Kredi kartı numarası

Expmonth:

Kredi kartı son kullanım ayı  , iki haneli sayı olarak girilmesi gerekiyor.

Expyear:

Kredi kartı son kullanım yılı , yılın son iki hanesi sayı olarak girilmelidir.

CVV2:

CVV veya CVC2, kredi kartın arkasında yer alan üç haneli güvenlik numarasıdır.

Subtotal:

İşlem tutarı  , küsuratlı yabancı para miktarları için 0 dan sonra iki hane girilmeli

"10.95"  gibi . YTL için   “1.5” şeklinde değer verilebilir.                       

Currency:

Parabirimi (YTL icin "949", DOLAR için "840", EURO için "978" girilmelidir).

 

 

Gönderilmesi isteğe bağlı alanlar:

Parametre

Açıklaması

Sipariş numarası

Bu alanda girilen değeri tekrar kullanamazsınız, “unique” olmalıdır, bos gönderilirse sistem tarafından üretilir.

Taksit sayısı

Taksit parametresi hiç gönderilmez ise peşin işlem yapılır.

Işlem numarası

sistem tarafından üretilir. Bos gönderilmesi tavsiye olunur.

Ip

Sipariş veren müşterinin ip adresi

Userid

Sipariş veren müşterinin kullanıcı numarası

Email

Sipariş veren müşterinin Email adresi

Phone

Sipariş veren müşterinin telefon numarası

 

Geri Donen parametreler:

 

processorder() :

 işlemin bankaya ulaşıp ulaşmadığını  döndürür.

 

Appr :

Aşağıdaki değerlerden birini döndürebilir :

Approved : ( işlem basarili )

Declined  : ( işlem basarisiz)

Error        : (  işlem hatalı  )

 

Errmsg: 

işlemde hata olması durumunda hatanın nedeni yazılır.

 

Extra("fieldname") :

FieldName adındaki Extra field in değerini döndürür.

 

 

Geri Dönen Diğer Alanlar:

Parametre

Açıklaması

Sipariş numarası

işlemi yaparken sipariş numarası vermemişseniz otomatik olarak atanan sipariş numarası bu alan içinde geri döner , eğer önceden verilmişse verilen değer döner.

Groupid

Grup numarası.

Transid

İşlem numarası.

Code

Provizyon numarası.

Refno

Referans numarası.

Err

Bankadan gelen işlem kodu.

 

 

 Prosess işlemi

Gerekli alanlar doldurulduktan sonra mycc5pay.processorder()  komutu ile ödeme işlemi yapılır ve  sonuçlar belirtilen alanlarda donulur.processorder dan dönen  ( aspx içinden aşağıdaki şekilde ulaşılabilir. ) 

retval = mycc5pay.processorder()

 

İşlemi  yapmaya çalışarak, işlemin bankaya ulaşıp ulaşmadığını  döndürür. Sonuç olarak 1 yada 0 döner.

1 :

Obje banka ile konuştu, konuşma mümkün olmuş olsa dahi işlem basarili olmamış olabilir; işlemin başarılı olduğunu anlamak için mycc5pay.appr’nin değerinin "Approved" olması gerekiyor.

0 :

Mesaj transferi gerçekleşemedi.

 mycc5pay.appr ise aşağıdaki değerlerden birini döndürebilir :

Approved

: işlem basarili

Declined

: işlem basarisiz

Error

: işlem hatali 

Dönen değere göre işlemin gerçekleştirilip gerçekleştirilemeyeceği belli olur.

 

Loglama

Yapılan bütün olumlu yada olumsuz geri dönen işlem değerleri veritabanına eklenir. Bu log’lama işleminin amacı daha sonradan yapılan ödeme işleminin takip edilmesi yada ödeme işlemin geri alınması içindir.

 

 

 

HSBC POS SİSTEMİ

HSBC bankası sanal posu EST firması tarafından yayınlanan epayment.ddl kütüphanesinin sunduğu işlemler yardımı ile gerçekleştirilir. Farklı olarak bir ticket sistemi içermektedir.

 

 

Ticket Sistemi

HSBC sanal posuna işlem göndermeden önce  sistemden ticket almak gereklidir. Alınan ticket sanal pos apisi içerisindeki kart numarası alanına yazılır. Ticket 1 saat içerisinde kullanılmalıdır, bu süre sonunda otomatik olarak geçersiz duruma getirili. Bu ticket güvenlik amacı ile üretilmektedir ve her seferinde bir kullanımlık ticket üretilir.

 

Örnek uygulama:

Pan Değerini döndüren örnek method

Ticket değeri alabilmek için; aşağıdaki alanlar https://vpostest.advantage.com.tr/servlet/cardgate adresine post edilmelidir.

 

 

 

Gönderilen Parametreler

 

Parametre

Açıklaması

Pan

Kart numarası

Clientid

Banka tarafından verilen sanal pos mağaza numarası

cv2

CVV2 Güvenlik Kodu

Ecom_Payment_Card_ExpDate_Year

Son Kullanma Yıl YY formatında

Ecom_Payment_Card_ExpDate_Month

Son Kullanma Ay MM formatında

ReturnURL

Üye işyerinin geri dönen bilgileri alacağı adres

Sessionid

İşleme ait session id

 

 

Geri Dönen Parametreler

 

Parametre

Açıklaması

Pan

ticket değeri. Bu bilgi işlem post edilirken sanal pos apisi içerisindeki kart numarası alanına yazılır.

Pan değerinin ilk 6 hanesi kartın BIN numarasını verir.

Örnek olarak aşağıdaki pan değerinde BIN numarası (Kart numarasının ilk 6 hanesi) 424242’dir.

 

424242:F89DFF8B4AEAFFD671DBC4B25B:4926:

 

Sessionid

İşleme ait session id

 

Gerekiyorsa bildirilen adrese üye işyerine özel veriler de post edilebilir. Bu durumda bu veriler işlenmeden ReturnURL adresine geri gönderilir.

 

  

Process İşlemi

GetPan“ Function’undan geri gelen cevap “string” türde bir ticket değeridir. Kredi Kartı numarası olarak geri gelen bu string değer kullanılır.

 

Örnek Uygulama

Geri gelen parametreler  yorumlanarak işlem gerçekleştirilir.

 

Hata durumları ve izlenecek yollar

insufficient permission error hatası:

Production ortamında gerçek kredi kartı ile işlem yapılırken kullanıcı bilgileri (clientId, username, password) bilgilerinden biri hatalıdır.

Processorder sonucu 0 olması:

Banka ile bağlantı kurulamadığını gösterir bunun nedeni; host adresinin yanlış girilmiş olması, firewall üzerinden hosta erişimin yapılamaması yada eğer posun Ip tanımlaması zorunluluğu varsa yanlış Ip tanımlamasından kaynaklanıyor olabilir.

Production ortamında yapılan testlerde Invalid account number hatası alınması

İşlem yapılan kartın hsbc kart olması zorunludur diğer banka kartlarıyla işlem yapılamaz.

 

 

Sorularınız için bana mecit@kiray.net mail adresimden ulaşabilirsiniz.

Mecit Kıray (MCSD.NET,MCT)