Kart Saklama ve Switch Uygulaması, işletmelerin online ödemelerde güvenli ve etkili bir şekilde yönetimini sağlayan profesyonel bir API seti sunmaktadır. Bu özel API seti, iş yerlerine müşteri kart bilgilerini güvenle saklama imkanı sunarken, aynı zamanda bu saklanan kart verileri veya açık kart bilgileri üzerinden birden fazla banka Sanalpos'una ödeme emri başlatma olanağı sağlamaktadır.
Switch Yönetim ekranları sayesinde işletmeler, kolaylıkla iptal, iade ve ön otorizasyon kapama gibi işlemleri gerçekleştirerek ödeme süreçlerini etkin bir şekilde yönetebilirler. Ayrıca uygulama, işlem ve sipariş durumlarını anlık olarak takip edebilme imkanı sunarak işletmelere güncel verilerle bilgi sağlamaktadır.
Kart Saklama ve Switch Uygulaması, müşteri verilerinin güvenliği ve ödeme süreçlerinin sorunsuz işleyişi üzerinde odaklanarak, işletmelere güvenilir bir ödeme altyapısı sunmayı amaçlamaktadır. Profesyonel ve güvenilir hizmet anlayışıyla, işletmelerin ödeme kabul etme süreçlerini kolaylaştırmak ve müşterilere kesintisiz bir ödeme deneyimi sunmak için tasarlanmıştır.
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. |
Aşağıda, Garanti Switch API'larına gönderilecek örnek bir istek mesajının header tag'ı ve alanları açıklanmaktadır:
"HashedData" alanı, güvenlik amacıyla API isteğinin bütünlüğünü doğrulamak için kullanılır. Bu alanın hesaplanması için aşağıdaki adımlar izlenir:
İş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.
Switch Ortak Ödeme sayfası ile müşteriye “Kart ile Ödeme” ve “GarantPay ile Ödeme” seçenekleri sunularak ödeme akışı başlatılabilir. Bu akışlar sadece satış (auth) ödeme tipi için kullanılmaktadır.
Bu akışta üye iş yerinin servise gönderdiği parametreler ile akış başlatılır. Servisden dönen parametrelerde ilgili isteğe özel bir link yer almaktadır. Bu link işleme özel ve 1 saat expire süreli olup tek kullanımlıktır. İlgili link üzerinden Switch Ortak Ödeme sayfası açılarak müşteriye bilgi girişi sağlanmaktadır.
SOS servisine Request Header tag’ine ek olarak gönderilmesi gereken parametreler aşağıdaki şekildedir:
Alan | Tip | Zorunluluk | Uzunluk | Açıklama |
---|---|---|---|---|
additionalData | String | Hayır | Max 120 Karakter | İşlem ile ilişkilendirilecek poliçe numarası vb. bilgiler in gönderimi için kullanılır. |
currencyNumber | String | Evet | 3 Karakter | Döviz kuru bilgisi. 3 haneli ISO standart kodlar gönderilmelidir. Örnek : 949 |
installmentCount | String | Banka tanımındaki taksitler kullanılacaksa ya da taksitsiz işlem yapılacaksa; hayırTaksitli işlem yapılacaksa; evet | Max3Karakter | Taksitli işlem gönderilecek ise taksit sayısı bu alanda gönderilmelidir. Örneğin; 3 taksitli işlem için '3' olarak gönderilmelidir. |
motoInd | String | MoTo işlem yapılacaksa evet | 1 Karakter | Mail / Telefon order işlem gönderiliyor ise 'Y' olarak işaretlenmelidir. |
orderGroupId | String | Hayır | Max 36 Karakter | İşleme ait sipariş grup numarasıdır. |
orderId | String | Hayır | Max 36 Karakter | İşleme ait sipariş numarasıdır. Her işleme özel olarak belirlenmelidir. |
transactionType | String | Evet | - | İşlem bilgisinin yollandığı alandır. Satış işlemleri için"sales” olarak gönderilmelidir. |
authType | String | Evet | Bualanişlemdoğrulamatipininseçildiğialandır.“PAY” değerini verilmesi durumunda işlem non3DS olarak ilerler, “3D_PAY” değeri verilmesi durumundaişlem 3DS olarak ilerler. | |
txnAmount | String | Evet | - | İşlem tutarının iletildiği alandır. Kuruş bilgisini nokta ile ayırmak gerekmektedir. Örnek : 1.45 |
Alan | Tip | Zorunluluk | Uzunluk | Açıklama |
---|---|---|---|---|
bankId | String | Hayır | - | İşlem belirli bir bankanın Sanalpos’u üzerinden gönderilmek isteniyor ise bu alan kullanılır. Taksit bilgileri banka tanımı üstünden alınsın isteniyorsa dolu yollanmalıdır.Gönderilebilecek değer: 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.Ş |
Alan | Tip | Zorunluluk | Uzunluk | Açıklama |
---|---|---|---|---|
addressDetail | String | Hayır | Max 256 Karakter | Fatura adres detayı (Semt, mahalle, cadde, kapı kodu vs). |
city | String | Hayır | Max 50 Karakter | Fatura gönderilecek şehir bilgisi. |
companyName | String | Hayır | Max 64 Karakter | Fatura gönderilecek şirket bilgisi. |
country | String | Hayır | Max 50 Karakter | Fatura gönderilecek ülke bilgisi. |
String | Hayır | Max 128 Karakter | Faturanın gönderileceği kişiye ait e-posta adresi. | |
gsm | String | Hayır | Max 16 Karakter | Faturanın gönderileceği kişiye ait cep telefonu numarası. |
lastName | String | Hayır | Max 50 Karakter | Faturanın gönderileceği kişinin soyadı. |
name | String | Hayır | Max 50 Karakter | Faturanın gönderileceği kişinin adı. |
phone | String | Hayır | Max 36 Karakter | Faturanın gönderieceği yer ile ilişkili telefon bilgisi. |
zipCode | String | Hayır | Max 16 Karakter | Faturanın gönderileceği adresin posta kodu. |
Alan | Tip | Zorunluluk | Uzunluk | Açıklama |
---|---|---|---|---|
cvv | String | Hayır | 3 Karakter | Kartın arkasında bulunan 3 haneli sayıdır. |
expireMonth | String | Hayır | 2 Karakter | Kartın üzerindeki ay. |
expireYear | String | Hayır | 2 Karakter | Kartın üzerindeki yıl. |
first6 | String | Hayır | 6 Karakter | Kartın ilk 6 hanesi. |
holderName | String | Hayır | Max 50 Karakter | Kartın üzerindeki isim. |
last4 | String | Hayır | 4 Karakter | Kartın son 4 hanesi. |
number | String | Hayır | Min : 15 KarakterMax : 30 Karakter | Kartın numarası. |
token | String | Hayır | 32Karakter | Token Alma işlem sonucunda dönen kart ile ilişkili TokenID bilgisidir. |
Alan | Tip | Zorunluluk | Uzunluk | Açıklama |
---|---|---|---|---|
customerNumber | String | Hayır | Max 20 Karakter | Garanti Bankası müşteri numarası. |
String | Hayır | Max 128 Karakter | Müşteri e-posta adres bilgisidir. | |
gsm | String | Hayır | Max 16 Karakter | Müşteri cep telefonu numarası bilgisidir. |
ip | String | Hayır | Max 20 Karakter | Müşteri IP adres bilgisidir. Ipv4 formatında gönderilmelidir. |
lastName | String | Hayır | Max 50 Karakter | Müşteri soy ad bilgisidir. |
name | String | Hayır | Max 50 Karakter | Müşteri ad bilgisidir. |
nationalNumber | String | Hayır | Max 20 Karakter | Müşteri TCKN bilgisidir. |
taxIdNumber | String | Hayır | Max 20 Karakter | Müşteri vergi numarası bilgisidir. |
Alan | Tip | Zorunluluk | Uzunluk | Açıklama |
---|---|---|---|---|
list | List | Evet | - | Taksit bilgileri listesinin iletildiği alandır. Liste detaylarına Tablo-1 üzerinden ulaşılabilir. |
useBankInstallmentRates | String | Hayır | - | Banka taksit bilgilerinin kullanılıp kullanılmayacağ ın ın belirtildiği alandır. Bu alan “true” yollanır ise banka tanımı üstündeki taksit bilgisi kullanılır, “false” yollanır ise taksit listesinde yer alan taksit bilgileri kullanılır. |
Alan | Tip | Zorunluluk | Uzunluk | Açıklama |
---|---|---|---|---|
errorUrl | String | Evet | - | Hatalı işlem cevabının döndürüleceği işyerine ait adres bu alanda yer alacaktır. |
resultPageCountdow n | String | Evet | - | Merchant result sayfasına yönlendirme countdown süresinin belirtilidiği alandır. |
successUrl | String | Evet | - | Başarılı işlem cevabının döndürüleceği işyerine ait adres bu alanda yer alacaktır. |
Alan | Tip | Zorunluluk | Uzunluk | Açıklama |
---|---|---|---|---|
addressDetail | String | Hayır | Max 256 Karakter | Kargo adresine ait detay adres alanı bilgisi yer alacaktır. |
city | String | Hayır | Max 50 Karakter | Kargo adresine ait şehir adı bilgisi yer alacaktır. |
companyName | String | Hayır | Max 64 Karakter | Kargo adresine ait sirket adı bilgisi yer alacaktır. |
country | String | Hayır | Max 50 Karakter | Kargo adresine ait ülke adı bilgisi yer alacaktır. |
String | Hayır | Max 128 Karakter | Kargo adresine ait mail bilgisi yer alacaktır. | |
gsm | String | Hayır | Max 16 Karakter | Kargo adresine ait GSM bilgisi yer alacaktır. |
lastName | String | Hayır | Max 50 Karakter | Fatura adresine ait kişinin soyisim bilgisi yer alacaktır. |
name | String | Hayır | Max 50 Karakter | Fatura adresine ait kişinin isim bilgisi yer alacaktır. |
phone | String | Hayır | Max 36 Karakter | Kargo adresine ait telefon bilgisi yer alacaktır. |
zipCode | String | Hayır | Max 16 Karakter | Kargo adresine ait posta kodu bilgisi yer alacaktır. |
Alan | Tip | Zorunluluk | Uzunluk | Açıklama |
---|---|---|---|---|
inquiryCardRew ard | String | Hayır | - | Kart ödül tipi kullanım bilgisinin iletildiği alandır. Kart ödül tipi kullanımı isteniyorsa “true”, istenmiyors a “false” yollanabilir. |
inquiryFirmRew ard | String | Hayır | - | Firma bonus kullanım bilgisinin iletildiği alandır. Firma bonus kullanımı isteniyorsa “true”, istenmiyors a “false” yollanabilir. |
Alan | Tip | Zorunluluk | Uzunluk | Açıklama |
---|---|---|---|---|
amount | String | Evet | - | Taksit tutarının iletildiği alandır. |
count | String | Evet | Max 3 Karakter | Taksit sayısının iletildiği alandır. |
SOS servisinden response header tag’ine ek olarak dönülecek alanlar aşağıdaki şekildedir:
Alan | Tip | Açıklama |
---|---|---|
url | String | Sw itch ortak ödeme sayfası linkinin iletildiği alandır. |
expireDate | String | Sw itck ortak ödeme sayfası linkinin expire edileceği zamanın iletildiği alandır. |
SOS servisinden dönen URL ile aşağıda gösterilen Switch Ortak Ödeme Sayfası açılmaktadır. Bu ekranda “Kredi Kartı ile Ödeme” ve “GarantiPay ile Ödeme” seçenekleri yer almaktadır.
Devam butonuna basıldığında SOS isteğinde ödül/taksit alanları yollanmış ise sırası ile aşağıdaki ekranlar açılır. Eğer ilgili alanlar yollanmamış ise direkt olarak 3D ekranı açılacaktır.
Ödül Kullanım Seçenekleri Ekranı: Firma/Kart ödül kullanımları bu ekran üzerinden yapılmaktadır. Ödüllerin tamamı kullanılabilir ya da parçalı ödül kullanımı yapılabilir.
Taksit Seçenekleri Ekranı: Taksit seçimi bu ekran üzerinden yapılmaktadır.
3D Secure Ödeme Ekranı: 3D Secure doğrulama akışı aşağıdaki ekranlarda gösterildiği gibi ilerlemektedir.
Soldaki ekran üzerinden doğrulama yöntemi seçilip “Tamam” butonuna basılmalıdır.
Doğrulama yöntemi olarak GSM seçildiğinde ilgili GSM’e OTP SMS gitmektedir. Test ortamı için bu değer 123456 olarak sabitlenmiştir.
Doğrulama yöntemi olarak BonusFlaş seçilirse seçilen cihaza bildirim gönderilerek işlemin onaylanması beklenir.
GSM ile doğrulama seçildikten sonra sağdaki OTP giriş ekranı açılır. İlg ili Alana OTP değeri girilerek tamam butonuna basılır ve 3D Secure akış sonlandırılır. BonusFlaş seçilirse cihaza gelen bildirim üstünden işlem onaylanır.
İşlem Sonuç Ekranı: İşlem sonuç bilgisi işlem kodu ve otorizasyon kodu bilgilerini de içerecek şekilde gösterilmektedir.