• Switch

3D ile Ödeme

Üye iş yerleri saklanan kart verisi ya da açık kart verisi ile Switch 3D Gateway’e HTML POST metodu ile istek göndermek sureti ile birden fazla banka Sanal PoS’una satış, taksitli satış ve ön otorizasyon ve taksitli ön otorizasyon işlemleri için 3D ödeme isteği gönderebilir. 

Üye iş yerlerinden üretim ortamında oluşturulan 3D istek formunu Switch 3D Gateway’e post etmeden önce, Switch Yönetim Ekranları’ında yer alan Banka Tanımlama menüsü altında hali hazırda kullandıkları bankalar için PoS credential bilgilerini girmeleri beklenmektedir. Bu adımdan sonra Switch sistemi ilgili Üye İşyerinin her banka için tanımladığı değerleri şifreli olarak saklar.

Akıllı Switch sistemi, üye işyerinin 3D istek tetiklemek sureti ile başlattığı işlemlerde hangi bankaya ödeme isteği gönderileceğine karar verir, sistemde şifreli olarak sakladığı banka credential bilgileri ile 3D Ödeme formunu hazırlar ve ilgili Acquirer bankaya isteği iletir.

Acquirer banka tarafından alınan 3D istek, 3D işlem formuna dönüştürülerek diğer modüller aracılığı ile kart bankasına iletilir ve kart sahibine doğrulama işlemi yapacağı ekran gösterilir.

Kart sahibi 3D doğrulama işlemini tamamlamasının ardından Switch 3D Gateway, üye işyerinin HTML POST içerisinde belirttiği success ya da fail URL üzerinden 3D işlem sonucunu işyerine döner.

Akıllı Switch sistemi ile;

➢ Üye işyeri tarafından API içerisinde gönderilen banka ID’sine istinaden direkt olarak ilgili bankaya ödeme isteği gönderilebilir

➢ Üye işyeri api içerisinde banka ID göndermez ise işlem yapılan kartın bankasına ödeme isteği gönderilebilir

➢ Üye işyeri API içerisinde banka ID göndermez ve işlem yapılan kartın bankası Switch sisteminde entegre bir banka değil ise üye işyerinin default olarak tanımladığı banka üzerinden ödeme isteği gönderilebilir

➢ Default banka tanımlanmamış ise tanımlı bankalardan herhangi birine istek gönderilebilir.

3D İstek Formu ve Alanları

Üye işyeri tarafından hazırlanacak HTML formunda POST isteğinin gönderileceği adresler ve forma alanları aşağıdaki gibidir. Alanların her biri String olarak gönderilebilir.

Alan Zorunluluk Uzunluk Açıklama
swtId Evet Max 36 Karakter İşlem gerçekleştiren işyeri ya da firma adına tanımlanmış Switch ID değerinin gönderildiği alandır.
requestId Evet Max 36 Karakter Her işlem için üretilen unique ID değeridir.
level Evet - 3D secure sonrasında işlemin provizyon devam edip etmeyeceğinin belirlendiği modelbilgisidir. Bu alan 3D_PAY olarak set edilecektir.
cardNumber cardToken alanı boş ise evet Min:15 KarakterMax:30 Karakter Kart numarası.
cardExpireYear cardToken alanı boş ise evet 2 Karakter İşlemde kullanılan kartın son kullanma tarihinin yıl bilgisinin gönderildiği alandır.
cardExpireMonth cardToken alanı boş ise evet 2 Karakter İşlemde kullanılan kartın son kullanma taihinin ay bilgisinin gönderildiği alandır.
cardCvv Hayır 3 Karakter İşlemde kullanılan kartın CVV bilgisinin gönderildiği alandır.
cardToken Saklanan kart ile yapılan otorizasyon işlemleri için evet Max 32 Karakter Token ID bilgisinin gönderildiği alandır.
orderId Hayır Max 36 Karakter Sipariş numarasının gönderildiği alandır.
generateOrderId Hayır 1 Karakter İş yeri işlemde gönderdiği orderId’nin kullanılmasını istiyorsa alanın değeri “N”, Switch’in işlemin yönlendirileceği sanal posun orderId yapısına uygun yeni bir orderId üretmesi isteniyorsa “Y”gönderilmelidir.Alan hiçgönderilmezse veya değeriboşgönderilirse de Switch yeni bir orderId üretir.
userId Evet Max 36 Karakter İşlem gerçekleştiren kullanıcının ID değerinin gönderildiği alandır.
txnType Evet - İşlem bilgisinin yollandığı alandır. Satış işlemleri için "sales", ön otorizasyon işlemleri için “preauth” olarakgönderilmelidir.
txnAmount Evet - İşlem tutarının yollanacağı alandır. Kuruş ayrımı “.” ile sağlanacaktır. Örnek : 1.45
txnCurrencyCode Evet 3 Karakter Kur bilgisinin yollandığı alandır. ISO standartlarında 3 haneli kod gönderilecektir.Örnek : 949
txnInstallmentCount Hayır Max 3 Karakter İşlem taksit sayısının yollanacağı alandır.
companyName Hayır Max 64 Karakter Sayfa gösterimlerinde kullanılacak işyeri isim bilgisi yer alacaktır.
successUrl Evet - Başarılı işlem cevabının döndürüleceği işyerine ait adres bu alanda yer alacaktır.
failureUrl Evet - Hatalı işlem cevabının döndürüleceği işyerine ait adres bu alanda yer alacaktır.
txnMotoInd Hayır 1 Karakter Yapılan işlemin mail order bir işlem olup olmadığı bilgisinin yollandığı alandır. 'Y' ise mail order işlem olarak algılanacaktır.
txnTimestamp Evet - İşlem zamanı bu alanda gönderilir.
lang Evet - Dil bilgisinin gönderildiği alandır. "tr" değeriningönderilmesi beklenir.
refreshTime Evet - Banka tarafında bir sayfa gösterimi olduğunda kullanılan alandır. 5 değeri gönderilmelidir.
customerName Hayır Max 50 Karakter Kart sahibinin isim bilgisi yer alacaktır.
customerLastName Hayır Max 50 Karakter Kart sahibinin soy isim bilgisi yer alacaktır.
customerGsm Hayır Max 16 Karakter Kart sahibinin GSM bilgisi yer alacaktır.
customerIp Evet Max 20 Karakter Kart sahibinin IP bilgisi yer alacaktır. Ipv4 formatında olmalıdır.
customerEmail Evet Max 128 Karakter Kart sahibinin email bilgisi yer alacaktır.
customerNationalNumber Hayır Max 20 Karakter Kart sahibinin TCKN bilgisi yer alacaktır.
acqId Evet - İşlem belirli bir bankanın sanalposu üzerindengönderilmek isteniyor isebu alan kullanılır. İstenilen Sanalpos için aşağıdaki rakamlara tekabül eden Id’ler kullanılmalıdır.Banka Kodu ve Adı:64: İŞ BANK A.Ş.62:T.GARANTİ BANKASI A.Ş46: AKBANK T.A.Ş.111: QNB FİNANSBANK A.Ş.10: T.C. ZİRAAT BANKASI A.Ş.12: T. HALK BANKASI A.Ş.67: YAPI KREDİ BANKASI
hashedData Evet - 3D ile Ödeme Request Hash Hesaplama başlığı altındaanlatılankritelere uygun olarak işyeri tarafından oluşturularak istekiçerisindegönderilecektir.
shippingAddress.name Hayır Max 50 Karakter Kargo adresine ait kişinin isim bilgisi yer alacaktır.
shippingAddress.lastName Hayır Max 50 Karakter Kargo adresine ait kişinin soyisim bilgisi yer alacaktır.
shippingAddress.companyName Hayır Max 64 Karakter Kargo adresine ait sirket adı bilgisi yer alacaktır.
shippingAddress.city Hayır Max 50 Karakter Kargo adresine ait şehir adı bilgisi yer alacaktır.
shippingAddress.country Hayır Max 50 Karakter Kargo adresine ait ülke adı bilgisi yer alacaktır.
shippingAddress.zipCode Hayır Max 16 Karakter Kargo adresine ait posta kodu bilgisi yer alacaktır.
shippingAddress.addressDetail Hayır Max 256 Karakter Kargo adresine ait detay adres alanı bilgisi yer alacaktır.
shippingAddress.phone Hayır Max 36 Karakter Kargo adresine ait telefon bilgisi yer alacaktır.
shippingAddress.gsm Hayır Max 16 Karakter Kargo adresine ait GSM bilgisi yer alacaktır.
shippingAddress.email Hayır Max 128 Karakter Kargo adresine ait mail bilgisi yer alacaktır.
billingAddress.name Hayır Max 50 Karakter Fatura adresine ait kişinin isim bilgisi yer alacaktır.
billingAddress.lastName Hayır Max 50 Karakter Fatura adresine ait kişinin soyisim bilgisi yer alacaktır.
billingAddress.companyName Hayır Max 64 Karakter Fatura adresine ait sirket adı bilgisi yer alacaktır.
billingAddress.city Hayır Max 50 Karakter Kargo adresine ait şehir adı bilgisi yer alacaktır.
billingAddress.country Hayır Max 50 Karakter Kargo adresine ait ülke adı bilgisi yer alacaktır.
billingAddress.zipCode Hayır Max 16 Karakter Kargo adresine ait posta kodu bilgisi yer alacaktır.
billingAddress.addressDetail Hayır Max 256 Karakter Kargo adresine ait detay adres alanı bilgisi yer alacaktır.
billingAddress.phone Hayır Max 36 Karakter Kargo adresine ait telefon bilgisi yer alacaktır.
billingAddress.gsm Hayır Max 16 Karakter Kargo adresine ait GSM bilgisi yer alacaktır.
billingAddress.email Hayır Max 128 Karakter Kargo adresine ait mail bilgisi yer alacaktır.
hashVersion Evet - “2.0” olarakgönderilmelidir.
comments[0] comments[1] comments[2] comments[3] Hayır Max 20 Karakter Garanti BBVAsanalposuna iletilencomment alanlarıdır. Bu alanda gönderilen data Switch tablolarında tutulmaz ve Garanti BBVA sanalposudışında bir sanalposailetilmez.Her bir comment alanı için maksimum uzunluk 20 karakterdir.

3D Cevap Formu ve Alanları

3D secure response mesajı, üye işyerinin istek mesajında gönderdiği successUrl ya da failureUrl adreslerine aşağıda yer alan data seti ile birlikte Switch 3D Secure Gateway tarafından Html Form olarak POST edilecektir.

Alan Açıklama
swtId SwitchID bilgisinin dönüldüğü alandır.
requestId İstek sırasında işyeri tarafından gönderilen tekil ID bilgisinin dönüldüğü alandır.
txnId işlem ID bilgisinin dönüldüğü alandır.
orderId Sipariş numarasının dönüldüğü alandır.
returnCode Switch Cevap koduna ait bilgilerin dönüldüğü bir alandır.
reasonCode Switch Alt Cevap koduna ait bilgilerin dönüldüğü bir alandır.
message Cevap açıklamasının döndürüldüğü alandır.
txnAmount İşlem tutarının döndürüldüğü alandır.
installmentCount Taksit sayısının döndürüldüğü alandır.
maskedNumber Maskeli kart numarasının dönüleceği alandır.
acquirerId Provizyon alınan banka ID bilgisinin dönüldüğü alandır.
acquirerName Provizyon alınan banka isminin dönüldüğü alandır.
hashedData Cevap hash bilgisinin dönüldüğü alandır. Üye işyerinin bu alanda dönen hash değerini hesaplayarak doğrulaması beklenir. 3D ile Ödeme Response Hash Hesaplama başlığı altında anlatılan kritelere uygun olarak işyeri tarafından hesaplanması gerekmektedir.
terminalId işlem yapılan terminal bilgisinin dönüldüğü alandır.
merchantId İşlem yapılan işyeri numarasının dönüldüğü alandır.
authCode Onay alan provizyon işlemlerinde onay kodunun döndüğü alandır.
successUrl İşyerine ait başarılı işlem URL’inin dönüldüğü alandır.
failureUrl İşyerine ait başarısız işlem URL’inin dönüldüğü alandır.
approved İşlemin onaylanıp onaylanmadığı bilgisinin dönüldüğü alandır.
retrefNum Banka tarafındaki tekil işlem numarasının dönüldüğü alandır.
eci 3D secure doğrulaması sonucunda alınan ECI değerinin dönüldüğü alandır.
cavv 3D secure doğrulaması sonucunda alınan CAVV değerinin dönüldüğü alandır.
md 3D secure doğrulaması sonucunda alınan MD değerinin dönüldüğü alandır.
xid 3D secure doğrulaması sonucunda alınan XID değerinin dönüldüğü alandır.
response Switch uygulamasına ait sonuç bilgisinin dönüldüğü alandır.
mdStatus 3D secure doğrulaması sonucunda alınan MD STATUS değerinin dönüldüğü alandır.
timestamp Cevap mesajına ait timestamp bilgisinin dönüldüğü alandır.
acqReturnCode İşyeri bankası tarafında üretilen cevap kodunun döndürüldüğü alandır.
acqReasonCode İşyeri bankası tarafında üretilen alt cevap kodunun döndürüldüğü alandır.
currencyCode Kur kodunun döndürüldüğü alandır.
extraData Ek detay bilgilerinin dönüldüğü alandır. Bu alanda data olması halinde Map<String, String> dönüş sağlanacaktır.
userId İşlemi yapan kullanıcının dönüldüğü alandır.
vposOrderId İstek mesajında generateOrderId Y veya boş olarak gönderildiyse ya da bu alan hiç gönderilmediyse Switch tarafından oluşturulan orderid değeridir.

3D ile Ödeme Request Hash Hesaplama

3D ile ödeme yaparken gönderilmesi gereken alanlardan biri hashedData isimli alandır. Bu alanda gönderilen 3D isteğinin içeriğinde yer alan belli başlı alanlar kullanılarak üretilen hash değeri beslenmelidir. Hash değeri hesaplamasında istek içerisinde gönderilen aşağıdaki parametrelerin yan yana String olarak concat edilip, Switch kullanıcısı için üretilen şifre değerinin hesaplamaya konulması gerekmektedir. Elde edilen son String değeri SHA256 algoritması kullanılarak hash hesabı için kullanılır. Hash sonucunda üretilen String büyük harflere çevrilip hashedData alanına beslenir. Yöntem ve örnek aşağıdaki gibidir :

3D Request Hash Hesabı :\n\nhashedData = UPPERCASE(SHA256(swtId & orderId & txnType & txnAmount & txnInstallmentCount & successUrl & failureUrl & txnTimestamp & txnCurrencyCode\n& Switch_Password)) \n\nÖrnek Data :\nswtid : CC82C381E078482AB328943FCCB7100C\norderId : unique_order_id txnType : sales txnAmount : 1.45\ntxnInstallmentCount : 0\nsuccessUrl : https://eticaret.garanti.com.tr/destek/postback.aspx failureUrl : https://eticaret.garanti.com.tr/destek/postback.aspx txnTimestamp : 18032021222930\ntxnCurrencyCode : 949 Switch_Password : 123asdASD@\n\nÖrnek Data ile 3D Request Hash Hesabı :\nhashedData = UPPERCASE(SHA256(CC82C381E078482AB328943FCCB7100Cunique_order_idsales1\n.450https://eticaret.garanti.com.tr/destek/postback.aspxhttps://eticaret.garanti.com.tr/d estek/postback.aspx18032021222930949123asdASD@))\nhashedData = 896F569528570C0735D319F9EA16B465B89EDC2E91362A28DD6D130FFCA728C8\n

3D ile Ödeme Response Hash Hesaplama

3D ile ödeme alındıktan sonra merchanta gönderilen cevap formunda da hashedData isimli alan yer alacaktır. Merchant, 3D cevap formundadönülen alanlardan aşağıdakilerini kullanarak hashedData alanındaki değeri üretmek süreti ile gelen datanın validitesini kontrol edebilir. Response hashi de yine Request hash’i hesabında olduğu gibi bazı alanların yan yana String olarak concat edilip, Switch kullanıcı şifresini de String’in sonuna concat edip SHA256 algoritması ile hashini alıp, büyük harflere çevirerek elde edilebilir. Yöntem ve örnek aşağıdaki gibidir :

3D Response Hash Hesabı :\n\nhashedData = UPPERCASE(SHA256(requestId & swtId & returnCode & reasonCode & message & Switch_Password))\nÖrnek Data :\nrequestId : 01032021191812\nswtId : CC82C381E078482AB328943FCCB7100C\nreturnCode : 00\nreasonCode : 00 message : Başarılı\nSwitch_Password : 123asdASD@\n\nÖrnek Data ile 3D Response Hash Hesabı :\n\nhashedData = UPPERCASE(SHA256(01032021191812CC82C381E078482AB328943FCCB7100C0000B\naşarılı123asdASD@))\n\nhashedData = 5A9AAE6D755B8662042C02A2645108F4998EAFA2E8DF52121A259ADBF26877E0

Örnek 3D İstek ve Cevap Formu

3D ile ödeme için örnek HTML formu HTML Table formatında aşağıda verilmiştir. Buradaki alanlar istenilen şekilde doldurulup, 3D request hash hesabı yapılıp hashedData alanına set edildikten sonra aşağıda verilen test veya prod url’ine Form Submit edilerek 3D ile ödeme isteği tetiklenebilir. Post edilen data application/x-www-form-urlencoded tipinde olmalıdır.

PROD Ortamı: https://kartsaklamabackend.garanti.com.tr/swt3dengine\nTEST Ortamı: https://gbtaksimtunel-integration.garanti.com.tr/swt3dengine
<html>\n <head>\n <title>3D_PAY Tester</title>\n </head>\n <body>\n <form name=\"myform\" action=\"https://gbtaksimtunel-integration.garanti.com.tr/swt3dengine\" method=\"POST\">\n <TABLE id=\"table\">\n <TBODY>\n <TR colspan=\"2\">\n <TD>\n <INPUT name=\"submit\" type=\"submit\" value=\"Submit\">\n </TD>\n </TR>\n <TR>\n <TD>swtId</TD>\n <TD>\n <input type=\"text\" id=\"swtId\" name=\"swtId\" value=\"CC82C381E078482AB328943FCCB7100C\">\n </TD>\n </TR>\n <TR>\n <TD>requestId</TD>\n <TD>\n <input type=\"text\" id=\"requestId\" name=\"requestId\" value=\"1309202181108786\">\n </TD>\n </TR>\n <TR>\n <TD>level</TD>\n <TD>\n <input type=\"text\" id=\"level\" name=\"level\" value=\"3D_PAY\">\n </TD>\n </TR>\n <TR>\n <TD>txnType</TD>\n <TD>\n <input type=\"text\" id=\"txnType\" name=\"txnType\" value=\"sales\">\n </TD>\n </TR>\n <TR>\n <TD>cardNumber</TD>\n <TD>\n <input type=\"text\" name=\"cardNumber\" value=\"5549601634451019\">\n </TD>\n </TR>\n <TR>\n <TD>cardExpireYear</TD>\n <TD>\n <input type=\"text\" name=\"cardExpireYear\" value=\"25\">\n </TD>\n </TR>\n <TR>\n <TD>cardExpireMonth</TD>\n <TD>\n <input type=\"text\" name=\"cardExpireMonth\" value=\"02\">\n </TD>\n </TR>\n <TR>\n <TD>cardCvv</TD>\n <TD>\n <input type=\"text\" name=\"cardCvv\" value=\"\">\n </TD>\n </TR>\n <TR>\n <TD>cardToken</TD>\n <TD>\n <input type=\"text\" name=\"cardToken\" value=\"\">\n </TD>\n </TR>\n <TR>\n <TD>additionalData</TD>\n <TD>\n <input type=\"text\" name=\"additionalData\" value=\"\">\n </TD>\n </TR>\n <TR>\n <TD>orderId</TD>\n <TD>\n <input type=\"text\" id=\"orderId\" name=\"orderId\" value=\"order1309\">\n </TD>\n </TR>\n <TR>\n <TD>generateOrderId</TD>\n <TD>\n <input type=\"text\" id=\"generateOrderId\" name=\"generateOrderId\" value=\"Y\">\n </TD>\n </TR>\n <TR>\n <TD>userId</TD>\n <TD>\n <input type=\"text\" id=\"userId\" name=\"userId\" value=\"PROVAUT\">\n </TD>\n </TR>\n <TR>\n <TD>customerIp</TD>\n <TD>\n <input type=\"text\" name=\"customerIp\" value=\"127.0.0.1\">\n </TD>\n </TR>\n <TR>\n <TD>customerEmail</TD>\n <TD>\n <input type=\"text\" name=\"customerEmail\" value=\"customer@mail.com\">\n </TD>\n </TR>\n <TR>\n <TD>txnAmount</TD>\n <TD>\n <input type=\"text\" id=\"txnAmount\" name=\"txnAmount\" value=\"1.50\">\n </TD>\n </TR>\n <TR>\n <TD>txnCurrencyCode</TD>\n <TD>\n <input type=\"text\" name=\"txnCurrencyCode\" value=\"949\">\n </TD>\n </TR>\n <TR>\n <TD>txnInstallmentCount</TD>\n <TD>\n <input type=\"text\" id=\"txnInstallmentCount\" name=\"txnInstallmentCount\" value=\"0\">\n </TD>\n </TR>\n <TR>\n <TD>companyName</TD>\n <TD>\n <input type=\"text\" name=\"companyName\" value=\"your_company_name\">\n </TD>\n </TR>\n <TR>\n <TD>successUrl</TD>\n <TD>\n <input type=\"text\" id=\"successUrl\" name=\"successUrl\" value=\"https://eticaret.garanti.com.tr/destek/postback.aspx\">\n </TD>\n </TR>\n <TR>\n <TD>failureUrl</TD>\n <TD>\n <input type=\"text\" id=\"failureUrl\" name=\"failureUrl\" value=\"https://eticaret.garanti.com.tr/destek/postback.aspx\">\n </TD>\n </TR>\n <TR>\n <TD>txnMotoInd</TD>\n <TD>\n <input type=\"text\" name=\"txnMotoInd\" value=\"N\">\n </TD>\n </TR>\n <TR>\n <TD>txnTimestamp</TD>\n <TD>\n <input type=\"text\" id=\"txnTimestamp\" name=\"txnTimestamp\" value=\"\n20100111174711\">\n </TD>\n </TR>\n <TR>\n <TD>lang</TD>\n <TD>\n <input type=\"text\" name=\"lang\" value=\"tr\">\n </TD>\n </TR>\n <TR>\n <TD>refreshTime</TD>\n <TD>\n <input type=\"text\" name=\"refreshTime\" value=\"5\">\n </TD>\n </TR>\n <TR>\n <TD>hashedData</TD>\n <TD>\n <input id=\"hashedData\" type=\"text\" name=\"hashedData\" value=\"replace with value calculated from 3D Request Hash Calculation\">\n </TD>\n </TR>\n <TR>\n <TD>acqId</TD>\n <TD>\n <input type=\"text\" name=\"acqId\" value=\"62\">\n </TR>\n <TR>\n <TD>customerName</TD>\n <TD>\n <input type=\"text\" name=\"customerName\" value=\"name\">\n </TD>\n </TR>\n <TR>\n <TD> customerLastName</TD>\n <TD>\n <input type=\"text\" name=\"customerLastName\" value=\"surname\">\n </TD>\n </TR>\n <TR>\n <TD>customerGsm</TD>\n <TD>\n <input type=\"text\" name=\"customerGsm\" value=\"5555555555\">\n </TD>\n </TR>\n <TR>\n <TD>customerNationalNumber</TD>\n <TD>\n <input type=\"text\" name=\"customerNationalNumber\" value=\"40887026099\">\n </TD>\n </TR>\n <TR>\n <TD>hashVersion</TD>\n <TD>\n <input type=\"text\" name=\"hashVersion\" value=\"2.0\">\n </TD>\n </TR>\n <TR>\n <TD>comments[0]</TD>\n <TD>\n <input type=\"text\" name=\"comments[0]\" value=\"Garanti Test\">\n </TD>\n </TR>\n <TR>\n <TD>comments[1]</TD>\n <TD>\n <input type=\"text\" name=\"comments[1]\" value=\"Garanti Test 10\">\n </TD>\n </TR>\n </TBODY>\n </TABLE>\n </form>\n </body>\n <html>

3D_PAY HTML Response Form Sample (Satış)

3D_PAY HTML Request Form Sample (Ön Otorizasyon)

<html>\n <head>\n <title>3D_PAY Tester</title>\n </head>\n <body>\n <form name=\"myform\" action=\"https://gbtaksimtunel-integration.garanti.com.tr/swt3dengine\" method=\"POST\">\n <TABLE id=\"table\">\n <TBODY>\n <TR colspan=\"2\">\n <TD>\n <INPUT name=\"submit\" type=\"submit\" value=\"Submit\">\n </TD>\n </TR>\n <TR>\n <TD>swtId</TD>\n <TD>\n <input type=\"text\" id=\"swtId\" name=\"swtId\" value=\"CC82C381E078482AB328943FCCB7100C\">\n </TD>\n </TR>\n <TR>\n <TD>requestId</TD>\n <TD>\n <input type=\"text\" id=\"requestId\" name=\"requestId\" value=\"13092021811087865\">\n </TD>\n </TR>\n <TR>\n <TD>level</TD>\n <TD>\n <input type=\"text\" id=\"level\" name=\"level\" value=\"3D_PAY\">\n </TD>\n </TR>\n <TR>\n <TD>txnType</TD>\n <TD>\n <input type=\"text\" id=\"txnType\" name=\"txnType\" value=\"preauth\">\n </TD>\n </TR>\n <TR>\n <TD>cardNumber</TD>\n <TD>\n <input type=\"text\" name=\"cardNumber\" value=\"5549601634451019\">\n </TD>\n </TR>\n <TR>\n <TD>cardExpireYear</TD>\n <TD>\n <input type=\"text\" name=\"cardExpireYear\" value=\"25\">\n </TD>\n </TR>\n <TR>\n <TD>cardExpireMonth</TD>\n <TD>\n <input type=\"text\" name=\"cardExpireMonth\" value=\"02\">\n </TD>\n </TR>\n <TR>\n <TD>cardCvv</TD>\n <TD>\n <input type=\"text\" name=\"cardCvv\" value=\"\">\n </TD>\n </TR>\n <TR>\n <TD>cardToken</TD>\n <TD>\n <input type=\"text\" name=\"cardToken\" value=\"\">\n </TD>\n </TR>\n <TR>\n <TD>additionalData</TD>\n <TD>\n <input type=\"text\" name=\"additionalData\" value=\"\">\n </TD>\n </TR>\n <TR>\n <TD>orderId</TD>\n <TD>\n <input type=\"text\" id=\"orderId\" name=\"orderId\" value=\"order13091\">\n </TD>\n </TR>\n <TR>\n <TD>generateOrderId</TD>\n <TD>\n <input type=\"text\" id=\"generateOrderId\" name=\"generateOrderId\" value=\"Y\">\n </TD>\n </TR>\n <TR>\n <TD>userId</TD>\n <TD>\n <input type=\"text\" id=\"userId\" name=\"userId\" value=\"PROVAUT\">\n </TD>\n </TR>\n <TR>\n <TD>customerIp</TD>\n <TD>\n <input type=\"text\" name=\"customerIp\" value=\"127.0.0.1\">\n </TD>\n </TR>\n <TR>\n <TD>customerEmail</TD>\n <TD>\n <input type=\"text\" name=\"customerEmail\" value=\"customer@mail.com\">\n </TD>\n </TR>\n <TR>\n <TD>txnAmount</TD>\n <TD>\n <input type=\"text\" id=\"txnAmount\" name=\"txnAmount\" value=\"1.50\">\n </TD>\n </TR>\n <TR>\n <TD>txnCurrencyCode</TD>\n <TD>\n <input type=\"text\" name=\"txnCurrencyCode\" value=\"949\">\n </TD>\n </TR>\n <TR>\n <TD>txnInstallmentCount</TD>\n <TD>\n <input type=\"text\" id=\"txnInstallmentCount\" name=\"txnInstallmentCount\" value=\"0\">\n </TD>\n </TR>\n <TR>\n <TD>companyName</TD>\n <TD>\n <input type=\"text\" name=\"companyName\" value=\"your_company_name\">\n </TD>\n </TR>\n <TR>\n <TD>successUrl</TD>\n <TD>\n <input type=\"text\" id=\"successUrl\" name=\"successUrl\" value=\"https://eticaret.garanti.com.tr/destek/postback.aspx\">\n </TD>\n </TR>\n <TR>\n <TD>failureUrl</TD>\n <TD>\n <input type=\"text\" id=\"failureUrl\" name=\"failureUrl\" value=\"https://eticaret.garanti.com.tr/destek/postback.aspx\">\n </TD>\n </TR>\n <TR>\n <TD>txnMotoInd</TD>\n <TD>\n <input type=\"text\" name=\"txnMotoInd\" value=\"N\">\n </TD>\n </TR>\n <TR>\n <TD>txnTimestamp</TD>\n <TD>\n <input type=\"text\" id=\"txnTimestamp\" name=\"txnTimestamp\" value=\"20100111174711\">\n </TD>\n </TR>\n <TR>\n <TD>lang</TD>\n <TD>\n <input type=\"text\" name=\"lang\" value=\"tr\">\n </TD>\n </TR>\n <TR>\n <TD>refreshTime</TD>\n <TD>\n <input type=\"text\" name=\"refreshTime\" value=\"5\">\n </TD>\n </TR>\n <TR>\n <TD>hashedData</TD>\n <TD>\n <input id=\"hashedData\" type=\"text\" name=\"hashedData\" value=\"replace with value calculated from 3D Request Hash Calculation\">\n </TD>\n </TR>\n <TR>\n <TD>acqId</TD>\n <TD>\n <input type=\"text\" name=\"acqId\" value=\"62\">\n </TR>\n <TR>\n <TD>customerName</TD>\n <TD>\n <input type=\"text\" name=\"customerName\" value=\"name\">\n </TD>\n </TR>\n <TR>\n <TD> customerLastName</TD>\n <TD>\n <input type=\"text\" name=\"customerLastName\" value=\"surname\">\n </TD>\n </TR>\n <TR>\n <TD>customerGsm</TD>\n <TD>\n <input type=\"text\" name=\"customerGsm\" value=\"5555555555\">\n </TD>\n </TR>\n <TR>\n <TD>customerNationalNumber</TD>\n <TD>\n <input type=\"text\" name=\"customerNationalNumber\" value=\"40887026099\">\n </TD>\n </TR>\n <TR>\n <TD>hashVersion</TD>\n <TD>\n <input type=\"text\" name=\"hashVersion\" value=\"2.0\">\n </TD>\n </TR>\n <TR>\n <TD>comments[0]</TD>\n <TD>\n <input type=\"text\" name=\"comments[0]\" value=\"Garanti Test\">\n </TD>\n </TR>\n <TR>\n <TD>comments[1]</TD>\n <TD>\n <input type=\"text\" name=\"comments[1]\" value=\"Garanti Test 10\">\n </TD>\n </TR>\n </TBODY>\n </TABLE>\n </form>\n </body>\n <html>

3D_PAY HTML Response Form Sample (Ön Otorizasyon)

Test Ortamında Örnek 3D İsteği Atma

3D request HTML’indeki alanlar set edilip hash hesabı yapıldıktan sonra ve hashedData alanı da set edildikten sonra test ortamı için aşağıdaki URL’e form submit edilerek 3D işlemi tetiklenir.

https://gbtaksimtunel-integration.garanti.com.tr/swt3dengine

Aşağıdaki datalar, test ortamında formlar submit edilirken alınmıştır.

3D_PAY Form Request Data Sample\n\nsubmit: Submit\nswtId: CC82C381E078482AB328943FCCB7100C\nrequestId: 19032021162734 \nlevel: 3D_PAY\ntxnType: sales\ncardNumber: 4824914773021017\ncardExpireYear: 22\ncardExpireMonth: 08 \ncardCvv:\ncardToken:\nadditionalData:\norderId: deneme_19032021162734 \ngenerateOrderId: Y\nuserId: PROVAUT \ncustomerIp: 127.0.0.1\ncustomerEmail: ETicaretDestek@garantibbva.com.tr \ntxnAmount: 1.50\ntxnCurrencyCode: 949\ntxnInstallmentCount: 0 \ncompanyName: TEST\nsuccessUrl: https://eticaret.garanti.com.tr/destek/postback.aspx \nfailureUrl: https://eticaret.garanti.com.tr/destek/postback.aspx \ntxnMotoInd: N\ntxnTimestamp: 20100111174711 lang: tr\nrefreshTime: 5\nhashedData: 7BD1234426177861CFEFB50D9B1C09D135966D390541BBC1FDD668CB7B65A07D\nacqId:\ncustomerName: name \ncustomerLastName: surname \ncustomerGsm: 5411230541\ncustomerNationalNumber: 40887026099\nhashVersion: 2.0\ncomments[0]: Garanti Test \ncomments[1]: Garanti Test 10

Bu alanlar submit edildikten sonra Garanti Bankası 3D Secure sayfası açılacaktır, burada yer alan dropdown’dan gelen default telefon numarası seçilip TAMAM butonuna basmak gerekmektedir :

Tamam butonunabastıktan sonraaşağıdaki gibi bir sayfaya yönlenme olacaktır, buradaki SMS Şifre kısmına her istek için sabit 123456 yazılmalıdır. Şifre girildikten sonra bu sayfada yer alan TAMAM butonuna basılıp 3D Doğrulama yapılmıştır olacaktır :

3D Doğrulaması’ndan sonra sonuç olarak form içerisinde aşağıdaki alanlar dönecektir :

3D_PAY Form Response Data Sample

swtId: CC82C381E078482AB328943FCCB7100C\nrequestId: 19032021162734\ntxnId: TRXNE88D7BDAFC6F439FBD7D1D1BF4CC0EB7\nreturnCode: 00\nreasonCode: 00 \nmessage: Başarılı installmentCount: 0\ntxnAmount: 150\ncurrencyCode: 949 \nmaskedNumber: 482491***1017 \nacquirerId: 62\nacquirerName: T. GARANTİ BANKASI A.Ş \norderId: deneme_19032021162734 \nhashedData: 04A6AF57D333524B394A859C08F02013443E5B3977EEEBE451EECFAC15A83251\nterminalId: 30690168\nmerchantId: 7000679\nauthCode: 681204\nsuccessUrl: https://eticaret.garanti.com.tr/destek/postback.aspx \nfailureUrl: https://eticaret.garanti.com.tr/destek/postback.aspx \napproved: true\nretrefNum: 107803500194 response: Approved mdErrorMessage: \nAuthenticated eci: 05\ncavv: AAABCYUhmDglFgBlJiGYAAAAAAA= \nmd: tFdSJdmnKSoSJmpF9+6jj1SvXe7dWufQ6m2nF25/kM+CM5ppaXIm6CTzTUh968Xtu0M bl2KaXumTO9l4Qo/G8fo9Iig5da9dh5p57c/pTuqOVJEW8Tp6sCLIObi3yIsU8lX7iheRCIK N+KElWCt8EVMLpDSn4p+jY5xm7Wut+uw=\nxid: kGHBIA2uyxQADQRV3SAqmCEQP8A=\nmdStatus: 1\nacqReturnCode: 00 \nacqReasonCode:\nvposOrderId: ORDR60145B48A0DF418992981D12A73630B3

Sizden haber almak isteriz. Hizmetlerle ilgili sorunlarınız/sorunuz mu var? Bize bununla ilgili ayrıntılı bir e-posta gönderir misiniz?

Bize Soru Gönderin Bize Soru Gönderin