Garanti Sanal Pos Kurulumu, Sorunlar ve Çözümler
Bu yazımın online satış sistemi kuracaklar için yararlı olacağını düşünmekteyim.
Aşağıdakileri okumaya başlamadan bir önceki yazımı okumanız, sizin açınızdan faydalı olacaktır.
Online satış sistemini 3-D SECURE ödeme modeli ile yazmaya başladım. Bunun başlıca sebebi güvenlik açısından daha üst seviyede olmasıdır. Bu modeli bilmeyenler için öncelikle bir açıklama yapalım.

3-D SECURE Nedir, Nasıl Çalışır?
Kısaca kullanıcı kredi kartı bilgilerini girdikten sonra ilgili bankanın bir sayfası açılarak sizden şifre istemesidir. Bankanızın ilgili şifresini girdikten sonra online satış işlemine devam edecektir. Bu sayede bir kontrol mekanizması yerine fazladan bir tane daha eklenerek daha güvenli hale getirilmesidir. Sonuç olarak hem kullanıcı için hem de sitenin daha güvenli olduğunu söyleyebiliriz.
Sanal Pos Çeşitleri Nelerdir?
Siz zaten online satış işlemini yapmadan önce anlaşmalı olduğunuz bankanızdan ilgili örnek kod parçasını almanız gerekmektedir. Ben başlığımda da yazdığım gibi Garanti bankasının kodları üzerinden gittim.
Garanti bankası bize 3 farklı online satış işlemi sunmaktadır. Bunlar 3D, 3DOOSPAY, 3DPay dir. Bunların arasında fark ise, birincisi kendi websiteniz üzerinden kullanıcı kart bilgilerini alıp ilgili linke post etmektir. 3DOOSPAY ise biz burda herhangi bir işlem yapmıyoruz. Kullanıcı ilgili linke tıkladığında bankanın kendi sitesine yönlendirip işlemleri oradan yapmaktadır. Ben3D ve 3DPay arasındaki farkı pek anlamadım ama 3DPay de bankaya daha fazla bilgi gönderebiliyor olmamız. Kargo, Kargo ücreti, adres detayları vs.
Garanti Sanal Pos Kurulumu öncesi için gereken bilgiler nelerdir?
Bir çoğunuz biliyordur fakat bilmeyen arkadaşlarımıza şunu hatırlatmakta fayda var. Sanal pos kullanmak istiyorsanız sitenizin SSL Sertifikasına sahip olmanız gerekmektedir. Aksi takdirde Sanal Pos işlemlerini yapamazsınız. Haliyle güvenli sayfaların adresi http değil https ile başlamaktadır.
Garanti sanal pos kurmaya başlamadan önce bankanın bize bazı bilgileri vermesi gerekmektedir. Bunlar;
- Mağaza kodu (store ID)
- İşyeri Anahtarı (İşyeri Ayıracı)
- Kullanıcı Adı
- Şifre
- 3D secure sorgulaması için sunucu adresi
- 3D secure işleminin api sunucusunun adresi
Bana bunlardan api sunucu adresi haricinde diğerleri gönderildi. Api adresini öğrenmek için ilgili kişiyle bi kaç mailleşmeden sonra adresi alabildim. Belki sizede verilmez diye ben burada sizlerle paylaşayım.
Sunucu Adresi : https://ccpos.garanti.com.tr/servlet/gar3Dgate
Api sunucusunun adresi : https://ccpos.garanti.com.tr/servlet/cc5ApiServer

Garanti Bankası Sanal Pos sorun ve destek için iletişim bilgileri
Olaki takıldığınız nokta olur garanti bankasındaki ilgililere soru yöneltmek isterseniz, iletişim bilgileri aşağıda yazmaktadır. Hem telefonla hem de mail yoluyla size en hızlı şekilde cevap vermektedirler. O yönden içiniz rahat olsun
Gönül rahatlığıyla sorularınızı sorabilirsiniz.
E-posta adresleri : eticaret [at] garanti.com.tr
Telefon numarası : +90 (212) 4440339
Web adresi: http://eticaret.garanti.com.tr
Garanti Sanal Pos Kurulumu
Yukarıdaki bilgileri öğrendikten sonra artık kendi sanal pos sistemimizi kurabiliriz. Öncelikle ben 3D modeli ile sistemimi geliştirdim. Kullandığım örnek kod dosyaları “3DModel.php” ve “3DModelodeme.php” dir.
ÖNEMLİ NOT : Sizin 3D Secure modeli kullanabilmeniz için sistemden bunun tanımlı olması gerekmektedir. Yoksa aşağıdaki gibi bir hata alırsınız.
3D Dönen Parametreler
Parametre Ismi Parametre Degeri clientid XXXXXX oid 1093 mdStatus 7 mdErrorMsg Isyeri Kullanim Tipi Desteklenmiyor ErrMsg Isyeri Kullanim Tipi Desteklenmiyor Response Error ProcReturnCode 99
Güvenlik Uyarisi. Sayisal Imza Geçerli Degil
3D islemi onay almadi.
İlk önce 3Dmodel.php dosyasındaki yapacağımız değişiklikleri anlatalım.
$clientId = "XXXXXXXX"; //Banka tarafindan verilen is yeri numarasi $amount = "9.95"; //Islem tutari $oid = ""; //Siparis numarasi $okUrl = "http://<magaza_sunucu_adresi>/3DModelodeme.php"; //Islem basariliysa dönülecek isyeri sayfasi (3D isleminin sonucu, ödeme isleminin degil) $failUrl = "http://<magaza_sunucu_adresi>/3DModelodeme.php"; //Islem basarisiz ise dönülecek isyeri sayfasi (3D isleminin sonucu, ödeme isleminin degil) $rnd = microtime(); //Tarih veya her seferinde degisen bir deger güvenlik amaçli //$rnd = "x"; $storekey = "xxxxxx"; //is yeri ayiraci (is yeri anahtari) $storetype = "3d"; //3D modeli
Yukarıda zaten gerekli açıklamalar yazmaktadır. Ama ben size dikkat etmeniz gereken hususları anlatacağım.
- İşlem tutarını yazarken ayraç kullancağınız zaman nokta (.) kullanınız.
- $okUrl =”https://www.benimsitem.com/3DModelodeme.php” olsun. Mesela biz bu url’den parametre göndermek isteyebiliriz (Örn: ?fail=true). Sakın böyle bir şey yapmayın. Çünkü sistem size hata fırlatacaktır. Aynı durum $failUrl içinde geçerlidir. Hata mesajı : (Güvenlik Uyarisi. Sayisal Imza Geçerli Degil)
// ISTEGE BAGLI ALANLAR $description = ""; //Açiklama $xid = ""; //Islem takip numarasi 3D için XID i magaza üretirse o kullanir, yoksa sistem üretiyor. (3D secure islemleri için islem takip numarasi 20 bytelik bilgi 28 karaktere base64 olarak kodlanmali, geçersiz yada bos ise sistem tarafindan üretilir.) $lang=""; //gösterim dili bos ise Türkçe (tr), Ingilizce için (en) $email=""; //email adresi $userid=""; //Kullanici takibi için id
Yukarıdaki alanlar isteğe bağlı alanlardır. Eğer siz kullanıcının id’ sini 3DModelodeme.php sayfasından almak isterseniz $userid’ye bir değer verebilirsiniz. (İllaki göndermeniz gerekecek sonuç itibariyle para transferinden sonra kullanıcının ödeme bilgilerini veritabanına kaydetmeniz vs gerekcek.) Eğer userid ye değer verdiğinizde bir başka yapmanız gereken bi tane hiddenfield oluşturup value suna useridnin değerini vermeniz gerekmektedir (<input type=”hidden” name=”userid” value=”<?php echo $userid?>” > ). Çünkü örnek kodda yukarıdaki alanlar zorunlu olmadığı için eklenmemiştir.
<form method="post" action="https://<sunucu_adresi>/<3dgate_path>">
Son olarak formun actionına garanti bankasının bize vermiş olduğu ” https://ccpos.garanti.com.tr/servlet/gar3Dgate” linki yazarak, 3DModel.php dosyasında yapacağımız değişiklikleri böylelikle bitmiş olacağız.
Şimdi gelelim 3DModelodeme.php dosyasında yapacağımız değişikliklere ;
$hashparams = $_POST["HASHPARAMS"];
$hashparamsval = $_POST["HASHPARAMSVAL"];
$hashparam = $_POST["HASH"];
$storekey="xxxxxx";
$paramsval="";
$index1=0;
$index2=0;
while($index1 < strlen($hashparams))
{
$index2 = strpos($hashparams,":",$index1);
$vl = $_POST[substr($hashparams,$index1,$index2- $index1)];
if($vl == null)
$vl = "";
$paramsval = $paramsval . $vl;
$index1 = $index2 + 1;
}
$storekey = "xxxxxx";
$hashval = $paramsval.$storekey;
yukarıdaki kod parçasında sadece “xxxxxx” yazan yerlere işyeri anahtarını yazmamızdır.
// ÖDEME ISLEMI ALANLARI $name="XXXXXXXX"; //is yeri kullanic adi $password="xxxxxxxxx"; //Is yeri sifresi $clientid=$_POST["clientid"]; //Is yeri numarasi
Burada ise iş yeri kullanıcı adını ve işyeri şifresini yazacağız.
// Sanal pos adresine baglanti kurulmasi $url = "https://<sunucu_adresi>/<apiserver_path>"; //TEST
Son işlemimiz ise api server adresini yazarak işlemimizi tamamlayacağız. Burada $url değişkenine “https://ccpos.garanti.com.tr/servlet/cc5ApiServer” linkini atayacağız.
Garanti Sanal Pos sistemini kurmuş bulunuyoruz. İlgili bilgileri yazdıktan sonra tek şey kullanıcının kart bilgilerini girip ilgili para transferini sorunsuzca halletmektir.
NOT : Son bir bilgilendirme daha yapmak istiyorum. Sipariş numarası “$oid” eşsiz olmak zorundadır. Yoksa SQL ile ilgili bir hata mesajı alacaksınız.
Herhangi bir sorunuzu garanti uzmanlarına yöneltebileceğiniz gibi banada çekinmeden sorabilirsiniz.
More From EsPUnholy
- Asp.Net’ de istatistikleri grafikle göstermek
- Resx (Resource) dosyalarının içeriğini düzenlemek veya yenisini oluşturmak – Bölüm 3
- Resx (Resource) dosyalarının içeriğini düzenlemek veya yenisini oluşturmak – Bölüm 2
EsPUnholy Recommends
- O Kız Bana Bakmaz Abi : Çünkü Ezigim (ekmekspor)
- Bildiri (ekmekspor)
14 yorum bulunmaktadır - “Garanti Sanal Pos Kurulumu, Sorunlar ve Çözümler”
Yorum Yapın
Etiketler
Son Yazılar
- Cep telefonu kullanıcılarını mobil siteye nasıl yönlendirilir?
- require vs require_once
- IFrame ‘in yüksekliğini içeriğe göre ayarlamak
- Bmp uzantılı resim dosyasını jpg veya png olarak kaydetmek
- Php Resim Boyutlandırmasında Memory Limit sorunu
Son Yorumlar
- Php’ de Ajax yardımıyla dosya yükleme (File Upload) için chat
- Asp.Net’de Ajax kullanılarak CAPTCHA için Enes Pekkaya
- Asp.Net’de Ajax kullanılarak CAPTCHA için Cenk
- JQuery Form Kontrol için Sedat Kumcu
- Garanti Sanal Pos Kurulumu, Sorunlar ve Çözümler için Enes Pekkaya
Haftanın Özlü Sözü
Bağlantılar
- Hayata Tat Kat
- Innova Bilişim Çözümleri
- Onur Değerli
- Pleksus Bilişim Teknolojileri
- Sinan Gül
- Taner Günal
- Toppik – Minoxil
Arşivler
- Mart 2012
- Şubat 2012
- Ocak 2012
- Aralık 2011
- Kasım 2011
- Ekim 2011
- Eylül 2011
- Temmuz 2011
- Haziran 2011
- Mayıs 2011
- Mart 2011
- Ocak 2011
- Aralık 2010
- Kasım 2010
- Ekim 2010
- Eylül 2010
- Ağustos 2010
- Temmuz 2010
- Haziran 2010
- Mayıs 2010
- Nisan 2010
- Mart 2010
- Şubat 2010
- Ocak 2010
- Haziran 2009
- Mayıs 2009
- Nisan 2009
- Mart 2009


Çok faydalı oldu teşekkürler.
ÖNEMLİ NOT : Sizin 3D Secure modeli kullanabilmeniz için sistemden bunun tanımlı olması gerekmektedir. Yoksa aşağıdaki gibi bir hata alırsınız.
bunu sisteme nasıl tanımlıyoruz? bende aynı hatayı alıyorum sürekli fakat çözüm konusunda bir şey bulamadım.
3D secure ile online alışveriş işlemini açtırmak için garanti bankasının vermiş olduğum iletişim bilgileriyle iletişim kurmanız gerekmekte. email adreslerine “3d secure ile işlem yapamadığımı açtırmak istediğinizi” söyleyin. Söylemeye gerek yok ama mağaza kodunuzu falan göndermeniz gerekmekte. Yoğunluğa bağlı olarak 1-2 saat içinde size geri dönüş yaparlar zaten.
Bu dosyaların tam hallerini nereden indirebiliriz?
Siz hangi banka ile anlaştıysanız, onlar size ilgili dökümanları okumanız vs için bir adres vermeleri gerekmekte. İşte oradan kodlar vs dahil herşeyi indirebilirsiniz.
güzel anlatım olmuş hocam teşekkürler
Hocam SSL şart diyorsun ama artık ortak ödeme sayfası yada güvenli ödeme sayfası adı altında bütün bankalar SSL gerekmeden de sanal pos çalıştırıyor bilgin olsun.
Evet haklısın ama dikkat edersen bankalar seni kendi sistemlerine yönlendiriyorlar. Yani onların sistemi haliyle ssl sertifikasına sahip
Zaten ssl sertifikasına sahip değilsen kendi sitenden onliine pos ödemesi yaptıramazsın. Senin dediğin 2. farklı bir yöntem. Ama dediğim gibi her halukarda ssl sertikası olmadan sanal pos yapılmaz.
Enes hocam teşekkürler. Böyle bir yazıya ihtiyaç vardı.
herşey düzgün fakat gelen veri boş dönüyor. işlem başarısız uyarısı alıyorum. garanti’ye mail attım, hosts dosyasını kontrol edin dediler. yine sonuç değişmedi. sunucunuzdan çıkış olmayabilir dediler. oysa CURL ile bağlanamasam zaten hata verirdi. ne yaptıysam olmadı
Herşeyin doğru olduğunu düşünüyorsanız bu sorunun sebebi urlden parametre gönderdiğinizden dolayı olabilir yada online işlem yapılan sayfa güvenli olmadığından dolayıda olmayabilir. Yani https yerine http ile göndermiş olabilirsiniz.
Garanti sanal pos test sunucusunu ben hiç çalıştıramadım. Gerçek ortamda test yapın derim, 10 krş ile işlem yaparak tamamladım işlemleri. Bana sorarsan garanti test sunucusunda bir gariplik var.
Merhaba, çok faydalı bir yazı olmuş teşekkürler. Küçük bir de sorum olacak: wordpress sitelere sanalpos sistemi kurabilir miyiz. Ne tür sorunlarla karşılaşırız. Çok teşekkürler şimdiden.
Merhaba,
kendi sitem hariç
diğer yazmış oldğumu sitelerde hazır framework kullanmamaktayım. Daha önce wordpress de kod geliştirme deneyimim olmadığından dolayı size çok fazla bilgi veremeyeceğim. Sadece şunu söyleyebilirim; bence son derece dikkatli yazılması gereken bir siteye hazır kod kullanarak nasıl güveneceğinizdir. Sonuç itibariyle işin içine para girdiğinden dolayı wordpress de kod deneyimi olmuş bir arkadaşa inceletmenizi tavsiye ederim. Sonradan başınızı çok ağrıtabilir.