Üye iş yerleri token alma servislerini kullanarak, ödeme oluşturmadan işlem içerisinde gönderdikleri müşteri kart bilgilerinin Garanti Bankası sunucularında güvenli bir şekilde şifrelenmesini sağlayarak unique bir token elde ederler. Servis çağrımı esnasında token alma işlemi yapılan kart için validasyon kontrolleri yapılır. Eğer kart provizyon almaya uygun bir kart ise işlem sonucunda üretilen token bilgisi cevap mesajında üye işyerine dönülür.
Garanti bankası kartları dışındaki diğer banka kartları ile gönderilen token alma işlemlerinde kart validasyonu için her token alma işleminde sistem tarafından 0,11 TL tutarında bir satış işlemi yapılır. Eğer satış işlemi başarılı olur ise kart için bir token değeri üretilir ve 0,11 TL tutarındaki satış işlemi otomatik olarak iptal edilir. Bu işlem kart hamilinin e kstresinde görüntülenmez.
Üye iş yerleri servis cevabında dönen token bilgisini müşteri verileri ile ilişkilendirmek ( örneğin kayıt numarası, müşteri numarası vs.) sureti ile daha sonra ödeme işlemlerinde kullanmak için saklamalıdır.
Garanti Bankası sunucularında işlem içerisinde gönderilen kart bilgileri ya da müşteri bilgileri yerine üretilen token bilgisi üye iş yeri ile ilişkili bir biçimde saklanır. Tokenların yönetimi ve kullanımı üye iş yerine aittir.
Kart Saklama ve Switch servislerini test etmek için kullanılacak TEST BASE URL aşağıdaki gibidir:
TEST BASE URL: https://gbtaksimtunel-integration.garanti.com.tr/
Not: Bu TEST BASE URL, Garanti Bankası tarafından sunulan sanal ortamı temsil eder ve gerçek işlemler yerine test amaçlı kullanılması için oluşturulmuştur. Bu ortamda yapılan işlemler, canlı ortamdaki gibi gerçek finansal etkiler doğurmaz ve sadece test senaryoları üzerinden işlemektedir.
Test ortamı, farklı senaryoları ve hata durumlarını simüle ederek uygulamanın performansını ve güvenilirliğini test etmeyi sağlar. Ayrıca, API isteklerinin ve cevaplarının doğru şekilde işlendiğini doğrulamak için kullanılabilir.
Testler sırasında olası hata durumlarına karşı nasıl tepki verileceği, hataların nasıl ele alınacağı ve sistemin doğru şekilde çalıştığından emin olunmalıdır. Testler, güvenlik ve uyumluluk açısından da önem taşır ve canlı ortama geçiş öncesinde başarılı bir test aşaması gerçekleştirilmelidir.
Test ortamındaki hataların geçici olabileceği unutulmamalıdır. Geliştirme ekibi, olası hataların sıklıkla tekrarlanması durumunda ETicaretDestek@garantibbva.com.tr destek birimleriyle iletişime geçmeyi tercih etmelidir. Bu şekilde, sorunlar daha hızlı ve etkili bir şekilde çözülerek test sürecinin verimli bir şekilde ilerlemesi sağlanacaktır. Başarılı testler, uygulamanın ve sistemlerin güvenli ve sorunsuz bir şekilde canlı ortama geçişine büyük katkı sağlar.
Test ortamında API isteklerinde gönderilmesi için aşağıdaki bilgiler kullanılabilir. Bu değerler, tüm istek tiplerinde kullanılacaktır:
Başlık | Değer |
---|---|
Switch ID: | CC82C381E078482AB328943FCCB7100C |
Switch Şifresi: | 123asdASD@ |
Bu bilgiler, Kart Saklama ve Switch API'larını test etmek için kullanılacak olan kimlik doğrulama bilgileridir. Testlerin başarıyla gerçekleştirilmesi ve doğru sonuçlar alınabilmesi için bu bilgilerin doğru bir şekilde kullanılmasına özen gösterilmelidir. API isteklerinin bu kimlik bilgileriyle yapıldığından emin olmak, testlerin güvenilirliği ve başarısı için önemlidir.
Üye iş yerinin üretim ortamında gerçek verilerle istek göndermek için, test ortamında entegrasyon tamamlandıktan sonra üye iş yerinin Garanti Sanalpos terminal numarasını ETicaretDestek@garantibbva.com.tr adresine ileterek Switch ID değerini elde etmesi gerekmektedir.
Elde edilen Switch ID değerine istinaden API isteklerinde güvenlik amaçlı oluşturulan hash verisinin hesaplanması gerekmektedir. Bu hash verisi hesabında üye iş yerinin Switch Şifresi de yer almalıdır. Hash hesabıyla ilgili detaylar ilerleyen kısımlarda açıklanacaktır.
Üye iş yerinin Switch Şifresi, üye iş yerinin yönetim ekranlarında bulunan Parola Güncelleme menüsü altından oluşturulmalıdır. Bu işlem, üye iş yeri admin kullanıcısı tarafından gerçekleştirilir.
Switch Şifresi oluşturulması hakkında detaylı bilgiye "Parola Güncelleme" başlığı altından ulaşılabilir. Bu şekilde, üye iş yerleri güvenli bir şekilde gerçek verilerle API isteklerini gerçekleştirebilir ve GarantiBBVA Switch entegrasyonunu başarıyla tamamlayabilirler.
Kart saklama ve Switch sistemine atılacak bütün JSON API isteklerinde Request Header alanının eksiksiz olarak gönderilmesi gerekmektedir. Bu alanlar ile ilgili işlemin içerisinde yer alan alanların kontrolü yapılır ve gönderilen datanın valid olup olmadığı kontrol edilir. Bahsi geçen isteklerin hepsinin JSON API response bilgisinde response header alanı dönülecektir. Atılan bütün JSON API isteklerinin Content-Type bilgisi application/json tipinde olmalıdır. Yine atılan bütün JSON API isteklerinin encodingi UTF-8 formatında olmalıdır.
Request Header tag’ı ve altında gönderilecek parametreler aşağıdaki gibidir:
Alan | Tip | Zorunlu | Uzunluk | Açıklama |
---|---|---|---|---|
requestId | String | Evet | Max 36 karakter | Her işlem için üretilen unique ID değeridir. |
swtId | String | Evet | Max 36 karakter | İşlemi gerçekleştiren işyeri yada firma adına tanımlanmış switch ID değerinin gönderildiği alandır.Testlerde, üst segmentte iletilen swtId kullanılabilir. Prod ortamı için işyerine tanımlanmış swtId kullanılmalıdır. |
timestamp | String | Evet | - | İşlem zamanı bu alanda gönderilir. |
userId | String | Evet | Max 36 karakter | İşlemi gerçekleştiren kullanıcının ID değerinin gönderildiği alandır. Herhangi bir data gönderilebilir ama işyerine özel bir değer olması önerilir. Bu data ile amaç, gönderilen isteğin hangi kişi ya da sistem tarafından ayrıştırılmasını sağlamaktır. |
hashedData | String | Evet | - | İşyeri tarafından JSON API Request Hash Hesaplama Örneği başlığı altında verilen kriterlere göre hash hesaplaması yapılarak üretilen değer bu alanda yollanılır. |
Response Header tag’ı ve altında dönülecek parametreler aşağıdaki gibidir:
Alan | Tip | Açıklama |
---|---|---|
requestId | String | Her işlem için üretilen unique ID değeridir. Request header’ında gönderilen alan ile aynı değeri tutacaktır. |
swtId | String | İşlemi gerçekleştiren işyeri yada firma adına tanımlanmış switch ID değerinin gönderildiği alandır. Request header’ında gönderilen alan ile aynı değeri tutacaktır. |
timestamp | Timestamp | İşlem zamanı bu alanda gönderilir. Buradaki değer Kart Saklama ve Switch sisteminde işlemin geçtiği timestamp değeridir. |
userId | String | İşlemi gerçekleştiren kullanıcının ID değerinin gönderildiği alandır. Request header’ında gönderilen alan ile aynı değeri tutacaktır. |
hashedData | String | JSON API Response Hash Hesaplama Örneği başlığı altında verilen kriterlere göre bir hash hesaplaması yapılarak üretilen değer bu alanda yollanılır. |
Bütün JSON API response’larında header alanına ek olarak, header alanı dışında errorMap isimli, request’te gönderilen alanların datasal hata içerip içermediğini belirtilen bir Map dönmektedir.
Alan | Tip | Açıklama |
---|---|---|
errorMap | Map<String, String> | İstekte gönderilen alanların datasal hata içerip içermediğini iletir. |
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 :
İşlem sonuçlarında dönen cevap içerisinde yer alan hashedData parametresini doğrulamak için örnek response header bilgisi ve bu bilgiye ait hash hesaplama yöntemi aşağıdaki gibidir:
Response'da yer alan "timestamp" alanı Unix Timestamp olarak dönmektedir, ancak hash hesabı için bu değerin String formatında kullanılması gerekmektedir. Bu nedenle, Unix Timestamp değeri, String formatına dönüştürülmelidir.
HashedData hesaplama işlemi için aşağıdaki adımlar izlenir:
HashedData değeri, örnek response header'da belirtilen değerle aynıdır. Bu şekilde, API cevaplarında yer alan hashedData değerinin doğruluğu doğrulanabilir ve veri bütünlüğü sağlanmış olur.
3D akış üzerinden HTML POST metodu ile istek göndererek Switch modülüne tüm banka kartları için yalnızca Garanti Bankası sanalposu üzerinden token alma işlemleri gerçekleştirilebilir.
Üye iş yeri tarafından hazırlanacak HTML formunda POST isteğinin gönderileceği adresler ve form alanları aşağıdaki gibidir. Alanların her biri String olarak gönderilmelidir.
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 3Dolarak set edilmelidir. |
cardNumber | Evet | Min:15 Karakter Max:30 Karakter | Kart numarasının gönderildiği alandır. |
cardExpireYear | Evet | 2 Karakter | İşlemde kullanılan kartın son kullanma tarihinin yıl bilgisinin gönderildiği alandır. |
cardExpireMonth | 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 | Hayır | 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 sanalposa iletilmesini istiyorsa “N”, sanalposun orderId yapısına uygun yeni bir orderId üretmesi isteniyorsa “Y”gönderilmelidir. Alan hiç gönderilmezse veya değeri boş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. "tokengenerate" olarak gö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ında anlatılan kritelereuygun olarak işyeri tarafından oluşturularak istek iç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. |
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 | İş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. |
installmentCount | Taksit sayısının döndürüldüğü alandır. |
txnAmount | İşlem tutarının döndürüldüğü alandır. |
currencyCode | Döviz cinsinin dönü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. |
orderId | Sipariş numarasının 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. |
response | Switch uygulamasına ait sonuç bilgisinin dönüldüğü alandır. |
mdErrorMessage | 3D secure doğrulaması sonucunda MD cevap mesajının döndüğü 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. |
mdStatus | 3D secure doğrulaması sonucunda alınan MD STATUS değerinin 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. |
sec3DTokenResCode | 3D secure doğrulaması ile token alma cevap kodunun döndüğü alandır. |
sec3DTokenRetCode | 3D secure doğrulaması ile token alma alt cevap kodunun döndüğü alandır. |
additionalData | Token alma isteğinde gönderilen additionalData değerinin döndüğü alandır. |
expireDate | Kart SKT bilgisinin mmYY formatında döndüğü alandır. |
sec3DTokenResMessage | 3D secure doğrulaması ile token alma cevap mesajının döndüğü alandır. |
token | 3D secure doğrulaması başarıyla sonlandıktan sonra token üretildiyse token bilgisinin döndüğü 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 akış ile token alma 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 token alma/token güncelleme isteği tetiklenebilir. POST edilen data application/x-www- form-urlencoded tipinde olmalıdır.
Aşağıda, çeşitli yazılım dilleri kullanılarak yazılmış özel kod örneklerinin linkleri verilmiştir. Tercih ettiğiniz programlama diline ait link üzerinden, önceden belirlenmiş değerlerle yazılmış olan kodları detaylı bir şekilde inceleyebilirsiniz.
Bu örnekler, ilgili işlem tipini içeren kodları içermektedir ve farklı dillerde yazıldığı için çeşitli yaklaşımları ve pratikleri de gözlemleyebilirsiniz. Bu sayede tercih ettiğiniz programlama diline dair daha iyi anlaşılır ve özgün örneklerle çalışma imkanı bulabilirsiniz.
C# Kod Örnekleri için tıklayınız.
VB.Net Kod Örnekleri için tıklayınız.
Java Kod Örnekleri için tıklayınız.
PHP Kod Örnekleri için tıklayınız.
Unutmayın ki bu örnekler ön tanımlı değerlerle yazılmıştır ve gerçek projelerde kullanımı için gerekli uyarlama ve güvenlik önlemleri almanız gerekebilir.
Test kartları listesine bu sayfadan ulaşabilirsiniz.
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