-
Notifications
You must be signed in to change notification settings - Fork 6
Hackhaton
- Garanti Hackathon Nedir? ===========================
Proje üretmekten zevk alan yazılımcı, tasarımcı ve girişimcilere sınırlı süre içerisinde fikirlerini ürüne dönüştürme imkanı veren Garanti Bankası’nın HACKATHON etkinliğidir.
Fikriniz ne olursa olsun, bir köşesinde ödeme sistemleri veya bankacılık ürünleri varsa bunu kodlayacağınız en doğru, eğlenceli ve bol sürprizli yer bu Hackathon olacaktır.
Başvuru ve detay bilgi için: https://hackathon.garanti.com.tr/
- Geliştirme Ortamı Hazırlıkları =================================
Fikrinizi geliştireceğiniz projede Garanti Bankası servislerini kullanabilirsiniz. Bu amaçla size bankamızın servislerini simüle ettiğimiz bir servis alt yapısı sağlamaktayız. Kullanım kolaylığı sağlayabilmek için, sistemi kendi bilgisayarınızdan çalıştırabileceğiniz şekilde ayarladık. SoapUI uygulamasını kurarak ve aşağıdaki yönergeleri inceleyerek servis alt yapımızı bilgisayarınıza kurabilirsiniz.
SoapUI çok yaygın kullanımı olan, ücretsiz bir fonksiyonel test etme aracıdır. Özellikle API testlerinde kullanılmaktadır. SoapUI SOAP, REST, HTTP, JMS, AMF ve JDBC gibi çok çeşitli platformları desteklemektedir. SoapUI kolay kullanımlı grafik arayüzü sayesinde ileri düzey testleri çok hızlı yaratmanızı imkan tanımaktadır. http://www.soapui.org/ web sitesinden SoapUI hakkında detaylı bilgilere ulaşabilirsiniz.
Garanti Bankası Web servisleri SOAPUI üzerinde çalışan uygulamalar aracılığı ile simüle edilmektedir. Bu nedenle kod geliştirmeye başlamadan önce SOAPUI'ın bilgisayarınıza kurulumunu gerçekleştirmelisiniz.
Öncelikle http://www.soapui.org/ adresine gidin ve Downloads linkine tıklayarak bilgisayarınız ile uyumlu SOAPUI kurulum dosyasını indirin.
http://www.soapui.org/downloads/soapui/open-source.html
İndirme tamamlandığında indirilen dosyayı bilgisayarınıza kurun. Kurma işlemi, Windows için indirilen exe dosyasının çalıştırılmasından ibaret olup herhangi bir başka ayar gerekmemektedir. Windows dışındaki diğer işletim sistemleri için kurulum işlemi farklılık gösterebilecektir. Bu konuda işletim sistemi dokümanlarına başvurmanız gerekmektedir.
Kurulum tamamlandıktan sonra SoapUI uygulamasını çalıştırın. Çalıştırma işlemi Windows için SoapUI'ın kurulduğu klasör içerisinde yer alan bin klasörü altındaki SoapUI.exe dosyasının çalıştırılması şeklinde yapılmaktadır.
Garanti Bankası Cep Bank ve Sanal Pos servisleri SoapUI üzerinde ve lokal makinelerinizde çalışan servisler aracılığı ile simüle edilmektedir. İlgili projeleri bilgisayarımıza indirebilmek için Hackhaton ana sayfadan Download Zip düğmesine tıklayalım.
https://github.com/TGarantiBank/Hackhaton/archive/master.zip
Projenin tüm alt klasörleri ve dokümanları ile birlikte bir zip dosyası olarak bilgisayarınıza indirildiğini göreceksiniz. Bu zip dosyasını diskinizde uygun bir yere açın.
SoapUI uygulamasını çalıştırın ve File menüsünden Import Project adımını seçin.
Dosya seçme penceresi açılacaktır. Bu pencereden daha önce zip olarak indirip uygun bir yere açtığınız proje klasörüne gidin ve Servisler alt klasöründen garanti-cepbank.xml dosyasını seçin ve Open düğmesine basın.
Projenin yukarıdaki gibi açıldığını göreceksiniz. Bu proje Garanti Bankası'nın CepBank için sağladığı servislerin simülasyonunu içermektedir.
Yukarıda yaptığınız adımları tekrarlayarak bu defa da garanti-sanalpos.xml projesini açın. Bu proje de Garanti Banka'sının sağladığı Sanal Pos servislerinin simülasyonunu içermektedir.
Yukarıda SoapUI uygulamasına import ettiğimiz projeleri localhost sunucusu üzerinden çalıştırıyor olacağız. Cep Bank servisleri 8888 portundan, sanal pos servisleri ise 9999 portundan hizmet verecektir.
Servisleri çalıştırabilmek için projenin üzerinde sağ tuşla tıkladığınızda açılan pop-up pencereden restart düğmesine tıklayın.
Servislerin 8888 ve 9999 portlarından hizmet vermeye başladığını göreceksiniz:
Local sunucuda çalıştırdığınız servisleri deneyebilmeniz için SoapUI kullanılabileceği gibi tarayıcılara eklenti olarak yüklenebilen Rest Client uygulamaları da kullanılabilir. Google Chrome üzerine yüklenebilen Advanced Rest Client eklentisi buna bir örnektir.
Servislerin tamamı HTTP POST ile çalışmaktadır.
Aşağıda bir CepBank servisinin Advanced Rest Client eklentisi üzerinden çağrılmasının ekran görüntüleri yer almaktadır:
Request:
Response:
Aşağıda bir SanalPos servisinin Advanced Rest Client eklentisi üzerinden çağrılmasının ekran görüntüleri yer almaktadır:
CepBank, İnternet Şubesi ve Cep Şubesi’ne giriş yapmadan, istediğiniz kişinin cep telefonuna Garanti’de hesabı ya da kartı olmasa bile anında güvenli bir şekilde para gönderebilmenizi sağlayan Garanti Bankası’nın bir uygulamasıdır.
CepBank Mobil Uygulaması App Store, Android Store’ lardan ücretsiz indirilerek kullanıma başlanabilir.
Cepbank; hiç banka kullanmayan veya az kullananlara yönelik sadece gönderenin Garantili olmasının yeterli olduğu basit setli uygulamadır. Alıcı kişinin telefon numarasının bilinmesi yeterlidir.
CepBank uygulaması ile iPhone Cep Şubesi, Android Cep Şubesi, SMS ( 3333 ),İnternet bankacılığı, ATM kanallarından para gönderimi yapılabilir.
Hackathon kapsamında kullanabileceğiniz servisler aşağıda verilmiştir:
-
Cüzdan uygulamaları için CepBank servisleri
-
Para Gönder
-
İptal Et
-
Hareket Listele
-
Para İste TL yükleme
-
Kart borcu ödeme
-
Bakiye Sorgulama
-
ATM/Şube arama servisi
-
-
Diğer Servisler
i. QR ile para çekme servisi
ii. Piyasa bilgileri/döviz kurları servisi
iii. Kredi başvuru servisi
iv. Kredi kartı başvuru servisi
Servislerin tamamı JSON objeleri ile çalışmaktadır. Bazı servislere input gönderilmemesi gerekmektedir.
Eğer gönderdiğiniz data bozuksa ya da içerisindeki değerler işlenmek için yeterli/doğru değilse aşağıdaki JSON datası döndürülecektir.
{ "errorID":"2023",
"exceptionInfo":"Özür dileriz, işleminizi şu anda gerçekleştiremiyoruz.
Lütfen daha sonra tekrar deneyin.", "deviceId":null
}
Bu durumda hatanın detayını görmek istiyorsanız SoapUI uygulamasındaki errorlog ve script log tablarını incelemeniz gerekmektedir.
Aşağıda tüm servislerin açıklamalarını ve örnek request/response objelerini görebilirsiniz. Geliştirdiğiniz uygulamada verdiğimiz örnek dataları kullanmanız mümkün. Değerini bildiğiniz alanlar için (örneğin GSM Number, CreditCardNumber, Amount gibi ) elinizde olan değeri göndermeniz daha doğru olacaktır. Servisler gerçek anlamda iş yapmadığı, yapıyormuş gibi davrandığından kartınız ya da gsm numaranız üzerinde gerçek sistemde bir işlem yapılmayacaktır.
Burada kullandığınız API’lerin yapısı Garanti Banka’sının gerçek API’leri ile aynıdır. Ancak ileride gerçek API’leri kullanmak istediğinizde burada yaptığınız geliştirme üzerine farklı geliştirmeler de yapmak durumunda kalacaksınız.
CepBank’ta size en yakın ATM/Şube bilgileri verilir.
URL
/cepbankMobile/getunitinfo.json
İstek Mesajı
{
"unitType": "C",
"latitude": 36.599104891017426,
"longitude": 30.561593821958457,
"distance": 2
}
Başarılı İşlem Cevabı
{
"unitList": [
{
"code": "01317CRS001",
"name": "KEMER BAĞLI ŞUBE ",
"address": "ATATÜRK CADDESİ NO:18/A 07980 ",
"city": "ANTALYA",
"town": "KEMER",
"model": "NCR BNAY ",
"hasEnv": "H",
"hasCoin": "E",
"hasCashPayment": "E",
"hasUsd": "H",
"hasEur": "H",
"hasGbp": "H",
"latitude": "36.599308",
"longitude": "30.561323",
"openTime": 0,
"closeTime": 0,
"hasUsdCashPayment": "E",
"unitType": "atm",
"distance": 0.03
},
{
"code": 1317,
"name": "KEMER BAĞLI ŞUBE",
"type": "T",
"address1": "Atatürk Caddesi No: 18 / A 07980",
"address2": "",
"address3": "",
"zipCode": 7980,
"areaCode": 242,
"telephone": "8143398",
"fax": "8143506",
"cityCode": "007",
"townCode": "00014",
"cityName": "ANTALYA ",
"townName": "KEMER",
"latitude": "36.600335337588",
"longitude": "30.560574531555",
"openAfternoon": "H",
"afternoonHours": "(12:30-13:30)",
"unitType": "branch",
"distance": 0.16
},
{
"code": "00904CRS056",
"name": "KEMER MARİNA ",
"address": "KEMER YAT LİMANI LİMAN CADDESİ ",
"city": "ANTALYA",
"town": "KEMER",
"model": "NCR BNAY ",
"hasEnv": "H",
"hasCoin": "E",
"hasCashPayment": "E",
"hasUsd": "E",
"hasEur": "E",
"hasGbp": "H",
"latitude": "36.599775",
"longitude": "30.563361",
"openTime": 0,
"closeTime": 0,
"hasUsdCashPayment": "N",
"unitType": "atm",
"distance": 0.17
}
],
"returnMessage": "OK",
"returnCode": 0
}
Cepbank’tan Bakiye Sorgulama işlemi yapabilirsiniz.
URL
/cepbankMobile/inquiryBalance.json
İstek Mesajı
{
"applicationName": "CepBank",
"timestamp": "2015-08-24-10.25.50.192",
"crackFlag": "N",
"msisdnToken": "",
"operatingSystemType": "IOS",
"deviceToken": "unique gt token",
"deviceName": "iPhone5,2",
"hashKey": "for security",
"userPhoneNum": "",
"deviceId": "apple or android device id",
"pin": "****",
"operatingSystemName": "iPhone OS 9.0"
}
Başarılı İşlem Cevabı
{
"phoneNumber": "5555555555",
"balance": 6.71,
"availableBalance": 656.71,
"deviceId": "apple or android device id",
"returnMessage": "CepBank hesap ELMA bakiyesi 6,71 TL ,Avans Hesap limiti 650,00 TL ,toplam kullanilabilir bakiyesi 656,71 TL 'dir.",
"statusCode": 0,
"channel": null
}
CepBank Hareketler adımı ile Gönderilen veya İstenen para bilgileri bu alanda detaylıca gösterilir.
URL
/cepbankMobile/getActivities.json
İstek Mesajı
{
"applicationName": "CepBank",
"timestamp": "2015-08-24-13.31.39.944",
"crackFlag": "N",
"msisdnToken": "",
"operatingSystemType": "IOS",
"deviceToken": "unique gt token",
"deviceName": "iPhone5,2",
"listType": "C",
"hashKey": "for security",
"userPhoneNum": "",
"deviceId": "apple or android device id",
"pin": "****",
"operatingSystemName": "iPhone OS 9.0"
}
Başarılı İşlem Cevabı
{
"activityList": [
{
"accNo": null,
"cardNo": null,
"sPhoneNo": "5555555555",
"refNo": "8848686",
"date": "24/08/2015 13:30",
"trnAmnt": 7,
"trnsType": "S",
"trnsName": "Para Isteme",
"status": "I",
"tst": "2015-08-24-13.30.31.567589",
"targetNo": "7775555555",
"cflg": "Y"
},
{
"accNo": null,
"cardNo": null,
"sPhoneNo": "5555555555",
"refNo": "4894597",
"date": "20/08/2015 17:20",
"trnAmnt": 8,
"trnsType": "S",
"trnsName": "Para Isteme",
"status": "O",
"tst": "2015-08-20-17.20.48.318704",
"targetNo": "4445555555",
"cflg": "Y"
},
{
"accNo": null,
"cardNo": null,
"sPhoneNo": "5555555555",
"refNo": "9185944",
"date": "18/08/2015 15:04",
"trnAmnt": 7,
"trnsType": "S",
"trnsName": "Para Isteme",
"status": "I",
"tst": "2015-08-18-15.04.41.757376",
"targetNo": "3335555555",
"cflg": "Y"
},
{
"accNo": null,
"cardNo": null,
"sPhoneNo": "5555555555",
"refNo": "6225612",
"date": "18/08/2015 14:59",
"trnAmnt": 2,
"trnsType": "S",
"trnsName": "Para Isteme",
"status": "I",
"tst": "2015-08-18-14.59.34.221923",
"targetNo": "444555555",
"cflg": "Y"
},
{
"accNo": null,
"cardNo": null,
"sPhoneNo": "5555555555",
"refNo": "0259066",
"date": "28/07/2015 14:06",
"trnAmnt": 4,
"trnsType": "S",
"trnsName": "Para Isteme",
"status": "I",
"tst": "2015-07-28-14.06.53.841440",
"targetNo": "3335555555",
"cflg": "Y"
},
{
"accNo": null,
"cardNo": null,
"sPhoneNo": "5555555555",
"refNo": "8120004",
"date": "28/07/2015 14:01",
"trnAmnt": 3,
"trnsType": "S",
"trnsName": "Para Isteme",
"status": "I",
"tst": "2015-07-28-14.01.41.559404",
"targetNo": "4445555555",
"cflg": "Y"
},
{
"accNo": null,
"cardNo": null,
"sPhoneNo": "5555555555",
"refNo": "0128576",
"date": "28/07/2015 14:01",
"trnAmnt": 2,
"trnsType": "S",
"trnsName": "Para Isteme",
"status": "I",
"tst": "2015-07-28-14.01.23.500704",
"targetNo": "6665555555",
"cflg": "Y"
},
{
"accNo": null,
"cardNo": null,
"sPhoneNo": "5555555555",
"refNo": "1067431",
"date": "28/07/2015 14:00",
"trnAmnt": 2,
"trnsType": "S",
"trnsName": "Para Isteme",
"status": "I",
"tst": "2015-07-28-14.00.57.783140",
"targetNo": "2225555555",
"cflg": "Y"
},
{
"accNo": null,
"cardNo": null,
"sPhoneNo": "5555555555",
"refNo": "2430167",
"date": "27/07/2015 18:43",
"trnAmnt": 2,
"trnsType": "S",
"trnsName": "Para Isteme",
"status": "I",
"tst": "2015-07-27-18.43.12.108435",
"targetNo": "2225555555",
"cflg": "Y"
},
{
"accNo": null,
"cardNo": null,
"sPhoneNo": "5555555555",
"refNo": "3418485",
"date": "27/07/2015 09:27",
"trnAmnt": 4,
"trnsType": "S",
"trnsName": "Para Isteme",
"status": "I",
"tst": "2015-07-27-09.27.46.857791",
"targetNo": "2225555555",
"cflg": "Y"
}
],
"deviceId": "apple or android device id",
"returnMessage": "",
"statusCode": 0,
"channel": null
}
CepBank ile kendinize veya başkasına ait Garanti Bankası Kredi Kartının borcunu ödeyebilirsiniz
URL
/cepbankMobile/cardPayment.json
İstek Mesajı
{
"applicationName": "CepBank",
"cardNum": "5555555555555555",
"timestamp": "2015-08-24-10.30.19.936",
"crackFlag": "N",
"msisdnToken": "",
"tranAmount": 2,
"operatingSystemType": "IOS",
"deviceName": "iPhone5,2",
"deviceToken": "unique gt id",
"hashKey": "for security",
"userPhoneNum": "",
"deviceId": "apple or android id",
"pin": "****",
"operatingSystemName": "iPhone OS 9.0"
}
Başarılı İşlem Cevabı
{
"phoneNumber": "1115555555",
"cardNum": "5555555555555555",
"tranAmount": 2,
"deviceId": "apple or android id",
"returnMessage": "",
"statusCode": 0,
"channel": null
}
Türkiye’ nin her yerine üst limit 1000 TL olarak para gönderimini yapabilen uygulamadır. Gönderenin Garanti müşterisi olması gerekirken, alıcının Garanti müşterisi olmasına gerek yoktur. Para gönderilen kişi mesajla iletilen bilgilerle ATM’den parayı çekebilir. Gönderilen Para 7 gün içerisinde çekilmezse göndericinin hesabına iade edilir.
Örnek mesaj: "Togay Can Garanti CepBank ile size para gonderdi. Istediğiniz bir Garanti Paramatik ATM'sinden 7 gun icinde kartsiz cekebilirsiniz.Cebe para gönderme örnek mesaj: 5xx2223344 10 1234"
URL
/cepbankMobile/sendMoneyToPhone.json
İstek Mesajı
{
"applicationName": "CepBank",
"timestamp": "2015-08-24-14.11.02.333",
"targetPhoneNum": "4444653926",
"msisdnToken": "",
"tranAmount": 6,
"operatingSystemType": "IOS",
"deviceName": "iPhone5,2",
"deviceToken": "unique gt id",
"crackFlag": "N",
"hashKey": "for security",
"userPhoneNum": "",
"deviceId": "apple or android id",
"pin": "****",
"operatingSystemName": "iPhone OS 9.0"
}
Başarılı İşlem Cevabı
res: { "phoneNumber": "1115555555", "targetPhoneNum": "4444653926", "tranAmount": 6, "deviceId": "apple or android id", "returnMessage": "Sayin musterimiz, 4444653926 nolu cep telefonuna hesabinizdan 6 TL gonderilmistir. Islem referansiniz:1111111", "statusCode": 0, "channel": null }
URL
/cepbankMobile/cancelSentMoney.json
İstek Mesajı
{
"referenceNum": "1111111",
"applicationName": "CepBank",
"timestamp": "2015-08-24-14.11.59.009",
"crackFlag": "N",
"msisdnToken": "",
"operatingSystemType": "IOS",
"deviceToken": "unique gt id",
"deviceName": "iPhone5,2",
"hashKey": "for security",
"userPhoneNum": "",
"deviceId": "android or apple id",
"pin": "****",
"cancelPhoneNum": "5426476212",
"operatingSystemName": "iPhone OS 9.0"
}
Başarılı İşlem Cevabı
{
"cancelPhoneNumber": "5426476212",
"referenceNum": "1111111",
"phoneNumber": "1115555555",
"deviceId": "android or apple id",
"returnMessage": "CepBank isleminiz iptal edilmistir. Islem tutari ve islem ucreti CepBank hesabiniza iade edilmistir.",
"statusCode": 0,
"channel": null
}
Garanti Bankasında hesabı olmadan karşıdaki kişinin tanımlı CepBank uygulaması olması halinde
anında para gönderimi sağlanabilir.
URL
/cepbankMobile/requestMoney.json
İstek Mesajı
{
"applicationName": "CepBank",
"timestamp": "2015-08-24-10.27.25.438",
"crackFlag": "N",
"msisdnToken": "",
"operatingSystemType": "IOS",
"deviceToken": "unique gt id",
"deviceName": "iPhone5,2",
"requestInfo": {
"tarPhone": "8885555555",
"tranAmnt": 4
},
"userPhoneNum": "",
"deviceId": "apple or android id",
"hashKey": "for security",
"requestType": "Para",
"operatingSystemName": "iPhone OS 9.0"
}
Başarılı İşlem Cevabı
{
"requestType": "Para",
"requestInfo": {
"tarPhone": "8885555555",
"refNum": "1111111",
"tranAmnt": 4,
"stat": null
},
"phoneNumber": "1115555555",
"deviceId": "apple or android id",
"returnMessage": "",
"statusCode": 0,
"channel": null
}
URL
/cepbankMobile/confirmRequestedMoney.json
İstek Mesajı
{
"referenceNum": "1111111",
"applicationName": "CepBank",
"timestamp": "2015-08-24-14.15.58.419",
"crackFlag": "N",
"msisdnToken": "",
"operatingSystemType": "IOS",
"deviceToken": "unique gt id",
"deviceName": "iPhone5,2",
"hashKey": "for security",
"userPhoneNum": "",
"deviceId": "apple of android id",
"pin": "****",
"operatingSystemName": "iPhone OS 9.0"
}
Başarılı İşlem Cevabı
{
"referenceNum": "1111111",
"phoneNumber": "1115555555",
"deviceId": "apple of android id",
"returnMessage": "<b>(530) 555 5555</b> nolu cep telefonuna hesabınızdan <b>9,00 TL </b> gönderilmiştir. İşlem referansınız <b>1111111</b>.",
"statusCode": 0,
"channel": null
}
URL
/cepbankMobile/cancelRequestedMoney.json
İstek Mesajı
{
"referenceNum": "1111111",
"applicationName": "CepBank",
"timestamp": "2015-08-24-13.31.39.493",
"crackFlag": "N",
"msisdnToken": "",
"operatingSystemType": "IOS",
"deviceToken": "unique gt id",
"deviceName": "iPhone5,2",
"hashKey": "for security",
"userPhoneNum": "",
"deviceId": "apple or android id",
"pin": "****",
"cancelPhoneNum": "1115555555",
"operatingSystemName": "iPhone OS 9.0"
}
Başarılı İşlem Cevabı
{
"cancelPhoneNumber": "1115555555",
"referenceNum": "1111111",
"phoneNumber": "1115555555",
"deviceId": "apple or android id",
"returnMessage": "<b>1115555555</b> telefon numarasından gelen para isteme talebi iptal edilmiştir.",
"statusCode": 0,
"channel": null
}
Cepbank tanımlaması yapılan hesap üzerinden Turkcell, Avea, Vodafone hattınıza TL yüklemesi yapabilirsiniz.
URL
/cepbankMobile/gsmTLTopUpFromAccount.json
İstek Mesajı
{
"applicationName": "CepBank",
"targetOperator": "T",
"timestamp": "2015-08-24-10.28.01.771",
"targetPhoneNum": "5353558584",
"msisdnToken": "",
"tranAmount": 30,
"operatingSystemType": "IOS",
"deviceName": "iPhone5,2",
"deviceToken": "unique gt id",
"crackFlag": "N",
"hashKey": "for security",
"userPhoneNum": "",
"deviceId": "apple or android id",
"pin": "****",
"operatingSystemName": "iPhone OS 9.0"
}
Başarılı İşlem Cevabı
{
"phoneNumber": "1115555555",
"targetPhoneNum": "5353558584",
"targetOperator": "T",
"tranAmount": 30,
"deviceId": "apple or android id",
"returnMessage": "5353558584 nolu cep telefonuna 30TL yuklenmistir. Garanti Bankasi",
"statusCode": 0,
"channel": null
}
URL /cepbankMobile/creditLead.json
İstek Mesajı
{
"nameText": "Mehmet",
"surnameText": "Yılmaz",
"mobilePhoneNum": 6474649,
"mobilePhoneAreaCode": 536,
"emailAddressText": "admin@hmail.com.tr",
"reason": "Evlilik"
}
Başarılı İşlem Cevabı
{
"returnCode": "0000",
"explanationText": "Bilgileriniz Gönderilmiştir."
}
URL
/cepbankMobile/creditCardLead.json
İstek Mesajı
{
"nameText": "Mehmet",
"surnameText": "Yılmaz",
"nationalNum": 11111111111,
"emailAddressText": "admin@hmail.com.tr",
"mobilePhoneNum": 1111111,
"mobilePhoneAreaCode": 533,
"homePhoneNum": 2221111,
"homePhoneAreaCode": 212,
"officePhoneNum": 6665544,
"officePhoneAreaCode": 212,
"productNum": 345,
"sourceCode": "5C060039"
}
Başarılı İşlem Cevabı
{
"returnCode": "0000",
"explanationText": "Başvurunuz alınmıştır."
}
URL
/cepbankMobile/getcurrency.json
İstek Mesajı
data gönderilmemesi gerekmektedir.
Başarılı İşlem Cevabı
{
"date": "09092015",
"time": "0000",
"operation": "C",
"dovizKurlariList": [
{
"dovizKodu": "USD",
"dovizAdi": "Amerikan Doları",
"alisFiyatiS": "0.00000",
"satisFiyatiS": "0.00000",
"alisFiyatiM": "3.01450",
"satisFiyatiM": "3.01990",
"alisFiyatiA": "2.98000",
"satisFiyatiA": "3.04000"
},
{
"dovizKodu": "EUR",
"dovizAdi": "Euro",
"alisFiyatiS": "0.00000",
"satisFiyatiS": "0.00000",
"alisFiyatiM": "3.36820",
"satisFiyatiM": "3.37430",
"alisFiyatiA": "3.33240",
"satisFiyatiA": "3.39950"
},
{
"dovizKodu": "AUD",
"dovizAdi": "Avustralya Doları",
"alisFiyatiS": "2.10640",
"satisFiyatiS": "2.11700",
"alisFiyatiM": "2.09910",
"satisFiyatiM": "2.11280",
"alisFiyatiA": "2.09090",
"satisFiyatiA": "2.13300"
},
{
"dovizKodu": "CAD",
"dovizAdi": "Kanada Doları",
"alisFiyatiS": "2.27250",
"satisFiyatiS": "2.28390",
"alisFiyatiM": "2.27070",
"satisFiyatiM": "2.28090",
"alisFiyatiA": "2.25830",
"satisFiyatiA": "2.30370"
},
{
"dovizKodu": "CHF",
"dovizAdi": "İsviçre Frangı",
"alisFiyatiS": "3.06570",
"satisFiyatiS": "3.08110",
"alisFiyatiM": "3.08000",
"satisFiyatiM": "3.09980",
"alisFiyatiA": "3.04580",
"satisFiyatiA": "3.10710"
},
{
"dovizKodu": "DKK",
"dovizAdi": "Danimarka Kronu",
"alisFiyatiS": "0.45070",
"satisFiyatiS": "0.45300",
"alisFiyatiM": "0.45073",
"satisFiyatiM": "0.45294",
"alisFiyatiA": "0.44661",
"satisFiyatiA": "0.45560"
},
{
"dovizKodu": "GBP",
"dovizAdi": "İngiliz Sterlini",
"alisFiyatiS": "4.62180",
"satisFiyatiS": "4.64490",
"alisFiyatiM": "4.62620",
"satisFiyatiM": "4.65030",
"alisFiyatiA": "4.58130",
"satisFiyatiA": "4.67350"
},
{
"dovizKodu": "JPY",
"dovizAdi": "100 Japon Yeni",
"alisFiyatiS": "2.50550",
"satisFiyatiS": "2.51800",
"alisFiyatiM": "2.50630",
"satisFiyatiM": "2.52290",
"alisFiyatiA": "2.48950",
"satisFiyatiA": "2.53960"
},
{
"dovizKodu": "NOK",
"dovizAdi": "Norveç Kronu",
"alisFiyatiS": "0.36450",
"satisFiyatiS": "0.36630",
"alisFiyatiM": "0.36313",
"satisFiyatiM": "0.36557",
"alisFiyatiA": "0.36178",
"satisFiyatiA": "0.36906"
},
{
"dovizKodu": "SAR",
"dovizAdi": "S. Arabistan Riyali",
"alisFiyatiS": "0.80040",
"satisFiyatiS": "0.80440",
"alisFiyatiM": "0.80374",
"satisFiyatiM": "0.80519",
"alisFiyatiA": "0.79144",
"satisFiyatiA": "0.81386"
},
{
"dovizKodu": "SEK",
"dovizAdi": "İsveç Kronu",
"alisFiyatiS": "0.35710",
"satisFiyatiS": "0.35890",
"alisFiyatiM": "0.35572",
"satisFiyatiM": "0.35940",
"alisFiyatiA": "0.35432",
"satisFiyatiA": "0.36146"
}
]
}
URL
/cepbankMobile/market.json
İstek Mesajı
data gönderilmemesi gerekmektedir.
Başarılı İşlem Cevabı
{
"marketList": [
{
"symbol": "XU100",
"desc": "BIST 100",
"last": "72.536",
"pernc": "0,67",
"pernc_number": "0.67",
"last_mod": "09.09.2015 13:42:30"
},
{
"symbol": "KUSD",
"desc": "USD",
"last": "3,0145",
"pernc": "0,00",
"pernc_number": "0.00",
"last_mod": "09.09.2015 13:56:43"
},
{
"symbol": "KEUR",
"desc": "EURO",
"last": "3,3605",
"pernc": "-0,33",
"pernc_number": "-0.33",
"last_mod": "09.09.2015 13:56:34"
},
{
"symbol": "KBP",
"desc": "GBP",
"last": "4,6318",
"pernc": "-0,15",
"pernc_number": "-0.15",
"last_mod": "09.09.2015 13:56:43"
},
{
"symbol": "EUR",
"desc": "EURO / USD",
"last": "1,1153",
"pernc": "-0,43",
"pernc_number": "-0.43",
"last_mod": "09.09.2015 13:58:55"
},
{
"symbol": "REPO1",
"desc": "O/N Repo",
"last": "9,67",
"pernc": "0",
"pernc_number": "0.00",
"last_mod": ""
},
{
"symbol": "KGC",
"desc": "Altın",
"last": "108,431",
"pernc": "-0,06",
"pernc_number": "-0.06",
"last_mod": "09.09.2015 13:57:39"
},
{
"symbol": "NASDAQ",
"desc": "NASDAQ",
"last": "4.811,93",
"pernc": "2,73",
"pernc_number": "2.73",
"last_mod": "08.09.2015 23:00:01"
}
]
}
En yakın Garanti Paramatik’e giderek, kart kullanmadan sadece "GİRİŞ" tuşuna basın,
-
Ana menüden "CepBank Para Çekme" adımını seçin,
-
Gönderenin cep telefon numarasını, kendi cep telefon numaranızı, gönderilen tutarı (gönderenden öğrenebilirsiniz) ve kısa mesajda yer alan şifreyi girerek, parayı çekebilirsiniz
URL
/cepbankMobile/qrwithdrawmoney.json
İstek Mesajı
{
"applicationName": "CepBank",
"timestamp": "2015-08-24-10.25.50.192",
"crackFlag": "N",
"msisdnToken": "",
"operatingSystemType": "IOS",
"deviceToken": "unique gt token",
"deviceName": "iPhone5,2",
"hashKey": "for security",
"userPhoneNum": "",
"deviceId": "apple or android device id",
"pin": "****",
"tranAmount": 50,
"qrCode" : "qr hash for the operation",
"operatingSystemName": "iPhone OS 9.0",
"latitude": 36.599104891017426,
"longitude": 30.561593821958457
}
Başarılı İşlem Cevabı
{
"deviceId": "apple or android id",
"returnMessage": "Sayın müşterimiz, 50 TL'lik başlattığınız para çekme işlemine Paramatik üzerinden devam edebilirsiniz.",
"statusCode": 0,
"channel": null
}
- SanalPos İşlemleri =====================
Garanti SanalPoS uygulamasına
-
Normal sanalPoS işlemleri
-
3D Secure işlemler
olmak üzere iki farklı entegrasyon ile işlem gönderilebilir.
Normal SanalPoS işlemleri için ;
https://sanalposprov.garanti.com.tr/VPServlet
adresine kullanılacak işlem tipine uygun XML lerin oluşturulup post metodu ile işlemlerin bu adrese aktarılması beklenir.
3D işlemleri için ise ayrı bir adres mevcuttur ancak Hackathon kapsamında 3D işlemleri bulunmadığından burada adresi verilmeyecektir.
Hackathon sırasında Garanti Bankası’nın gerçek sistemlerine bağlanılmayacak, lokalinizdeki simülasyon sistemine bağlanılacaktır. Bu sistemin adresi de http://localhost:9999/VPServlet şeklinde olacaktır.
Aşağıda kullanılan XML yapısı, işlem tiplerine göre hangi alanların doldurulması gerektiği ve örnek mesaj yapıları paylaşılacaktır.
Geliştirdiğiniz uygulamada verdiğimiz örnek dataları kullanabilirsiniz. Değerini bildiğiniz alanlar için (örneğin GSM Number, CreditCardNumber, Amount gibi ) elinizde olan değeri göndermeniz daha doğru olacaktır. Servisler gerçek anlamda iş yapmadığı, yapıyormuş gibi davrandığından kartınız ya da gsm numaranız üzerinde gerçek sistemde bir işlem yapılmayacaktır.
Burada kullandığınız API’lerin yapısı Garanti Banka’sının gerçek API’leri ile aynıdır. Ancak ileride gerçek API’leri kullanmak istediğinizde burada yaptığınız geliştirme üzerine farklı geliştirmeler de yapmak durumunda kalacaksınız.
Sanalpos hakkında daha detay bilgiye ulaşmak isterseniz http://www.garantipos.com.tr/mailing/GVP.zip adresinden dokümanlarına ulaşabilirsiniz.
SanalPoS işlemlerinde Garanti’nin provizyon adresine hazırlanacak bir XML datasının paylaşılması beklenmektedir. Aşağıda kullanılan XML yapısı, işlem tiplerine göre hangi alanların doldurulması gerektiği ve örnek mesaj yapıları paylaşılacaktır.
Garanti SanalPoS istek mesajı VPOSRequest datası içerisinde gönderilmektedir.
<VPOSRequest></VPOSRequest>
Dikkat edilecek konular
Genel
** XML başlığının “data” olarak gönderilmesi gerekmektedir.
Data = <GVPSRequest>….</GVPSRequest>
** Tüm tutar alanlarında kuruş gösterimleri için “.” Veya “,” ayracı kullanılmayacaktır.
1.00 TL için <Amount>100</Amount>
1.01 TL için <Amount>101</Amount>
şeklinde olacaktır.
XML datası içerisinde işlem tipine göre değişen alanlar ve her işlem için standart bulunması gereken alanlar bulunmaktadır. Ana taglar altında işlem tipine göre gönderilmesi gereken veya boş bırakılabilecek parametreler bulunur.
Tüm parametreler ve bulundukları alanlar aşağı da yer almaktadır.
<VPOSRequest>
<Mode></Mode>
<APIVersion></APIVersion>
<Terminal>
<ProvUserID></ProvUserID>
<HashData></HashData>
<UserID></UserID>
<ID></ID>
<MerchantID></MerchantID>
</Terminal>
<Customer>
<IPAddress></IPAddress>
<EmailAddr></EmailAddr>
</Customer>
<Card>
<Number></Number>
<ExpireDate></ExpireDate>
<CVV2></CVV2>
</Card>
<Order>
<ID></ID>
<GroupID></GroupID>
<ItemList>
<Item>
<Number></Number>
<ProductID></ProductID>
<ProductCode></ProductCode>
<Quantity></Quantity>
<Price></Price>
<TotalAmount></TotalAmount>
<Description></Description>
</Item>
</ItemList>
<AddressList>
<Address>
<Type></Type>
<Name></Name>
<LastName></LastName>
<Company></Company>
<Text></Text>
<District></District>
<City></City>
<PostalCode></PostalCode>
<Country></Country>
<PhoneNumber></PhoneNumber>
</Address>
</AddressList>
<Recurring>
<Type></Type>
<TotalPaymentNum></TotalPaymentNum>
<FrequencyType></FrequencyType>
<FrequencyInterval></FrequencyInterval>
<StartDate></StartDate>
<PaymentNum></PaymentNum>
<PaymentList>
<Payment>
< PaymentNum ></ PaymentNum >
< Amount ></ Amount >
</Payment>
</PaymentList>
</ Recurring >
<CommentList>
<Comment>
<Number></Number>
<Text></Text>
</Comment>
</CommentList>
<StartDate>01/12/2010 11:11</StartDate>
<EndDate>08/12/2010 11:11</EndDate>
<ListPageNum></ ListPageNum >
</Order>
<Transaction>
<Type></Type>
<SubType>extre</SubType>
<ChannelCode></ChannelCode>
<InstallmentCnt></InstallmentCnt>
<Amount></Amount>
<CurrencyCode></CurrencyCode>
<OriginalRetrefNum></OriginalRetrefNum>
<DelayDayCount></DelayDayCount>
<DownPaymentRate></DownPaymentRate>
<CardholderPresentCode></CardholderPresentCode>
<MotoInd></MotoInd> <!-- E/H -->
<BatchNum>546</BatchNum>
<CampaingCode>51170390</CampaingCode>
<FirmCardNo>6072140039194927</FirmCardNo>
<UtilityPaymentInq>
<InstitutionCode></InstitutionCode>
<SubscriberCode></SubscriberCode>
</UtilityPaymentInq>
<UtilityPaymentVoidInq>
<InstitutionCode></InstitutionCode>
<SubscriberCode></SubscriberCode>
</UtilityPaymentVoidInq>
<GSMUnitInq>
<InstitutionCode></InstitutionCode>
<SubscriberCode></SubscriberCode>
<Quantity></Quantity>
</GSMUnitInq>
<UtilityPayment>
<InstitutionCode></InstitutionCode>
<SubscriberCode></SubscriberCode>
<InvoiceID></InvoiceID>
<Amount></Amount>
</UtilityPayment>
<GSMUnitSales>
<InstitutionCode></InstitutionCode>
<SubscriberCode></SubscriberCode>
<UnitID></UnitID>
<Quantity></Quantity>
<Amount></Amount>
</GSMUnitSales>
<CepBank>
<GSMNumber></GSMNumber>
<PaymentType>Credit / Debit / Account</PaymentType>
</CepBank>
<CepBankInq>
<GSMNumber></GSMNumber>
</CepBankInq>
<3DSecure>
<AuthenticationCode></AuthenticationCode>
<SecurityLevel></SecurityLevel>
<TxnID></TxnID>
<MD></MD>
</3DSecure>
<RewardList>
<Reward>
<Type></Type>
<UsedAmount></UsedAmount>
<GainedAmount></GainedAmount>
</Reward>
</RewardList>
<ChequeList>
<Cheque>
<Type>Player / Sözünüze Ürün</Type>
<Amount></Amount>
<Count></Count> <!-- Player -->
<ID></ID> <!-- Sözünüze Ürün -->
<Bitmap></Bitmap>
</Cheque>
</ChequeList>
<MoneyCard>
<InvoiceAmount></InvoiceAmount>
<MigrosCCDiscountAmount></MigrosCCDiscountAmount>
<PaymentAmount></PaymentAmount>
<ExtraDiscountAmount></ExtraDiscountAmount>
<ProductBasedDiscountAmount></ProductBasedDiscountAmount>
</MoneyCard>
BINInq>
<Group>A</Group>
<CardType>A</CardType>
</BINInq>
<Verification>
<Identity>51766596320</Identity>
</Verification>
<DCC>
<Currency>949</Currency>
</DCC>
<DelayedSales>
<DelayedSalesType>1</DelayedSalesType>
<PaymentList>
<Payment>
<PaymentNum>1</PaymentNum>
<DueDate>20110501</DueDate>
<Amount>1010</Amount>
</Payment>
</PaymentList>
</DelayedSales>
<Prepaid>
<UniqueID>200510534479</UniqueID>
</Prepaid>
</Transaction>
<SettlementInq>
<Date>20110301</Date>
</SettlementInq>
</VPOSRequest>
VPOSRequest içerisinde her işlem için doldurulması gereken alanlar;
Mode ; Test ya da prod işlemi olduğu burada taşınır.
APIVersion; Kullanılan API nin versiyonunu içeren bilgidir.
Terminal ; İşyeri ve terminal bilgilerinin taşındığı alandır.
ProvUserID ; kullanılan provizyon kullanıcı adının gönderildiği alandır. PROVAUT ve PROVRFN ifadelerini alabilir. PROVAUT provizyon kullanıcısı olarak kullanılır. PROVRFN iptal ve iade işlemleri için kullanılan kullanıcıdır.
HashData; gelen işyeri ve kullanıcı datasının doğrulanması için kullanılan alandır.
UserID; işlemi yapan kullanıcı bilgisidir.
ID; Terminal numarasının yollandığı alandır.
MerchantID; İşyeri numarasının yollandığı alandır.
Customer; İşlem yapılan CardHoldera ait IP ve mail adresi bilgisinin taşındığı alandır.
Card; İşlem yapılacak kart bilgilerinini yollandığı alandır.
Order; Siparişle ilgili bilgilerin yollandığı alandır.
Transaction; yapılan işlemle ilgili bilgilerin gönderildiği alandır. işlem tiplerine göre, özel alanların gönderilmesi gerekiyor ise bunlar oluşturulan taglar ile Transaction tagı altına bulunur.
SettlementInq; günsonu sorgusu için kullanılan alandır.
Garanti SanalPoS istek mesajı VPOSResponse datası içerisinde gönderilmektedir.
Her sorgu işlemi için cevap mesajında işlem tipine özel bir sorgu tagı ile cevaplar döndürülmektedir.
VPOSResponse tag yapısı ve tag altında bununa tüm alanlar aşağıdaki gibidir.
<VPOSResponse>
<Mode></Mode>
<Order>
<OrderID></OrderID>
<GroupID></GroupID>
<CommercialCardLimit>257217315</CommercialCardLimit>
<GroupID>
<ChargeType></ChargeType>
<PreAuthAmount></PreAuthAmount>
<PreAuthDate></PreAuthDate>
<AuthAmount></AuthAmount>
<AuthDate> </AuthDate>
</GroupID>
<OrderHistInqResult>
<OrderHistInqResult>
<OrderTxn>
<Type></Type>
<Status></Status>
<PreAuthAmount></PreAuthAmount>
<AuthAmount></AuthAmount>
<PreAuthDate> </PreAuthDate>
<AuthDate> </AuthDate>
<VoidDate> </VoidDate>
<RetrefNum> </RetrefNum>
<AuthCode> </AuthCode>
<ReturnCode> </ReturnCode>
<BatchNum> </BatchNum>
</OrderTxn>
</OrderHistInqResult>
</OrderHistInqResult>
<OrderListInqResult>
<OrderTxnList>
<TotalTxnCount>13</TotalTxnCount>
<TotalPageCount>1</TotalPageCount>
<ActPageNum>1</ActPageNum>
<OrderTxn>
<Id>1</Id>
<LastTrxDate>2010-12-01 11:50:38</LastTrxDate>
<TrxType>Satis</TrxType>
<OrderID>ZAMAN123456789XYZ142</OrderID>
<Name />
<CardNumberMasked></CardNumberMasked>
<ExpireDate>1212</ExpireDate>
<BankBin>467293</BankBin>
<BatchNum>53400</BatchNum>
<AuthCode>552343</AuthCode>
<RetrefNum>033511648343</RetrefNum>
<OrigRetrefNum />
<InstallmentCnt>Pesin</InstallmentCnt>
<Status>Basarili</Status>
<AuthAmount>100</AuthAmount>
<CurrencyCode>TL</CurrencyCode>
<SafeType />
<Comment1 />
<Comment2 />
<Comment3 />
<UserId>PROVAUT</UserId>
<Settlement>Y</Settlement>
<EmailAddress />
<RecurringTotalPaymentNum></RecurringTotalPaymentNum>
<RecurringLastPaymentNum>0</RecurringLastPaymentNum>
<RecurringTxnAmount>null</RecurringTxnAmount>
<ResponseCode>00</ResponseCode>
<SysErrMsg />
</OrderTxn>
<OrderListInqResult>
<OrderTxnList>
<ItemInqResult>
<ItemInqList>
<Item>
<Number>1</Number>
<ProductID>1063616729</ProductID>
<ProductCode>1063616729</ProductCode>
<Quantity>1</Quantity>
<Price>100</Price>
<TotalAmount>100</TotalAmount>
<Description>Cvv Control</Description>
<TrxRetrefNum>214316664556</TrxRetrefNum>
<TrxResponseMessage>Declined</TrxResponseMessage>
<TrxResponseCode>58</TrxResponseCode>
<TrxReasonCode>58</TrxReasonCode>
</Item>
</ItemInqList>
</ItemInqResult>
<CardListInqResult>
<CardTxnList>
<TotalTxnCount>22</TotalTxnCount>
<TotalPageCount>1</TotalPageCount>
<ActPageNum>1</ActPageNum>
<CardTxn>
<Id>1</Id>
<LastTrxDate>2010-12-01 11:04:49</LastTrxDate>
<TrxType>Satis</TrxType>
<OrderID>SISTCE1D937EA508A002375</OrderID>
<Name />
<CardNumberMasked></CardNumberMasked>
<BankBin>554960</BankBin>
<BatchNum>53400</BatchNum>
<AuthCode>831579</AuthCode>
<RetrefNum>033511648341</RetrefNum>
<InstallmentCnt>Pesin</InstallmentCnt>
<Status>Basarili</Status>
<AuthAmount>100</AuthAmount>
<CurrencyCode>TL</CurrencyCode>
<SafeType />
<Comment1 />
<Comment2 />
<Comment3 />
</CardTxn>
</CardTxnList>
</CardListInqResult>
</Order>
<Transaction>
<Response>
<Source>HOST</Source>
<Code>96</Code>
<ReasonCode>9600</ReasonCode>
<Message>Declined</Message>
<ErrorMsg>Expire card</ErrorMsg>
<SysErrMsg>Son kullanma tarihi hatali</SysErrMsg>
<HashData></HashData>
</Response>
<RetrefNum></RetrefNum>
<AuthCode></AuthCode>
<BatchNum></BatchNum>
<SequenceNum></SequenceNum>
<ProvDate></ProvDate>
<CardNumberMasked>558699******8019</CardNumberMasked>
<CardHolderName></CardHolderName >
<CardType>ORTAK</CardType>
<HostMsgList>
<HostMsg></HostMsg>
</HostMsgList>
<ExtendedCreditResult>
<TotalAmount></TotalAmount>
<InterestAmount></InterestAmount>
<BITTAmount></BITTAmount>
<RUSFAmount></RUSFAmount>
<InterestRate></InterestRate>
<BITTRate></BITTRate>
<RUSFRate></RUSFRate>
<InstallmentCnt></InstallmentCnt>
<PaymentList>
<Payment>
<InstallmentNumber></InstallmentNumber>
<DueDate></DueDate>
<Amount></Amount>
</Payment>
</PaymentList>
</ExtendedCreditResult>
<RewardInqResult>
<RewardList>
<Reward>
<Type> BNS, FirmBasedBns</Type>
<TotalAmount></TotalAmount>
<LastTxnGainAmount></LastTxnGainAmount>
</Reward>
</RewardList>
<ChequeList>
<Cheque>
<Type>Player / Sozunuze Urun</Type>
<Count></Count> <!-- Player -->
<ExpireDate></ExpireDate>
<Amount></Amount>
<UsageRate></UsageRate>
<MinTxnAmount></MinTxnAmount>
<CampaignID></CampaignID> <!-- Player -->
<ID></ID> <!-- Sozunuze Urun -->
<Bitmap></Bitmap>
</Cheque>
</ChequeList>
</RewardInqResult>
<UtilityPaymentInqResult>
<InstitutionCode></InstitutionCode>
<SubscriberCode></SubscriberCode>
<SubscriberName></SubscriberName>
<InvoiceCount></InvoiceCount>
<InvoiceList>
<Invoice>
<ID></ID>
<DueDate></DueDate>
<Amount></Amount>
<AmountChangeInd></AmountChangeInd>
<CommissionAmount></CommissionAmount>
<RewardAmount></RewardAmount>
<RetrefNum></RetrefNum>
</Invoice>
</InvoiceList>
</UtilityPaymentInqResult>
<GSMUnitInqResult>
<InstitutionCode></InstitutionCode>
<SubscriberCode></SubscriberCode>
<SubscriberName></SubscriberName>
<ItemCount></ItemCount>
<ItemList>
<Item>
<UnitID></UnitID>
<Quantity></Quantity>
<Amount></Amount>
<CommissionAmount></CommissionAmount>
</Item>
</ItemList>
</GSMUnitInqResult>
<UtilityPaymentVoidInqResult>
<InstitutionCode></InstitutionCode>
<SubscriberCode></SubscriberCode>
<SubscriberName></SubscriberName>
<InvoiceCount></InvoiceCount>
<InvoiceList>
<Invoice>
<ID></ID>
<DueDate></DueDate>
<Amount></Amount>
<RetrefNum></RetrefNum>
</Invoice>
</InvoiceList>
</UtilityPaymentVoidInqResult>
<CepBankInqResult>
<GSMNumber></GSMNumber>
<TxnStatusCode></TxnStatusCode>
<SentClient></SentClient>
<PaymentType>Credit / Debit / Account</PaymentType>
<TxnAmount></TxnAmount>
<BonusAmount></BonusAmount>
<InstallmentCnt></InstallmentCnt>
<Status></Status>
<Message></Message>
</CepBankInqResult>
</Transaction>
<SettlementInqResult>
<Date></Date>
<TransactionSummList>
<TransactionSumm>
<Type></Type>
<Count></Count>
<Amount></Amount>
</TransactionSumm>
</TransactionSummList>
</SettlementInqResult>
<DCCInqResult>
<Count>01</Count>
<Markup>0300</Markup>
<CommisionRate>0100</CommisionRate>
<DCC>
<Currency>0124</Currency>
<CurrencySymbol>CAD</CurrencySymbol>
<TrxAmount>000000005889</TrxAmount>
<DecimalPoint>02</DecimalPoint>
<Display>0001</Display>
<ExchangeRate>017681</ExchangeRate>
</DCC>
</DCCInqResult>
<BatchInqResult>
<BatchInqList>
<TotalTxnCount>85</TotalTxnCount>
<TotalPageCount>1</TotalPageCount>
<ActPageNum>1</ActPageNum>
<BathcTxn>
<ID>1</ID>
<OrderID>SIST0D26254CEB885146523E2E8D2B</OrderID>
<TrxType>On Otorizasyon Kapama</TrxType>
<RetrefNum>035815648971</RetrefNum>
<CardNumberMasked>37*****015</CardNumberMasked>
<TxnAmount>1000</TxnAmount>
<Currency>949</Currency>
<InstallmentCnt>0</InstallmentCnt>
<ProvDate>2010-12-24 15:29:13.296</ProvDate>
</BathcTxn>
</BatchInqList>
</BatchInqResult>
</VPOSResponse>
Order; bu alanda işlemle ilgili bilgilerin dönüşü sağlanmaktadır.
Transaction ; yollanılan işlemle ilgili durum bilgisinin dönüldüğü alandır. Sorgulama isteklerinde sorgu işleminin durumuyla ilgili cevap bu alanda döndürülür. Sorgu cevabı işleme özel cevap tagında yer alır.
Response; bu alanda işlemle ilgili cevap bilgisi geri döndürülmektedir. Response tag yapısı ve tag altında bununa tüm alanlar aşağıdaki gibidir. Code değeri 00 ise işlem başarılı demektir.
<Response\>
<Source\>HOST</Source\>
<Code\>96</Code\>
<ReasonCode\>9600</ReasonCode\>
<Message\>Declined</Message\>
<ErrorMsg\>Expire card</ErrorMsg\>
<SysErrMsg\>Son kullanma tarihi hatali</SysErrMsg\>
<HashData\></HashData\>
</Response\>
DCCInqResult; DCC sorgu işleminde DCC sonuç bilgilerinin dönüldüğü alandır.
BatchInqResult; BatchInq sorgu işleminde sonuç bilgilerinin dönüldüğü alandır.
Satış; işlem tutarının karta peşin veya gönderilen taksit sayısına bölünerek borç geçilmesini sağlayan provizyon işlemidir.
İşlem tipinin "sales" olarak gelmesi gerekmektedir.
<Type>sales</Type>
Tutar alanında işlem tutarı kuruş ayracı olmadan gönderilir (örn : 1100
gönderilirse 11.00 TL dir. ). Kur alanında işlem yapılacak kur bilgisinini
gönderilmesi gerekmektedir. Kart bilgisi alanında işlem yapılan kart datasının
gönderilmesi gerekmektedir.
Zorunlu alanlar
-
<Mode>
-
<Version>
-
<ProvUserID>
-
<HashData>
-
<UserID>
-
<ID>
-
<MerchantID>
-
<IPAddress>
-
<EmailAddress>
-
<Number>
-
<ExpireDate>
-
<Type>
-
<Amount>
-
<CurrencyCode>
-
<MotoInd>
İstek Mesajı
<GVPSRequest>
<Mode>TEST</Mode>
<ChannelCode>S</ChannelCode>
<Version>v0.1</Version>
<Terminal>
<ProvUserID>PROVAUT</ProvUserID>
<HashData>D39B6417E0387F90F261D93805FA84F6CB3F9B</HashData>
<UserID>DENE</UserID>
<ID>111995</ID>
<MerchantID>600218</MerchantID>
</Terminal>
<Customer>
<IPAddress>10.242.8.201</IPAddress>
<EmailAddress>default@none.mail</EmailAddress>
</Customer>
<Card>
<Number>467293******8011</Number>
<ExpireDate>1212</ExpireDate>
<CVV2>788</CVV2>
</Card>
<Transaction>
<Type>sales</Type>
<Amount>1100</Amount>
<CurrencyCode>949</CurrencyCode>
<MotoInd>N</MotoInd>
</Transaction>
</GVPSRequest>
Başarılı işlem cevabı
<GVPSResponse>
<Mode></Mode>
<Order>
<OrderID>SIST2E8748F43EA24754912E365D637B91D8</OrderID>
<GroupID></GroupID>
</Order>
<Transaction>
<Response>
<Source>HOST</Source>
<Code>00</Code>
<ReasonCode>00</ReasonCode>
<Message>Approved</Message>
<ErrorMsg></ErrorMsg>
<SysErrMsg></SysErrMsg>
</Response>
<RetrefNum>105809652539</RetrefNum>
<AuthCode>914729</AuthCode>
<BatchNum>000574</BatchNum>
<SequenceNum>000509</SequenceNum>
<ProvDate>20110227 09:26:12</ProvDate>
<CardNumberMasked></CardNumberMasked>
<CardHolderName>HA*** YIL***</CardHolderName>
<HashData>6F39EA85C6A5BBA9040F40FA7C8F199C70D734</HashData>
<HostMsgList>
</HostMsgList>
<RewardInqResult>
<RewardList></RewardList>
<ChequeList></ChequeList>
</RewardInqResult>
</Transaction>
</GVPSResponse>
Başarısız işlem cevabı
<GVPSResponse>
<Mode> </Mode>
<Order>
<OrderID>SISTE20C15E38F1446AF92DABFB4059E87F6</OrderID>
<GroupID> </GroupID>
</Order>
<Transaction>
<Response>
<Source>HOST</Source>
<Code>54</Code>
<ReasonCode>54</ReasonCode>
<Message>Declined</Message>
<ErrorMsg>İşleminizi gerçekleştiremiyoruz.Tekrar deneyiniz</ErrorMsg>
<SysErrMsg>SON KULLANMA TARIHI HATALI</SysErrMsg>
</Response>
<RetrefNum>105809652540</RetrefNum>
<AuthCode> </AuthCode>
<BatchNum>000574</BatchNum>
<SequenceNum>000510</SequenceNum>
<ProvDate>20110227 09:40:48</ProvDate>
<CardNumberMasked></CardNumberMasked>
<CardHolderName>HA*** YIL***</CardHolderName> <HashData>8D8E2BE7FC080AD985CA0506C50479035FC2C2</HashData>
<HostMsgList> </HostMsgList>
<RewardInqResult>
<RewardList></RewardList>
<ChequeList></ChequeList>
</RewardInqResult>
</Transaction>
</GVPSResponse>
Normal bir satış işlemine ek olarak, taksit bilgisinin InstallmentCnt alanında gönderilmesi gerekmektedir.
Garanti ve Bonus markası ile anılan kartlara yapılan işlemlerin vadelenmesini sağlayan sistemdir. Girilen işlem tutarı taksit sayısına bölünerek müşterinin ödeyeceği taksit tutarları belirlenir.
Mesajlaşma yapısı ve cevap mesajları satış işlemi ile aynıdır.
İşlem tipi : sales olacaktır. installmentCnt alanında yapılmak istenilen taksit sayısı yollanacaktır. Taksit sayısı 2 ve üstü olmalıdır. Taksit yapılmayacaksa bu alanda değer gönderilmemelidir.
<Type>sales</Type>
Zorunlu alanlar
-
<Mode>
-
<Version>
-
<ProvUserID>
-
<HashData>
-
<UserID>
-
<ID>
-
<MerchantID>
-
<IPAddress>
-
<EmailAddress>
-
<Number>
-
<ExpireDate>
-
<Type>
-
<Amount>
-
<CurrencyCode>
-
<MotoInd>
-
<InstallmentCnt>
İstek mesajı
<GVPSRequest>
<Mode>TEST</Mode>
<ChannelCode>S</ChannelCode>
<Version>v0.1</Version>
<Terminal>
<ProvUserID>PROVAUT</ProvUserID>
<HashData>D39B6417E0387F90F261D93805FA84F6CB3F9B</HashData>
<UserID>DENE</UserID>
<ID>111995</ID>
<MerchantID>600218</MerchantID>
</Terminal>
<Customer>
<IPAddress>10.242.8.201</IPAddress>
<EmailAddress>default@none.mail</EmailAddress>
</Customer>
<Card>
<Number>467293******8011</Number>
<ExpireDate>1212</ExpireDate>
<CVV2></CVV2>
</Card>
<Transaction>
<Type>sales</Type>
<Amount>1100</Amount>
<CurrencyCode>949</CurrencyCode>
<MotoInd>N</MotoInd>
<InstallmentCnt>2</InstallmentCnt>
</Transaction>
</GVPSRequest>
Ön otorizasyon, kart üzerindeki limite bloke konulup (konulan bloke 10 gün civarında bir süre ile saklanır), bir ön otorizasyon kapama isteği ile bloke konulan limitin karta borç geçilmesini sağlayan yapıdır. Ön otorizasyon mesajlaşma yapısı satış işlemi ile aynıdır. Sales işlem tipi yerine “preauth” işlem tipinin gönderilmesiyle gerçekleştirilir.
<Type>preauth</Type>
Ön otorizasyon isteği, ön oto kapaması gelemediği sürece işyeri hesaplarına ve kart dönem içi işlemlerine yansımaz.
Zorunlu alanlar
-
<Mode>
-
<Version>
-
<ProvUserID
-
<HashData>
-
<UserID>
-
<ID>
-
<MerchantID>
-
<IPAddress>
-
<EmailAddress>
-
<Number>
-
<ExpireDate>
-
<Type>
-
<Amount>
-
<CurrencyCode>
-
<MotoInd>
İstek mesajı
<GVPSRequest>
<Mode>TEST</Mode>
<ChannelCode>S</ChannelCode>
<Version>v0.1</Version>
<Terminal>
<ProvUserID>PROVAUT</ProvUserID>
<HashData>D39B6417E0387F90F261D93805FA84F6CB3F9B</HashData>
<UserID>DENE</UserID>
<ID>111995</ID>
<MerchantID>600218</MerchantID>
</Terminal>
<Customer>
<IPAddress>10.242.8.201</IPAddress>
<EmailAddress>default@none.mail</EmailAddress>
</Customer>
<Card>
<Number>467293******8011</Number>
<ExpireDate>1212</ExpireDate>
<CVV2></CVV2>
</Card>
<Transaction>
<Type>preauth</Type>
<Amount>1100</Amount>
<CurrencyCode>949</CurrencyCode>
<MotoInd>N</MotoInd>
</Transaction>
</GVPSRequest>
Kapama, Ön otorizasyon yapılan bir işlemin kapamasının yapılabilmesi için kullanılan işlem tipidir.
"postauth" işlem tipi ile gönderimi yapılır. Kapaması yapılacak siparişin, orderID si ve kapama yapılacak tutarın yollanması zorunludur. Ön otorizasyon tutarının üstünde veya altında kapama işlemi yapılabilir. Bu durum için işyeri üzerindeki parametrelerin az ya da fazla kapamaya göre ayarlanması gereklidir.
İşlem tipi postauth olacaktır. Order ID alanında ön otorizasyon kapaması yapılacak sipariş numarası yollanmalıdır. Amount alanında kapama tutarı gönderilir.
<OrderID\>SIST2FE2A2B9F4834E43947704B5E1C806CB\</OrderID\>
<Type\>postauth\</Type\>
<Amount\>1000\</Amount\>
Kapama işlemi örnek mesaj yapısı:
<GVPSRequest>
<Mode>TEST</Mode>
<Version>v0.1</Version>
<Terminal>
<ProvUserID>PROVAUT</ProvUserID>
<HashData>F17A6340B7FDCD1C027895A7842BDB69EF9381D0</HashData>
<UserID>DENE</UserID>
<ID>111995</ID>
<MerchantID>600218</MerchantID>
</Terminal>
<Customer>
<IPAddress>10.242.8.201</IPAddress>
</Customer>
<Order>
<OrderID>SIST2FE2A2B9F4834E43947704B5E1C806CB</OrderID>
</Order>
<Transaction>
<Type>postauth</Type>
<Amount>1000</Amount>
<CurrencyCode>949</CurrencyCode>
<OriginalRetrefNum>105811652549</OriginalRetrefNum>
</Transaction>
</GVPSRequest>
Cevap mesajı satış işlemi ile aynıdır.
<GVPSRequest>
<Mode>TEST</Mode>
<Version>v0.1</Version>
<Terminal>
<ProvUserID>PROVAUT</ProvUserID>
<HashData>F17A6340B7FDCD1C02789542BDB69EF9381D0</HashData>
<UserID>DENE</UserID>
<ID>111995</ID>
<MerchantID>600218</MerchantID>
</Terminal>
<Customer>
<IPAddress>10.242.8.201</IPAddress>
</Customer>
<Order>
<OrderID>SIST2FE2A2B9F4834E43947704B5E1C806CB</OrderID>
</Order>
<Transaction>
<Type>postauth</Type>
<Amount>1000</Amount>
<CurrencyCode>949</CurrencyCode>
<OriginalRetrefNum>105811652549</OriginalRetrefNum>
</Transaction>
</GVPSRequest>
İptal, yapılan bir işlemin gün içerisinde geçersiz olması için yapılan işlemdir. İşlemler aynı gün içerisinde iptal edilebilir. Takip eden günler için işlemin iptal edilmesi gerekiyorsa yapılması gereken işlem iadedir.
İptal işleminin iptali yoktur. Bu sebeple yanlışlıkla bir iptal yapılırsa bu durumda iptal edilen işlemin tekrar yaptırılması gerekmektedir.
Zorunlu alanlar
-
<Mode>
-
<Version>
-
<ProvUserID>
-
<OrderID>
-
<HashData>
-
<UserID>
-
<ID>
-
<MerchantID>
-
<IPAddress>
-
<Type>
-
<Amount>
-
<MotoInd>
-
<OriginalRetrefNum>
İptal ve iade işlemlerinde provuserID alanında PROVRFN kullanıcısı bulunmalıdır. İptal işlemi için işlem tipi “void” olarak gönderilmelidir.
<Type>void</Type>
OrderID alanında iptali yapılacak siparişin numarasının gönderilmesi gerekmektedir. OrijinalRetrefnum alanında iptal edilecek işlemin numarası yollanmalıdır. Cevap mesajı satış işlemi ile aynıdır.
<GVPSRequest>
<Mode>TEST</Mode>
<Version>v0.1</Version>
<Terminal>
<ProvUserID>PROVRFN</ProvUserID>
<HashData>BDD59AA5748B84A2BB4DD15DB679CA84B5825</HashData>
<UserID>DENE</UserID>
<ID>111995</ID>
<MerchantID>600218</MerchantID>
</Terminal>
<Customer>
<IPAddress>10.242.8.201</IPAddress>
</Customer>
<Order>
<OrderID>SIST3EFD6B23364E41B0AE7174EEDAF34D</OrderID>
</Order>
<Transaction>
<Type>void</Type>
<OriginalRetrefNum>105810652541</OriginalRetrefNum>
</Transaction>
</GVPSRequest>
İade bir işlemin aynı gün içerisinde kısmi tutarının ya da takip eden günler için tamamının ya da bir kısminın karta geri yansıtılması için yapılan işlemdir.
Zorunlu alanlar
-
<Mode>
-
<Version>
-
<ProvUserID>
-
<OrderID>
-
<HashData>
-
<UserID>
-
<ID>
-
<MerchantID>
-
<IPAddress>
-
<Type>
-
<Amount>
-
<MotoInd>
-
<OriginalRetrefNum>
İptal ve iade işlemlerinde provuserID alanında PROVRFN kullanıcısı bulunmalıdır. iadel işlemi için işlem tipi “refund” olarak gönderilmelidir.
<Type>refund</Type>
OrderID alanında iadesi yapılacak siparişin numarasının gönderilmesi gerekmektedir. Amount alanında yaspılan iade tutarı gönderilir. İade tutarı işlem tutarında yüksek bir tutar olamaz.
Cevap mesajı satış işlemi ile aynıdır.
<GVPSRequest>
<Mode>TEST</Mode>
<Version>v0.1</Version>
<Terminal>
<ProvUserID>PROVRFN</ProvUserID>
<HashData>DDF0D55F4666E1EF4746E25AABE19F77C3CE4</HashData>
<UserID>DENE</UserID>
<ID>111995</ID>
<MerchantID>600218</MerchantID>
</Terminal>
<Customer>
<IPAddress>10.242.8.201</IPAddress>
</Customer>
<Order>
<OrderID>SIST3EFD6B2D53364E41B0AE7174EEDAF34D</OrderID>
</Order>
<Transaction>
<Type>refund</Type>
<Amount>1001</Amount>
<CurrencyCode>949</CurrencyCode>
</Transaction>
</GVPSRequest>
Bonus sorgulama işlemi ile işlem yapılan kartta var olan tüm ödül tipleri ile çek tanımı olup olmadığı kontrol edilir.
Satış işlemi ile aynı yapıdadır. Sadece işlem tipi alanında sales yerine “rewardinq” ifadesinin yollanması gerekir.
<Type\>rewardinq\</Type\>
Sorgulama sonucunda “RewardInqResult” alanında kartta var BNS, FBB bonus miktarları ayrıca çek tanımı varsa tanımlı olan çekler döner.
Amount alanı boş gönderilmemelidir. Minimum 1 değerinin gönderilmesi gerekmektedir.
İstek Mesajı
<GVPSRequest>
<Mode>PROD</Mode>
<Version>v0.01</Version>
<ChannelCode></ChannelCode>
<Terminal>
<ProvUserID>PROVAUT</ProvUserID>
<HashData>0924EF116070EE8381CFFC1C6BA670E585CF273E</HashData>
<UserID>XXXX</UserID>
<ID>30691292</ID>
<MerchantID>3424113</MerchantID>
</Terminal>
<Customer>
<IPAddress>127.0.0.1</IPAddress>
<EmailAddress>eticaret@garanti.com.tr</EmailAddress>
</Customer>
<Card>
<Number>5549609023403012</Number>
<ExpireDate>1015</ExpireDate>
<CVV2>788</CVV2>
</Card>
<Order>
<OrderID></OrderID>
<GroupID></GroupID>
<AddressList>
<Address>
<Type>S</Type>
<Name></Name>
<LastName></LastName>
<Company></Company>
<Text></Text>
<District></District>
<City></City>
<PostalCode></PostalCode>
<Country></Country>
<PhoneNumber></PhoneNumber>
</Address>
</AddressList>
</Order>
<Transaction>
<Type>rewardinq</Type>
<InstallmentCnt></InstallmentCnt>
<Amount>1</Amount>
<CurrencyCode>949</CurrencyCode>
<CardholderPresentCode>0</CardholderPresentCode>
<MotoInd>N</MotoInd>
<Secure3D>
<AuthenticationCode></AuthenticationCode>
<SecurityLevel></SecurityLevel>
<TxnID></TxnID>
<Md></Md>
</Secure3D>
</Transaction>
</GVPSRequest>
Başarılı İşlem Mesajı
<GVPSResponse>
<Mode />
<Terminal>
<ProvUserID>PROVAUT</ProvUserID>
<UserID>XXXX</UserID>
<ID>30691292</ID>
<MerchantID>3424113</MerchantID>
</Terminal>
<Customer>
<IPAddress>127.0.0.1</IPAddress>
<EmailAddress>eticaret@garanti.com.tr</EmailAddress>
</Customer>
<Order>
<OrderID>SISTB2B7F49CDC5A44C6AFC3540689820D9F</OrderID>
<GroupID />
</Order>
<Transaction>
<Response>
<Source>HOST</Source>
<Code>00</Code>
<ReasonCode>00</ReasonCode>
<Message>Approved</Message>
<ErrorMsg />
<SysErrMsg />
</Response>
<RetrefNum>311615674611</RetrefNum>
<AuthCode />
<BatchNum>000008</BatchNum>
<SequenceNum>000014</SequenceNum>
<ProvDate>20130426 15:34:34</ProvDate>
<CardNumberMasked>554960******3012</CardNumberMasked>
<CardHolderName />
<CardType>BONUS</CardType>
<HashData>B33E3CEFC099ADA1F18234E39E2B5A12C45A4702</HashData>
<HostMsgList />
<RewardInqResult>
<RewardList>
<Reward>
<Type>FBB</Type>
<TotalAmount>148988</TotalAmount>
<LastTxnGainAmount>0</LastTxnGainAmount>
</Reward>
<Reward>
<Type>BNS</Type>
<TotalAmount>4494</TotalAmount>
<LastTxnGainAmount>0</LastTxnGainAmount>
</Reward>
</RewardList>
<ChequeList>
<Cheque>
<Type>P</Type>
<Amount>500</Amount>
<Count>280</Count>
<ExpireDate>20200101</ExpireDate>
<UsageRate>0000</UsageRate>
<MinTxnAmount>1</MinTxnAmount>
<ID>0000006533</ID>
<Bitmap>3C00</Bitmap>
<Description />
</Cheque>
</ChequeList>
</RewardInqResult>
</Transaction>
</GVPSResponse>
Başarısız İşlem Mesajı
<GVPSResponse>
<Mode>
</Mode>
<Order>
<OrderID>SISTE20C15E38F1446AF92DABFB4059E87F6</OrderID>
<GroupID>
</GroupID>
</Order>
<Transaction>
<Response>
<Source>HOST</Source>
<Code>54</Code>
<ReasonCode>54</ReasonCode>
<Message>Declined</Message>
<ErrorMsg>Isleminizi gerceklestiremiyoruz.Tekrar deneyiniz</ErrorMsg>
<SysErrMsg>SON KULLANMA TARIHI HATALI</SysErrMsg>
</Response>
<RetrefNum>105809652540</RetrefNum>
<AuthCode>
</AuthCode>
<BatchNum>000574</BatchNum>
<SequenceNum>000510</SequenceNum>
<ProvDate>20110227 09:40:48</ProvDate>
<CardNumberMasked></CardNumberMasked>
<CardHolderName>HA*** YIL***</CardHolderName>
<HashData>8D8E2BE7FC080AD985CA0506C50479035FC2C206</HashData>
<HostMsgList>
</HostMsgList>
<RewardInqResult>
<RewardList>
</RewardList>
<ChequeList>
</ChequeList>
</RewardInqResult>
</Transaction>
</GVPSResponse>
Bonus ile satın alma yapılmasını sağlayan işlem tipidir. Mesajlaşma yapısı satış ile aynıdır. Sadece satın alma yapılırken ödül kullanımı da yapılacaksa kullanılacak ödül bilgisi rewardlist tagında gönderilir. Bonus kullanım işleminde ödül tipi bilgisi BNS olacaktır. Ödül tutarı , işlem tutarı gibi kuruş ayrımı olmadan gönderilir.
Amount alanında toplam işlem tutarı yollanılır. UsedAmount alanında kullanılacak bonus oranı yollanılır. Kart tarafına amount – usedbonus tutarı kadar borç geçilir. Kullanılan bonus kart bonuslarından düşürülür.
İşleme Özel Alanlar
-
<RewardList>
-
<Reward>
-
<Type>BNS</Type>
-
<UsedAmount>955</UsedAmount>
-
</Reward> </RewardList>
Cevap mesajı satış işlemi ile aynıdır.
<GVPSRequest>
<Mode>TEST</Mode>
<ChannelCode>S</ChannelCode>
<Version>v0.1</Version>
<Terminal>
<ProvUserID>PROVAUT</ProvUserID>
<HashData>F673333AE8CEF43430B81015A80C4921614B4427</HashData>
<UserID>DENE</UserID>
<ID>111995</ID>
<MerchantID>600218</MerchantID>
</Terminal>
<Order>
<OrderID></OrderID>
<GroupID></GroupID>
</Order>
<Customer>
<IPAddress>10.242.8.201</IPAddress>
<EmailAddress>default@none.mail</EmailAddress>
</Customer>
<Card>
<Number>kart numarası</Number>
<ExpireDate>1212</ExpireDate>
</Card>
<Transaction>
<Type>sales</Type>
<Amount>1010</Amount>
<CurrencyCode>949</CurrencyCode>
<MotoInd>N</MotoInd>
<RewardList>
<Reward>
<Type>BNS</Type>
<UsedAmount>955</UsedAmount>
</Reward>
</RewardList>
</Transaction>
</GVPSRequest>
Bir sanal pos servisinin Java programı ile çağrıldığı örnek projedir. Kodu deneyebilmek için SoapUI üzerinden Sanal Pos servislerini çalıştırıp proje içerisindeki _SanalPosTest_ sınıfını çalıştırmanız gerekmektedir.
Aşağıdaki linkten projeyi indirebilirsiniz:
Bir CepBank servisinin Java programı ile çağrıldığı örnek projedir. Kodu deneyebilmek için SoapUI üzerinden CepBank servislerini çalıştırıp proje içerisindeki _CepBankTest_ sınıfını çalıştırmanız gerekmektedir.
Aşağıdaki linkten projeyi indirebilirsiniz:
Aşağıdaki linkte CepBank ve sanalpos servislerinin PHP programı ile nasıl çağrılabileceğinin örneği verilmektedir. Projeyi çalıştırmadan önce SoapUI daki servislerin çalıştırılmış olması gerekmektedir.
Bir CepBank ve bir sanalpos servisinin ObjectiveC projesi üzerinden çağrılmasının gösterildiği örnek projedir. Projeyi indirip bir XCode programı olan bir makinede açtıktan sonra proje içerisindeki xcode.proj dosyasının çalıştırılması yeterlidir. Projeyi çalıştırmadan önce SoapUI daki servislerin çalıştırılmış olması gerekmektedir.
İki proje örneği vardır. Biri sanal pos servisinin diğeri cepbank servisinin c# ile nasıl çalıştırılabileceğini göstermektedir. Kodları deneyebilmek için SoapUI dan servisleri çalıştırmanız, aşağıdaki projeleri VisualStudi’ya import etmeniz ve projelerin içindeki sln dosyalarını çalıştırmanız gerekmektedir.
Bir sanal pos servisinin jquery ile çağrıldığı örnek projedir. Kodu deneyebilmek için SoapUI üzerinden Sanal Pos servislerini çalıştırmanız, ardından aşağıdaki linkten indireceğiniz projedeki index.html dosyasını çalıştırmanız yeterlidir.
Bir CepBank servisinin jquery ile çağrıldığı örnek projedir. Kodu deneyebilmek için SoapUI üzerinden CepBank servislerini çalıştırmanız, ardından aşağıdaki linkten indireceğiniz projedeki index.html dosyasını çalıştırmanız yeterlidir.
Bir CepBank ve bir sanalpos servisinin Android projesi üzerinden çağrılmasının gösterildiği örnek projedir. SoapUI dan servisleri çalıştırdıktan sonra kodu deneyebilirsiniz. Proje Android Studio ile açıldıktan sonra karşınıza gelecek olan ekranda hostIP adlı bir değişken tanımlıdır. Bu değişkene, servislerin çalıştığı IP girilmelidir. Bundan sonra proje ister bir emülatörde, ister gerçek bir cihazda çalıştırılabilir, yalnız bu cihazın servisler ile aynı ağda olması gerekmektedir. Proje çalıştıktan sonra sanalpos ve cepbank servislerini çağırabilirsiniz, dönen cevaplar hem cihazın ekranına, hem de konsola yazdırılmaktadır.
Chrome tarayıcına eklenen bir Rest Client uygulamasıdır. Gireceğiniz bir adrese HTTP isteklerinin gönderilmesini ve cevabın alınmasını sağlar Menüden Eklentiler (Add-ons) seçilerek tarayıcıya eklenebilir.
FireFox tarayıcına eklenen rest servislerini test edebilmenizi sağlayan bir uygulamadır. Gireceğiniz bir adrese HTTP isteklerinin gönderilmesini ve cevabın alınmasını sağlar
Menüden More Tools/ Extensions seçilerek tarayıcıya eklenebilir.
Gerçek sistemde, kullanılmak istenen servisin işleyişine aykırı her durum için farklı hata kodları ve mesajları döndürülmektedir. İleride Garanti Bankası sistemlerine bağlanmanız gerektiğinde karşılaşabileceğiniz hata kodları sizinle paylaşılacaktır. Ancak Hackathon kapsamında kullandığınız servisler gerçek servisler olmadığından hata döndürme durumları gerçek sisteme göre oldukça basitleştirilmiştir. Basitleştirme sonucunda ulaşılan sonuçlar aşağıda özetlenmiştir:
CepBank servislerinin tamamı JSON objeleri ile çalışmaktadır. Bazı servislere input gönderilmemesi gerekmektedir.
Eğer gönderdiğiniz data bozuksa ya da içerisindeki değerler işlenmek için yeterli/doğru değilse aşağıdaki JSON datası döndürülecektir.
{ "errorID":"2023",
"exceptionInfo":"Özür dileriz, işleminizi şu anda gerçekleştiremiyoruz.
Lütfen daha sonra tekrar deneyin.",
"deviceId":null
}
SanalPos servislerini XML data gönderilerek çalışmaktadır. Eğer <GVPSRequest></GVPSRequest> elementi bulunmayan bir XML datası gönderirseniz aşağıdaki XML’i içeren response gönderilecektir:
<GVPSResponse>
Invalid Transaction
</GVPSResponse>
XML’inizin formatı düzgün ise işlem tipine göre zorunlu olan alanların varlığına bakılır. Eğer zorunlu alanlar gönderilmemişse aşağıdaki gibi hata açıklamalarını içeren response gönderilir:
<Transaction>
<Response>
<Source>HOST</Source>
<Code>30</Code>
<ReasonCode>30</ReasonCode>
<Message>Declined</Message>
<ErrorMsg>Mesajin Formati Hatali</ErrorMsg>
<SysErrMsg>Card Number Alani bos gecilemez</SysErrMsg>
</Response>
...
</Transaction>
Cevap : Eğer mobil uygulamanızı simülatör üzerinden çalıştırıyorsanız SoapUI daki servisleri adresi localhost şeklinde girerek ulaşabilirsiniz. Ancak denemelerinizi cep telefonu üzerinden yapıyorsanız bilgisayarınız ile cep telefonunuzu aynı network’e bağlamanız ve cep telefonundaki uygulamaya sunucu adresi olarak makinenizin IP adresini girmeniz gerekmektedir.
Soru 2: Servisleri yazdığım koddan denediğimde hata alıyorum, sorunun serviste mi benim kodumda mı olduğunu nasıl anlayabilirim?
Cevap : Bilgisayarınıza bir RestClient uygulaması yükleyin. Bu SoapUI olabileceği gibi tarayıcılar üzerinde çalışan Chrome’daki AdvancedRestClient uygulaması gibi bir eklenti de olabilir. Bu tip uygulamalardan URL ve request datasını verdiğinizde istediğiniz servisi çağırabiliyorsunuz. Servisleri çağırırken POST request yapıyor olduğunuzdan emin olun. Eğer cevap başarılı bir şekilde geliyorsa sorun kodunuzdadır. Cevap başarılı değilse XML datanız hatalı olabilir. Hatayı SoapUI daki errorlog ve scriptlog’dan inceleyebilirsiniz.