Professional Documents
Culture Documents
Kuveyt Türk Sanal Pos Kurulum
Kuveyt Türk Sanal Pos Kurulum
Siteniz vasıtasıyla alışveriş yapan müşteriniz; kredi kartı bilgilerinin sitedeki ödeme ekranlarına girer, bu bilgiler ilgili
bankaya ulaşır ve işlemin provizyonu(Onay) alınır. Provizyonu alınmış işlemlerin tutarı ilgili müşterinin kredi kartı limitinden
düşerek çalıştığınız banka hesabına geçirilir. Web site üzerinden çalışan on-line bir Post’tur.
Troy, Visa ve MasterCard’ın dahil olduğu internet üzerinden gerçekleştirilen ödeme işlemlerinde daha
güvenilir bir ortam sağlayan sistemdir.
3D Secure ve Go sistemleri kullanıcı, üye işyeri ve banka arasındaki sorumlulukları da düzenlemektedir.
3D Secure sistemi uygulanan ödeme işlemlerinde kullanıcıdan kart bilgileri alındıktan sonra,
kullanıcı bankanın 3D Secure veya Go ödeme sayfasına yönlendirilmektedir. Burada kullanıcı banka tarafından
kendisine gönderilen kısa mesajda yer alan şifreyi girer, böylece kart doğrulanmış ve yapılan işlem
kullanıcı tarafından imzalanmış olmaktadır.
Kuveyt Türk Katılım Bankası tarafından sunulan Sanal Pos servisi 3D Secure ve Go ödeme işlemlerini
desteklemektedir .
3D Model uygulanmış tipik bir ödeme işlemi aşağıdaki temel adımlarla gerçekleşmektedir.
Bu adımların uygulanmasına dair teknik bilgiler daha sonraki bölümlerde yer almaktadır.
Kuveyt Türk Katılım Bankası Sanal Pos Entegrasyon Dokümanı Güncelleme Tarih: 15/01/2019
3. Zorunlu Alanlar Ve Açıklamaları
Bu bölümde üye işyeri ve Sanal Pos servisi arasında gerçekleştirilecek entegrasyon için bilgiler
yer almaktadır. Üye işyerinin 3D Model ödeme uygulayabilmesi için aşağıdaki bilgilere sahip olması
gerekmektedir.
CustomerNumber(Müşeri No): Üye işyerinin Kuveyt Türk'teki Sanal Pos için kullanılabilecek
hesaba ait müşteri numarasıdır. Maille üye işyerine gönderilmektedir.
FailUrl(Başarısız İşlem Adresi): Başarısız Güvenli Ödeme işlemlerinde ait sonucun gönderileceği adrestir. Bu nedenle
işlemlere ait sonuçlar üye işyerinin belirleyeceği bir sayfaya gönderilmektedir.
CardNumber(Kart Numarası): Ödemeyi yapacak kişiye ait kartın üzerindeki 16 haneli numaradır ,16 karakter olacak ve
aralarında boşluk/veya sembol olmayacak şekilde gönderilmelidir.
CardExpireDateYear(Kart Son Kullanım Yılı): Kartın ön yüzünde bulunan son kullanma tarihinin yılıdır ,2 karakter olarak
gönderilecektir. (Örneğin; 2019 için 19)
Kuveyt Türk Katılım Bankası Sanal Pos Entegrasyon Dokümanı Güncelleme Tarih: 15/01/2019
CardExpireDateMonth(Kart Son Kullanım Ayı): Kartın ön yüzünde bulunan son kullanma tarihinin ayıdır, 2 karakter olarak
gönderilecektir.( Örneğin; Ocak ayı için 01)
CardCVV2: Kartın arka yüzündeki 3 haneli güvenlik kodudur. 3 karakter olarak gönderilecektir.
CardHolderName(Kart Sahibinin Adı Soyadı) : Kartın ön yüzünde yer alan isim soyisim bilgisidir.
TransactionType(İşlem Türü) : Satış işlemi ve diğer işlemlerde sabit değer olarak “Sale” gönderilmesi gerekmektedir.
InstallmentCount(Taksit Sayısı): Taksit sayısı bu alana girilmelidir, taksit yapma yetkiniz bulunmuyorsa 0
olarak gönderilmelidir.
Amount(Tutar): İşlem tutarının girildiği alandır. Bu alanda hiçbir noktalama işareti kullanılmayacak ve gerçek tutarın 100
katı gönderilecektir. (Örneğin; 102.65 TL için 10265, 1 TL için 100 gönderilecek)
CurrencyCode(Para Kodu): Para birimidir, “0949” olarak gönderilmesi gerekmektedir. Diğer para kodları şimdilik geçerli
değildir.
MerchantOrderId(Üye İşyeri Sipariş No): İşlemin üye işyeri tarafında yer alan numarasıdır. Bu alana işyeri istediği sabit veya
değişken değer atayabilir.
TransactionSecurity (İşlem Güvenliği): İşlemin yapılacağı güvenlik türü bilgisidir. Güvenli Ödeme işlemleri için sabit değer 3
girilmelidir.
UserName(Api Kullanıcı Adı): https://kurumsal.kuveytturk.com.tr adresine login olarak kullanıcı işlemleri sayfasında
API rolünde oluşturulan kullanıcı adıdır. (Yönetim- Kullanıcı İşlemleri- Kullanıcı Ekleme)
OrderId(İşlem No): İşlemin Sanal Pos sisteminde kayıtlı numarasıdır. Banka Tarafında üretilmektedir.
ProvisionNumber(Provizyon Numarası): Başarılı işlemlerde kart bankasının vermiş olduğu otorizasyon numarasıdır. Kart
bankası tarafında üretilmektedir.
Kuveyt Türk Katılım Bankası Sanal Pos Entegrasyon Dokümanı Güncelleme Tarih: 15/01/2019
RRN(Referans Numarası1): Pos bankası tarafında üretilen işlem referans numarasıdır.
ResponseCode(Cevap Kodu): Genel kabul görmüş kart veya pos bankası cevabıdır. Bu alan sadece numerik
gelmektedir. Başarılı işlemlerde “00” kodu verilmektedir. Her bir kod farklı bir cevabı bulunmaktadır.
ResponseMessage (Cevap Mesajı)= Genel kabul görmüş kart veya pos bankası cevabının açıklamasıdır.
Negatif
olmayan tam
Amount Tamsayı 22 sayılar İşlem tutarı virgülsüz olarak gönderilmelidir.
Negatif
olmayan tam Amount değeri ile aynı olacak şekilde
DisplayAmount Tamsayı 20 sayılar gönderilmelidir.
4 haneli
döviz kodu. Para birimidir , 0949 olarak gönderilmesi
CurrencyCode Text 4 0949 gibi gerekmektedir.
Harf veya
rakam İşlemin üye işyeri tarafında yer alan
MerchantOrderId Text 50 girilebilir. numarasıdır.
Negatif
olmayan tam İşlemin yapılacağı güvenlik türü bilgisidir.
TransactionSecurity Tamsayı 4 sayılar 3D methodu için 3 değeri gönderilmelidir.
4. Entegrasyon
Sanal Pos tarafından sunulan Güvenli ödeme yöntemi için kullanılacak örnek bir entegrasyon
işlemi bu kısımda anlatılmaktadır.
Üye işyeri sipariş detayını görüntüler. Kullanıcıdan, 3D Secure ödeme işlemini seçmesi beklenir.
Üye işyeri kullanıcıdan kart bilgilerini alır. Kart, sipariş ve üye işyerine ait bilgileri içeren mesaj
oluşturulur. Mesajda yer alacak HashData alanına dikkat edilmelidir. Bu mesaj yapısı XML formatındadır. Bir
sonraki bölümde mesaj yapısı ve örnek mesaj yer almaktadır.
Üye işyeri oluşturduğu XML mesajı Sanal Pos tarafından sunulan Güvenli ödeme noktasına HTTP
POST yöntemi ile gönderir.
Kuveyt Türk Katılım Bankası Sanal Pos Entegrasyon Dokümanı Güncelleme Tarih: 15/01/2019
Bu işlem sonucunda HTML yapısında bir cevap yer almaktadır. Üye işyeri bu
HTML cevabı tarayıcıya iletmelidir.
Sanal Pos tarafından gerçekleştirilecek işlemler sonrasında işleme ait sonuç XML mesaj şeklinde
FailUrl ya da OkUrl e HTTP Post ile iletilecektir. Bir sonraki bölümde mesaj yapısı ve örnek mesaj yer
almaktadır.
Güvenli Ödeme şifre ekranı ile sadece kart doğrulama işlemi yapılmaktadır ,
otorizasyon verilmemektedir, otorizasyon almak için onay 3D model ödeme onaylama adresine
istekte bulunmanız gerekmektedir.
Üye işyeri FailUrl'e veya OkUrl'e gelecek cevaba göre kontrollerini yapar, dilerse kullanıcıya
gösterebilir.
Eğer işlem sonucu başarılı ise(mesaj OkUrl'e iletildi ise) üye işyeri ödeme işlemini
sonlandırmak için Sanal Pos 3D Model Provizyon adresine ödeme mesajı göndermelidir.
Gönderilecek mesajda, bu noktada gelen cevapta yer alan "MD" değeri ile birlikte ilk aşamada gönderilen üye işyeri
ve sipariş bilgileri gönderilmelidir.
Sanal Pos 3D Model Provizyon adresine gönderilen mesaj Sanal Pos servisi
tarafından işlenir ve XML cevap verilir. XML cevapta yer alan ResponseCode değeri "00" olduğu durumda
ödeme işlemi gerçekleşmiş olmaktadır.
<APIVersion>1.0.0</APIVersion>
<OkUrl>http://localhost:44785/Home/Success</OkUrl>
<FailUrl>http://localhost:44785/Home/Fail</FailUrl>
<HashData>krZIKyn4vFdbsqO+saAQVgzps1U=</HashData>
<MerchantId>496</MerchantId>
<CustomerId>400235</CustomerId>
<UserName>apiuser</UserName>
<CardNumber>4025906425232421</CardNumber>
<CardExpireDateYear>25</CardExpireDateYear>
Kuveyt Türk Katılım Bankası Sanal Pos Entegrasyon Dokümanı Güncelleme Tarih: 15/01/2019
<CardExpireDateMonth>09</CardExpireDateMonth>
<CardCVV2>154</CardCVV2>
<CardHolderName>Ethem Yılmaz</CardHolderName>
<CardType>Troy</CardType>
<TransactionType>Sale</TransactionType>
<InstallmentCount>0</InstallmentCount>
<Amount>8650</Amount>
<DisplayAmount>8650</DisplayAmount>
<CurrencyCode>0949</CurrencyCode>
<MerchantOrderId>Siparis_16012019</MerchantOrderId>
<TransactionSecurity>3</TransactionSecurity>
</KuveytTurkVPosMessage>
<OrderId>18839791</OrderId>
<OkUrl>http://localhost:44785/Home/Success</OkUrl>
<FailUrl>http://localhost:44785/Home/Fail</FailUrl>
<MerchantId>496</MerchantId>
<SubMerchantId>0</SubMerchantId>
<CustomerId>0</CustomerId>
<UserName>apiuser</UserName>
<HashPassword>c77dFssAnYSy6O2MJo+5tMYtGVc=</HashPassword>
<CardNumber>4025906425232421</CardNumber>
<BatchID>177</BatchID>
<InstallmentCount>0</InstallmentCount>
<Amount>8650</Amount>
<MerchantOrderId>Siparis_16012019</MerchantOrderId>
<FECAmount>0</FECAmount>
<CurrencyCode>949</CurrencyCode>
<QeryId>0</QeryId>
<DebtId>0</DebtId>
Kuveyt Türk Katılım Bankası Sanal Pos Entegrasyon Dokümanı Güncelleme Tarih: 15/01/2019
<SurchargeAmount>0</SurchargeAmount>
<SGKDebtAmount>0</SGKDebtAmount>
<TransactionSecurity>3</TransactionSecurity>
</VPosMessage>
<IsEnrolled>true</IsEnrolled>
<IsVirtual>false</IsVirtual>
<ResponseCode>00</ResponseCode>
<ResponseMessage>Kart doğrulandı.</ResponseMessage>
<OrderId>18839791</OrderId>
<TransactionTime>0001-01-01T00:00:00</TransactionTime>
<MerchantOrderId>Siparis_16012019</MerchantOrderId>
<HashData>D2YGYlO9A2yx/5u/lcAfwpPhThA=</HashData>
<MD>NywtwVyca3Aiea0Y9h6bmq785hNclrVXAlS4T8TFYOsZVmkn0l/BWqOTd6qRh6rr</MD>
<ReferenceId>2d801731553142c7b8d89e30fc30fc2e</ReferenceId>
<APIVersion>1.0.0</APIVersion>
<HashData>spox3Wp2IOucLe7TAQ3FSsMt4ag=</HashData>
<MerchantId>496</MerchantId>
<CustomerId>400235</CustomerId>
<UserName>apiuser</UserName>
<TransactionType>Sale</TransactionType>
<InstallmentCount>0</InstallmentCount>
<Amount>8650</Amount>
<MerchantOrderId>Siparis_16012019</MerchantOrderId>
<TransactionSecurity>3</TransactionSecurity>
Kuveyt Türk Katılım Bankası Sanal Pos Entegrasyon Dokümanı Güncelleme Tarih: 15/01/2019
<KuveytTurkVPosAdditionalData>
<AdditionalData>
<Key>MD</Key>
<Data>NywtwVyca3Aiea0Y9h6bmq785hNclrVXAlS4T8TFYOsZVmkn0l/BWqOTd6qRh6rr</Data>
</AdditionalData>
</KuveytTurkVPosAdditionalData>
</KuveytTurkVPosMessage>
<VPosMessage>
<OrderId>18839791</OrderId>
<OkUrl>http://localhost:44785/Home/Success</OkUrl>
<FailUrl>http://localhost:44785/Home/Fail</FailUrl>
<MerchantId>496</MerchantId>
<SubMerchantId>0</SubMerchantId>
<CustomerId>400235</CustomerId>
<UserName>apiuser</UserName>
<HashPassword>c77dFssAnYSy6O2MJo+5tMYtGVc=</HashPassword>
<CardNumber>4025906425232421</CardNumber>
<BatchID>177</BatchID>
<InstallmentCount>0</InstallmentCount>
<Amount>8650</Amount>
<MerchantOrderId>Siparis_16012019</MerchantOrderId>
<FECAmount>0</FECAmount>
<CurrencyCode>949</CurrencyCode>
<QeryId>0</QeryId>
<DebtId>0</DebtId>
<SurchargeAmount>0</SurchargeAmount>
<SGKDebtAmount>0</SGKDebtAmount>
<TransactionSecurity>3</TransactionSecurity>
Kuveyt Türk Katılım Bankası Sanal Pos Entegrasyon Dokümanı Güncelleme Tarih: 15/01/2019
<OrderPOSTransactionId xsi:nil="true" />
</VPosMessage>
<IsEnrolled>true</IsEnrolled>
<IsVirtual>false</IsVirtual>
<ProvisionNumber>001895</ProvisionNumber>
<RRN>037616174577</RRN>
<Stan>114577</Stan>
<ResponseCode>00</ResponseCode>
<ResponseMessage>OTORİZASYON VERİLDİ</ResponseMessage>
<OrderId>18839791</OrderId>
<TransactionTime>2019-16-12T16:13:59.98</TransactionTime>
<MerchantOrderId>Siparis_16012019</MerchantOrderId>
<HashData>WFShNDqXnGs6P2qvCZ5zETIulCg=</HashData>
<BusinessKey>201901160698985742960003703</BusinessKey>
</VPosTransactionResponseContract>
</ResponseMessage>
Not: Ödeme işlemine ait cevap mesajının içerisinde yer alan VPOSMessage alanında, üye işyerlerinin
ödeme işlemi için gönderdikleri mesaj yer almaktadır.
Not: OkUrl veya FailUrl e iletilecek bu mesaj AuthenticationResponse altında UrlEncoded olacak
şekilde gönderilmektedir. Mesajı kullanmak için gelen formun içinde AuthenticationResponse
anahtarıyla gönderilen değeri UrlDecode ile çözünüz. (Örneğin .net için;
System.Web.HttpUtility.UrlDecode(Request.Form["AuthenticationResponse"]) şeklinde kod parçası
kullanınız.)
5.HashData Hesaplamaları
İşyerine gelen cevabın Kuveyt Türk Sanal POS tarafından gönderildiğinin kontrol edilebilmesi için HashData
değeri yer almaktadır. HashData alanının, üye işyerinin kendi oluşturduğu HashData ile aynı değere sahip
olması bu cevap mesajının Kuveyt Türk Sanal POS tarafından gönderildiğini doğrulanmıştır.
Banka tarafında gönderilen Cevap mesajı Hash hesaplamasında kullanılan parametreler şöyledir:
İşyerinin satış işleminde göndermesi gereken Hash hesaplamasında kullanılan parametreler şöyledir:
Not: Satış İşlemi Onay Mesaj (Request 2) yapısında sayfa yönlendirmesi yapılmadığından hash hesaplamasında OkUrl,
FailUrl alanları dahil edilmeyecektir.
5.1.HashData Hesaplama
$Password="";// Web Yönetim ekranalrindan olusturulan api rollü kullanici sifresi
$HashData=
base64_encode(sha1($MerchantId.$MerchantOrderId.$Amount.$OkUrl.$FailUrl.$UserName.$HashedPassword , "ISO-
8859-9"));
$Name=$_POST["CardHolderName"];
$CardNumber=$_POST["CardNumber"];
$CardExpireDateMonth=$_POST["CardExpireDateMonth"];
$CardExpireDateYear=$_POST["CardExpireDateYear"];
$CardCVV2=$_POST["CardCVV2"];
$Type = "Sale";
$Amount = ""; //Islem Tutari // örnegin 1.00TL için 100 kati yani 100 yazilmali
Kuveyt Türk Katılım Bankası Sanal Pos Entegrasyon Dokümanı Güncelleme Tarih: 15/01/2019
$MerchantId = ""; //Magaza Kodu
$HashData=base64_encode(sha1($MerchantId.$MerchantOrderId.$Amount.$OkUrl.$FailUrl.$UserName.$HashedPasswor
d , "ISO-8859-9"));
$TransactionSecurity=3;
.'<APIVersion>1.0.0</APIVersion>'
.'<OkUrl>'.$OkUrl.'</OkUrl>'
.'<FailUrl>'.$FailUrl.'</FailUrl>'
.'<HashData>'.$HashData.'</HashData>'
.'<MerchantId>'.$MerchantId.'</MerchantId>'
.'<CustomerId>'.$CustomerId.'</CustomerId>'
.'<UserName>'.$UserName.'</UserName>'
.'<CardNumber>'.$CardNumber.'</CardNumber>'
.'<CardExpireDateYear>'.$CardExpireDateYear.'</CardExpireDateYear>'
.'<CardExpireDateMonth>'.$CardExpireDateMonth.'</CardExpireDateMonth>'
.'<CardCVV2>'.$CardCVV2.'</CardCVV2>'
.'<CardHolderName>'.$Name.'</CardHolderName>'
.'<CardType>MasterCard</CardType>'
.'<BatchID>0</BatchID>'
.'<TransactionType>'.$Type.'</TransactionType>'
.'<InstallmentCount>0</InstallmentCount>'
.'<Amount>'.$Amount.'</Amount>'
.'<DisplayAmount>'.$Amount.'</DisplayAmount>'
.'<CurrencyCode>'.$CurrencyCode.'</CurrencyCode>'
.'<MerchantOrderId>'.$MerchantOrderId.'</MerchantOrderId>'
.'<TransactionSecurity>3</TransactionSecurity>'
.'<TransactionSide>Sale</TransactionSide>'
Kuveyt Türk Katılım Bankası Sanal Pos Entegrasyon Dokümanı Güncelleme Tarih: 15/01/2019
.'</KuveytTurkVPosMessage>';
try {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,'https://boa.kuveytturk.com.tr/sanalposservice/Home/ThreeDModelPayGate');
//Baglanacagi URL
$data = curl_exec($ch);
curl_close($ch);
echo($data);
error_reporting(E_ALL);
ini_set("display_errors", 1);
?>
<?php
$AuthenticationResponse=$_POST["AuthenticationResponse"];
$RequestContent = urldecode($AuthenticationResponse);
print_r($xxml);
?>
$MerchantOrderId = $_POST["MerchantOrderId"];
$Type = "Sale";
$TransactionSecurity=3;
$xml='<KuveytTurkVPosMessage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<APIVersion>1.0.0</APIVersion>
<HashData>'.$HashData.'</HashData>
<MerchantId>'.$MerchantId.'</MerchantId>
<CustomerId>'.$CustomerId.'</CustomerId>
<UserName>'.$UserName.'</UserName>
<TransactionType>Sale</TransactionType>
<InstallmentCount>0</InstallmentCount>
<Amount>'.$Amount.'</Amount>
<MerchantOrderId>'.$MerchantOrderId.'</MerchantOrderId>
<TransactionSecurity>3</TransactionSecurity>
<KuveytTurkVPosAdditionalData>
<AdditionalData>
<Key>MD</Key>
<Data>'.$MD.'</Data>
</AdditionalData>
</KuveytTurkVPosAdditionalData>
</KuveytTurkVPosMessage>';
Kuveyt Türk Katılım Bankası Sanal Pos Entegrasyon Dokümanı Güncelleme Tarih: 15/01/2019
echo "\n";
try {
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,'https://boa.kuveytturk.com.tr/sanalposservice/Home/ThreeDModelProvisionGate'
); //Baglanacagi URL
$data = curl_exec($ch);
curl_close($ch);
echo($data);
error_reporting(E_ALL);
ini_set("display_errors", 1);
?>
Kuveyt Türk Katılım Bankası Sanal Pos Entegrasyon Dokümanı Güncelleme Tarih: 15/01/2019