• Sanal POS

Sanal POS İşlemleri Genel Kavramlar 

Garanti Sanal POS, internet üzerinden yapılan satışlarda kredi kartı ile ödeme alınabilmesi için oluşturulan güvenli bir ödeme çözümüdür.

Üye işyerleri, mağazalarında internet üzerinde bir şube açıp, Garanti Sanal POS ile, onu hiç kapanmayan bir satış platformu haline gelebilir. Böylece hem müşteri sayıları, hem de cironun artırılmasına katkı sağlanır.

Garanti Sanal POS altında genel olarak aşağıdaki işlemler gerçekleştirilmektedir:

  • Satış İşlemleri
  • Ortak Ödeme Sayfası İşlemleri
  • İptal İşlemleri
  • İade İşlemleri
  • Kapama İşlemleri
  • Sorgulama İşlemleri

Bu doküman içerisinde, üye işyerlerinin Garanti Sanal POS altında 3D’siz Sorgulama işlemlerinin sağlanabilmesi için gerekli olan adımlar, her bir adım içerisinde yapılması gereken işlemler ve gönderilen işlem istekleri ve alınan cevap mesajlarının yapıları anlatılmaktadır. 

Sanal POS Sorgulama İşlemleri

Sanal POS Sorgulama işlemleri altında yer alan alt işlem tipleri genel olarak aşağıdaki şekildedir:

  • Bonus Sorgulama: Kart üzerindeki bonus bilgisinin alınması için kullanılan işlem tipidir. Cevap mesajında dönen bonus tutarının son iki hanesi kuruş olarak düşünülecektir. Sadece Garanti kartlarına ve Bonus markası altındaki kartlar için bonus sorgulama işlemi yapılabilir.
  • Sipariş Sorgulama: Belirli bir işleme ait bilgilerin alındığı istek tipidir.
  • Sipariş Detay Sorgulama: Belirli bir siparişe ait işlemlerin sorgulandığı işlem tipidir.
  • Tarih Aralığı Sorgulama: Girilen iki tarih arasında gerçekleşen işlemlerle ilgili detayların gösterildiği işlem tipidir.

Test / Prod Ortam Seçimleri: 

Sanal POS Satış işlemleri için, üye işyeri tarafından 2 farklı yöntem ile ilerlenmesi mümkündür. Üye işyeri dilerse yapacağı tüm geliştirmeleri Test ortamında yapabilir. Alternatif olarak doğrudan yayın ortamında da bu işlemler için gerekli geliştirmeler yapılabilir.

Üye işyeri tarafından seçilecek yönteme göre, Sanal POS satış işlemlerine başlamadan önce aşağıdaki başlıklardan uygun olana göre ilk işlemlerin yapılması gerekmektedir:

Yapılacak çalışmaların test ortamında yürütülmesi durumunda, aşağıda belirtilen ön tanımlı değerler oldugu gibi kullanılabilir:

Parametre Değer
MerchantID 7000679
ProvUserID PROVAUT / PROVRFN / PROVOOS
ProvisionPassword 123qweASD/
TerminalID 30691297
StoreKey 12345678

Test ortamında yapılacak çalışmalarda "https://sanalposprovtest.garantibbva.com.tr/VPServlet" url'i kullanılacaktır.

Test ortamında yapılan işlemlerin takip edilebileceği ve görüntülenebileceği panele bu adresten erişebilirsiniz.

Değişken Değer
Kullanıcı Adı 99999999999
Parola Destek04
Şifre 147852

Not: Parola işlemlerinde hata alınması durumunda 2.kez deneme yapılmadan önce lütfen Bize Soru Gönderin formu ile bilgi veriniz.

Test ortamında kullanılabilecek tüm test kartlarının listesine bu sayfadan ulaşabilirsiniz.

Bu yöntem ile ilerlendiğinde, üye işyeri tarafından ilk adım olarak kurulumda kullanılacak olan şifreler (“PROVAUT”,“PROVOOS”, “PROVRFN” ve “3D” (storekey) şifreleri) Sanal POS İlk Adımlar dokümanı içerisinde belirtildiği şekilde sanal pos yönetim panelinden oluşturmalıdır.

Sonraki adımlarda, bu şekilde oluşturulan şifre ve hesaplar kullanılacaktır. 

PROD ortamında yapılacak çalışmalarda "https://sanalposprov.garanti.com.tr/VPServlet" url'i kullanılacaktır.

Hash Algoritması

Bu doküman içerisinde, birçok işlem tipi altında kullanılan ve istek mesajı içerisinde <HashData> şeklinde yer alan etiket için gerekli olan verinin nasıl oluşturulacağını adım adım anlatılmaktadır.

İstek mesajları içerisinde yer alan <HashData> etiketi; kullanıcıya ait şifre doğrulamasının yapılmasını sağlayan alandır. Hash oluşturma detayları aşağıda ayrıca anlatılmaktadır.

Yeni SanalPoS uygulamasında, terminale ait şifrenin açık şekilde dolaşmasının engellenmesi için HASH yapısı kullanılmaktadır.

Hash hesabı:

  • Hashedpassword bilgisinin hesaplanmasında SHA1
  • Hashvalue değerinin hesaplanmasında SHA512 algoritması kullanılmaktadır.

Hash hesaplamasında, İki parçalı HASH yapısı kullanılmaktadır. İlk aşamada provizyon şifresinin, terminal numarası ile yanyana getirilmesi ile SHA1 algoritması kullanılarak hashedpassword değerinin elde edilmesi sağlanacaktır.

Hash oluşturmak için gerekli olan işlemler, aşağıda farklı programlama dilleri için sunulmuştur:

public static string Sha1(string text) {\n var provider = CodePagesEncodingProvider.Instance;\n Encoding.RegisterProvider(provider);\n\n var cryptoServiceProvider = new SHA1CryptoServiceProvider();\n var inputbytes = cryptoServiceProvider.ComputeHash(Encoding.GetEncoding(\"ISO-8859-9\").GetBytes(text));\n\n var builder = new StringBuilder();\n for (int i = 0; i < inputbytes.Length; i++) {\n builder.Append(string.Format(\"{0,2:x}\", inputbytes[i]).Replace(\" \", \"0\"));\n }\n\n return builder.ToString().ToUpper();\n}\n\npublic static string Sha512(string text) {\n var provider = CodePagesEncodingProvider.Instance;\n Encoding.RegisterProvider(provider);\n\n var cryptoServiceProvider = new SHA512CryptoServiceProvider();\n var inputbytes = cryptoServiceProvider.ComputeHash(Encoding.GetEncoding(\"ISO-8859-9\").GetBytes(text));\n\n var builder = new StringBuilder();\n for (int i = 0; i < inputbytes.Length; i++) {\n builder.Append(string.Format(\"{0,2:x}\", inputbytes[i]).Replace(\" \", \"0\"));\n }\n\n return builder.ToString().ToUpper();\n}\n\npublic static string GetHashData(string userPassword, string terminalId, string orderId, string cardNumber, ulong amount, int currencyCode) {\n var hashedPassword = Sha1(userPassword + \"0\" + terminalId);\n return Sha512(orderId + terminalId + cardNumber + amount + currencyCode + hashedPassword).ToUpper();\n}
Public Shared Function Sha1(ByVal text As String) As String\n Dim provider = CodePagesEncodingProvider.Instance\n Encoding.RegisterProvider(provider)\n Dim cryptoServiceProvider = New SHA1CryptoServiceProvider()\n Dim inputbytes = cryptoServiceProvider.ComputeHash(Encoding.GetEncoding(\"ISO-8859-9\").GetBytes(text))\n Dim builder = New StringBuilder()\n\n For i As Integer = 0 To inputbytes.Length - 1\n builder.Append(String.Format(\"{0,2:x}\", inputbytes(i)).Replace(\" \", \"0\"))\n Next\n\n Return builder.ToString().ToUpper()\nEnd Function\n\nPublic Shared Function Sha512(ByVal text As String) As String\n Dim provider = CodePagesEncodingProvider.Instance\n Encoding.RegisterProvider(provider)\n Dim cryptoServiceProvider = New SHA512CryptoServiceProvider()\n Dim inputbytes = cryptoServiceProvider.ComputeHash(Encoding.GetEncoding(\"ISO-8859-9\").GetBytes(text))\n Dim builder = New StringBuilder()\n\n For i As Integer = 0 To inputbytes.Length - 1\n builder.Append(String.Format(\"{0,2:x}\", inputbytes(i)).Replace(\" \", \"0\"))\n Next\n\n Return builder.ToString().ToUpper()\nEnd Function\n\nPublic Shared Function GetHashData(ByVal userPassword As String, ByVal terminalId As String, ByVal orderId As String, ByVal cardNumber As String, ByVal amount As ULong, ByVal currencyCode As Integer) As String\n Dim hashedPassword = Sha1(userPassword & \"0\" & terminalId)\n Return Sha512(orderId & terminalId & cardNumber & amount & currencyCode & hashedPassword).ToUpper()\nEnd Function
public static String calculateHash(String data, String algorithm, String charset) throws UnsupportedEncodingException, NoSuchAlgorithmException {\n\tMessageDigest md = MessageDigest.getInstance(algorithm);\n\tbyte[] databytes = data.getBytes(charset);\n\t\n\tmd.update(databytes);\n byte[] hashBytes = md.digest();\n \n return byteArray2HexaDecimal(hashBytes);\n}\n\npublic static String sha1(String data) throws UnsupportedEncodingException, NoSuchAlgorithmException { \n return calculateHash(data, \"SHA-1\", \"ISO-8859-9\").toUpperCase();\n}\n\npublic static String sha512(String data) throws UnsupportedEncodingException, NoSuchAlgorithmException { \n return calculateHash(data, \"SHA-512\", \"ISO-8859-9\").toUpperCase();\n}\n\npublic static String getHashData(String userPassword, String terminalId, String orderId, String cardNumber, Long amount, int currencyCode) {\n var hashedPassword = sha1(userPassword + \"0\" + terminalId);\n return sha512(orderId + terminalId + cardNumber + amount + currencyCode + hashedPassword);\n}
private function GenerateSecurityData($terminalId)\n {\n $password = \"password\";\n\n $data = [\n $password,\n str_pad((int)$terminalId, 9, 0, STR_PAD_LEFT)\n ];\n\n $shaData = sha1(implode('', $data));\n\n return strtoupper($shaData);\n }\n\n public function GenerateHashData()\n {\n $orderId = \"order_id\"; //must be uniqe\n $terminalId = \"terminal_id\"; //must be integer\n $cardNumber = \"1234123412341234\"; //card number\n $amount = \"100\"; //amount\n $currencyCode = \"currency_code\"; //must be int\n\n $hashedPassword = GenerateSecurityData($terminalId);\n\n $data = [\n $orderId, $terminalId, $cardNumber, $amount, $currencyCode, $hashedPassword\n ];\n \n $shaData = strtoupper(hash(\"sha512\", implode('', $data)));\n\n return strtoupper($shaData);\n }

İstek (Request) Yapısı

Sanal POS tüm 3D’siz işlemleri için gerekli olan istek yapısı aşağıdaki tabloda belirtilmiştir. Tablo içerisinde ilk kolonda yer alan ana tag altında yer alanabilecek her tag için gerekli olan bilgi ve açıklamalar incelenmeli ve istek mesajı bu tabloda belirtilen kurallara göre sağlanmalıdır:

<?xml version=\"1.0\" encoding=\"iso-8859-9\"?>\n<GVPSRequest>\n\t<Mode>TEST</Mode>\n\t<Version>512</Version>\n\t<Terminal>\n\t\t<ProvUserID>PROVAUT</ProvUserID>\n\t\t<HashData>3255D0F62BE0691F4D454A2B047325638E9ACAF71BF6BD511D4EF34ABD7D50563513046A76B7B0BFA2BAA7A7C7E3FAA902473D35CA57E94D40487544E03F4000</HashData>\n\t\t<UserID>PROVAUT</UserID>\n\t\t<ID>30691297</ID>\n\t\t<MerchantID>7000679</MerchantID>\n\t</Terminal>\n\t<Customer>\n\t\t<IPAddress>192.168.0.1</IPAddress>\n\t\t<EmailAddress>eticaret@garanti.com.tr</EmailAddress>\n\t</Customer>\n\t<Order>\n\t\t<OrderID>64fae2fefe604721a082650873865e45</OrderID>\n\t\t<GroupID />\n\t</Order>\n\t<Transaction>\n\t\t<Type>orderhistoryinq</Type>\n\t\t<ListPageNum>0</ListPageNum>\n\t\t<Amount>10000</Amount>\n\t\t<CurrencyCode>949</CurrencyCode>\n\t\t<CardholderPresentCode />\n\t\t<MotoInd>N</MotoInd>\n\t</Transaction>\n</GVPSRequest>

Bu yapı içerisinde birçok etiket kendi içerisinde alt etiketleri içermektedir. Her bir etiketin anlatıldığı ilgili başlık altında, alt etiketi olmayan etiketlerin kullanım kuralları ve alt etiketi olan etiketlerin de detayları ayrı başlık halinde verilerek sunulmaktadır.

Alt Etiket  Maks Boyut  Veri Yazım Formatı  Açıklama ve notlar 
<Mode> PROD İşlem modunun yazıldığı alandır 
<Version> 16 byte Format zorunluluğu yok Kullanılan Api versiyonunun yazıldığı alandır. Sha512 oalrak hash hesaplanması kapsamında bu alanda 512 değerinin gönderilmesi gereklidir. 
<Terminal>  Sanal pos doğrulamasının sağlanması için sanal pos numarası kullanıcı bilgisi gibi parametreler yollanılır. Bu etiket içerisinde alt etiketler yer alır. İçerdiği etiketler ve kuralları devam eden başlıklarda verilmiştir. 
<Customer>  Müşteri Bilgilerinin yollanıldığı alandır. Tag içerisinde yer alan bilgilerin yollanılması zorunludur. Bu etiket içerisinde alt etiketler yer alır. İçerdiği etiketler ve kuralları devam eden başlıklarda verilmiştir. 
<Order>  Siparişe ait bilgilerin ve detayların yollanıldığı alandır. Bu etiket içerisinde alt etiketler yer alır. İçerdiği etiketler ve kuralları devam eden başlıklarda verilmiştir. 
<Transaction>  İşlem bilgilerinin ve finansal bilgilerin gönderildiği alanadır. Bu etiket içerisinde alt etiketler yer alır. İçerdiği etiketler ve kuralları devam eden başlıklarda verilmiştir. 

<Terminal> Etiketi ve Altında Yer Alacak Etiket ve Detayları

Sanal pos doğrulamasının sağlanması için sanal pos numarası kullanıcı bilgisi gibi parametreler yollanılır.

<Terminal>\n\t<ProvUserID></ProvUserID>\n\t<HashData></HashData>\n\t<UserID></UserID>\n\t<ID></ID>\n\t<MerchantID></MerchantID>\n</Terminal>

Bu etiket içerisinde yer alan alt etiketler ve detayları aşağıda verilmiştir:

Alt Etiket Maks Boyut Veri Yazım Formatı Açıklama ve notlar
<ProvUserID> 32 byte Format zorunluluğu yok  Terminale ait provizyon kullanıcı kodunun gönderildiği alandır. Burada Prov kullanıcısı, İptal iade kullanıcısı veya OOS kullanıcısı bulunabilir
<HashData>  32 byte Hash algoritması: SHA512 formatında olacaktır. Hash çevrimi sonrasında küçük harflerin büyük harfe çevrilmesi gerekmektedir. Detayları aşağıda yer almaktadır. Kullanıcıya ait şifre doğrulamasının yapılmasını sağlanılan alandır. Hash oluşturma detayları bu doküman içerisinde ayrıca anlatılmaktadır. 
<UserID> Format zorunluluğu yok  İşlemi yapan kullanıcının (Agent - Satış Temsilcisi) yollandığı alandır.
<ID>  9 byte Nümerik Terminal numarasının yollandığı alandır 
<MerchatID>  9 byte Nümerik İşyeri numarasının yollandığı alandır.

<Customer> Etiketi ve Altında Yer Alacak Etiket ve Kuralları 

Müşteri Bilgilerinin yollanıldığı alandır. Tag içerisinde yer alan bilgilerin yollanılması zorunludur. 

<Customer>\n <IPAddress></IPAddress>\n <EmailAddress></EmailAddress>\n</Customer>
Alt Etiket Maks Boyut Veri Yazım Formatı Açıklama ve notlar 
<IPAdress> 20 byte Format zorunluluğu yok İşlemi yapan müşteriye ait IP adresinin yollanıldığı alandır. Fraud kontrollerinin sağlanabilmesi için zorunlu olarak yollanılması gerekmektedir.
<EmailAddress> 64 byte İşlemi yapan müşteriye ait E-Mail adresinin yollanıldığı alandır.

<Order> Etiketi Etiketi ve Altında Yer Alacak Etiket ve Kuralları 

Request içerisinde siparişe ait bilgilerin ve detayların yollanıldığı alandır.

<Order>\n <OrderID></OrderID>\n <GroupID></GroupID>\n</Order>
Alt Etiket Veri Yazım Formatı Açıklama ve notlar
<OrderID> Alfanümerik Sipariş numarasının geri döndürüldüğü alandır.
<GroupID> Alfanümerik GroupID numarasının geri döndürüldüğü alandır. Bu etiket alt etiketler içerir. Alt etiketlere ilişkin detaylar aşağıdaki başlıklarda verilmiştir.

<Transaction> Etiketi ve Altında Yer Alacak Etiket ve Kuralları 

SanalPOS Sipariş Detay Sorgulama işleminde; request içerisinde işlem bilgilerinin ve finansal bilgilerin gönderildiği alanadır. 

<Transaction>\n\t<Type></Type>\n\t<Amount></Amount>\n\t<CurrencyCode></CurrencyCode>\n\t<CardholderPresentCode/>\n\t<MotoInd></MotoInd>\n</Transaction>
Alt Etiket Maks Boyut Veri Yazım Formatı Açıklama ve notlar 
<Type> 32 byte Alfanümerik İşlem Tipinin gönderildiği alandır. Doküman içerisinde işlem tipleri ile ilgili detaylar ayrıca verilecektir. İşlem tipine göre diğer alanların kullanımına dikkat edilmelidir.
<Amount> 17,2 number Nümerik LLLLKK şeklinde yollanır. Son 2 hane kuruşu ifade eder. 1,00 TL -> 100 11,22 TL->1122 0,01TL -> 1 şeklinde Tutar bilgisinin girildiği alandır. Yapılan işlem "Kısmi İade" işlemi ise, bu alana girilen tutar kadar iade yapılır.
<CurrencyCode>  3 byte Nümerik Kur bilgisinin yollanıldığı alandır. 949 -> TL diğer kurlar için yetkinize göre bilgilendirme yapılacaktır.
<CardholderPresentCode> 2 byte Nümerik Normal işlemler için 0, 3D işlemler için 13 girilmesi gerekmektedir.
<MotoInd> 1 byte Alfanümerik Y ve N değerlerini alır. Ecommerce işlemler için N gönderilir. Moto işlem statüsündeki işlemler için Y gönderilir.

Cevap (Response) Yapısı  

Sanal POS işlemleri için, önceki başlıklarda gönderilen istek sonrası, servisten dönen cevap (response) yapısı genel olarak aşağıdaki tabloda belirtilmiştir. Tablo içerisinde ilk kolonda yer alan ana tag altında yer alanabilecek her tag için gerekli olan bilgi ve açıklamalar incelenmeli ve istek mesajı bu tabloda belirtilen kurallara göre sağlanmalıdır: 

Sanal POS peşin satış işleminde cevap yapısı genel biçimde aşağıdaki şekildedir: 

<GVPSResponse>\n\t<Mode></Mode>\n\t<Terminal></Terminal>\n\t<Customer></Customer>\n\t<Order></Order>\n\t<Transaction></Transaction>\n</GVPSResponse>

Yukarıda verilen cevap yapısı içerisinde yer alan etiketler ve bu etiketlerin altında yer alan alt etiketler aşağıdaki başlıkta verilmiştir: 

Alt Etiket Veri Yazım Formatı Açıklama ve notlar
<Mode> PROD - TEST İşlem modunun yazıldığı alandır
<Terminal> Sanal pos doğrulamasının sağlanması için sanal pos numarası kullanıcı bilgisi gibi parametreler yollanılır. Bu etiket kendi içerisinde alt parent ve child etikeler barındırır. İçerdiği alt etiketler aşağıdaki başlıklarda verilmiştir.
<Customer> İstek yapısı içerisinde gönderilen müşteriye ait bilgilerin doğrulama amaçlı geri gönderildiği alandır. Bu etiket kendi içerisinde alt etikeler barındırır. İçerdiği alt etiketler aşağıdaki başlıklarda verilmiştir.
<Order> Siparişe ait bilgilerin ve detayların yollanıldığı alandır. Bu etiket kendi içerisinde alt etikeler barındırır. İçerdiği alt etiketler aşağıdaki başlıklarda verilmiştir.
<Transaction>  İşlem bilgilerinin ve finansal bilgilerin dönüldüğü alandır. Bu etiket kendi içerisinde alt parent ve child  etikeler barındırır. İçerdiği alt etiketler aşağıdaki başlıklarda verilmiştir.

<Terminal> Etiketi ve Altında Yer Alacak Etiket ve Detayları

Sanal pos doğrulamasının sağlanması için sanal pos numarası kullanıcı bilgisi gibi, request içerisinde gönderilen parametrelerin aynı şekilde response içerisinde de döndüğü alandır.

<Terminal>\n\t<ProvUserID></ProvUserID>\n\t<UserID></UserID>\n\t<ID></ID>\n\t<MerchantID></MerchantID>\n</Terminal>

Bu etiket içerisinde yer alan alt etiketler ve detayları aşağıda verilmiştir:

Alt Etiket Maks Boyut Veri Yazım Formatı Açıklama ve notlar
<ProvUserID> 32 byte Format zorunluluğu yok  Terminale ait provizyon kullanıcı kodunun gönderildiği alandır. Burada Prov kullanıcısı, İptal iade kullanıcısı veya OOS kullanıcısı bulunabilir
<UserID> Format zorunluluğu yok  İşlemi yapan kullanıcının (Agent - Satış Temsilcisi) yollandığı alandır.
<ID>  9 byte Nümerik Terminal numarasının yollandığı alandır 
<MerchatID>  9 byte Nümerik İşyeri numarasının yollandığı alandır.

<Customer> Etiketi ve Altında Yer Alacak Etiket ve Kuralları 

Request içerisinde yollanan müşteri bilgilerinin response içerisinde de aynı şekilde döndüğü alandır. 

<Customer>\n\t<IPAddress></IPAddress>\n\t<EmailAddress></EmailAddress>\n</Customer>
Alt Etiket Maks Boyut Veri Yazım Formatı Açıklama ve notlar 
<IPAdress> 20 byte Format zorunluluğu yok İşlemi yapan müşteriye ait IP adresinin yollanıldığı alandır. Fraud kontrollerinin sağlanabilmesi için zorunlu olarak yollanılması gerekmektedir.
<EmailAddress> 64 byte İşlemi yapan müşteriye ait E-Mail adresinin yollanıldığı alandır.

<Order> Etiketi Etiketi ve Altında Yer Alacak Etiket ve Kuralları 

Request içerisinde gönderilen sipariş bilgilerinin, response içerisinde aynı şekilde döndüğü alandır.

Alt Etiket Veri Yazım Formatı Açıklama ve notlar
<OrderID> Alfanümerik Sipariş numarasının geri döndürüldüğü alandır.
<GroupID> Alfanümerik GroupID numarasının geri döndürüldüğü alandır. Bu etiket alt etiketler içerir. Alt etiketlere ilişkin detaylar aşağıdaki başlıklarda verilmiştir.
<OrderHistInqResult> Bu etiket alt etiketler içerir. Alt etiketlere ilişkin detaylar aşağıdaki başlıklarda verilmiştir.

<OrderHistInqResult> Etiketi Etiketi ve Altında Yer Alacak Etiket ve Kuralları 

<OrderHistInqResult>\n <OrderTxnList></OrderTxnList>\n</OrderHistInqResult>
Alt Etiket Veri Yazım Formatı Açıklama ve notlar
<OrderTxnList>

<OrderTxnList> Etiketi Etiketi ve Altında Yer Alacak Etiket ve Kuralları   

<OrderTxnList>\n <OrderTxn></OrderTxn>\n</OrderTxnList>
Alt Etiket Veri Yazım Formatı  Açıklama ve notlar
<OrderTxn> Bu etiket alt etiketler içerir. Alt etiketlere ilişkin detaylar aşağıdaki başlıklarda verilmiştir.
<OrderTxn> Etiketi Etiketi ve Altında Yer Alacak Etiket ve Kuralları  
<OrderTxn>\n <Type></Type>\n <Status></Status>\n <PreAuthAmount></PreAuthAmount>\n <AuthAmount></AuthAmount>\n <PreAuthDate></PreAuthDate>\n <AuthDate></AuthDate>\n <VoidDate></VoidDate>\n <RetrefNum></RetrefNum>\n <AuthCode></AuthCode>\n <ReturnCode></ReturnCode>\n <BatchNum></BatchNum>\n <RemainingBNSAmount></RemainingBNSAmount>\n <UsedFBBAmount></UsedFBBAmount>\n <UsedChequeType></UsedChequeType>\n <UsedChequeCount></UsedChequeCount>\n <UsedChequeAmount></UsedChequeAmount>\n <CurrencyCode></CurrencyCode>\n <Settlement></Settlement>\n</OrderTxn>
Alt Etiketleri Veri Yazım Formatı Açıklama ve notlar
<Type>  Bu etiket alt etiketler içerir. Alt etiketlere ilişkin detaylar aşağıdaki başlıklarda verilmiştir.
  <Status>  Statü bilgisinin geri döndürüldüğü alandır.
 <PreAuthAmount> Nümerik LLLLKK şeklinde yollanır. Son 2 hane kuruşu ifade eder. 1,00 TL -> 100 11,22 TL->1122 0,01TL -> 1 şeklinde  Ön otorizasyon tutarının döndürüldüğü alandır. 
  <AuthAmount>  Nümerik LLLLKK şeklinde yollanır. Son 2 hane kuruşu ifade eder. 1,00 TL -> 100 11,22 TL->1122 0,01TL -> 1 şeklinde  Satış tutarının döndürüldüğü alandır. 
<PreAuthDate> YYYYMMDD Ön otorizasyon tarihinin döndürüldüğü alandır.
<AuthDate> YYYYMMDD Satış tarihinin döndürüldüğü alandır.
 <VoidDate> YYYYMMDD İade tarihinin döndürüldüğü alandır.
<RetrefNum> Nümerik Sanalpos tarafından üretilen işlem numarasının geri döndürüldüğü alandır.
 <AuthCode>  Nümerik (6 byte) Onay kodunun geri döndürüldüğü alandır.
<ReturnCode>  İşlem sonucunun geri döndürüldüğü alandır.
<BatchNum> İşlemlerin hangi batche gireceğinin geri döndürüldüğü alandır.
<RemainingBNSAmount>
<UsedFBBAmount>
<UsedChequeType>
<UsedChequeCount>
<UsedChequeAmount>
<CurrencyCode> Nümerik 3byte Kur bilgisinin dönüldüğü alandır. 949 -> TL diğer kurlar için yetkinize göre bilgilendirme yapılacaktır.
<Settlement>

<Transaction> Etiketi Etiketi ve Altında Yer Alacak Etiket ve Kuralları 

<Transaction>\n <Response></Response>\n <RetrefNum></RetrefNum>\n <AuthCode></AuthCode>\n <BatchNum></BatchNum>\n <SequenceNum></SequenceNum>\n <ProvDate></ProvDate>\n <CardNumberMasked></CardNumberMasked>\n <CardHolderName></CardHolderName>\n <CardType></CardType>\n <HashData></HashData>\n <HostMsgList></HostMsgList>\n <RewardInqResult></RewardInqResult>\n <CampaignChooseLink></CampaignChooseLink>\n <GarantiCardInd></GarantiCardInd>\n</Transaction>
Alt Etiketleri Veri Yazım Formatı Açıklama ve notlar
<Response>  Bu etiket alt etiketler içerir. Alt etiketlere ilişkin detaylar aşağıdaki başlıklarda verilmiştir.
<RetrefNum> Nümerik Sanalpos tarafından üretilen işlem numarasının geri döndürüldüğü
<AuthCode>  Nümerik Onay kodunun geri döndürüldüğü alandır.
<BatchNum>  İşlemlerin hangi batche gireceğinin geri döndürüldüğü alandır.
 <SequenceNum>  İşlem sıra numarası
<ProvDate>  YYYYMMDD Provizyon tarihinin döndürüldüğü alandır.
<CardNumberMasked> Kart numarasının ilk 6 son 4 hanesinin, aradaki alanların * lı geri döndürüldüğü alandır.
<CardHolderName> Kart sahibinin adının gönderildiği alandır.
<CardType>  İşlem yapılan kart tipinin dönüldüğü alandır.
<HashData> İşleme ait HashData bilgisinin dönüldüğü alandır.
<HostMsgList>  Bu etiket alt etiketler içerir. Alt etiketlere ilişkin detaylar aşağıdaki başlıklarda verilmiştir.
<RewardInqResult>  Bu etiket alt etiketler içerir. Alt etiketlere ilişkin detaylar aşağıdaki başlıklarda verilmiştir.
<GarantiCardInd>
<CampaignChooseLink>

<Response> Alt Etiketleri ve Açıklamaları 

<Response>\n <Source></Source>\n <Code></Code>\n <ReasonCode></ReasonCode>\n <Message></Message>\n <ErrorMsg></ErrorMsg>\n <SysErrMsg></SysErrMsg>\n</Response>
Alt Etiketleri Açıklama ve notlar
<Source> Kaynak bilgisinin geri döndürüldüğü alandır.
<Code> Approved - declined bilgisinin geri döndürüldüğü alandır.
<ReasonCode> Cevap kodunun geri döndürüldüğü alandır.
<Message>  Mesaj bilgisinin geri döndürüldüğü alandır.
<ErrorMsg>  Hata mesajının geri döndürüldüğü alandır.
<SysErrMsg> Sistem hata mesajının geri döndürüldüğü alandır. 

<RewardInqResult> Etiketi, Alt Etiketleri ve Açıklamaları 

Alt Etiketleri  Veri Yazım Formatı Açıklama ve notlar 
<RewardList> Bu etiket alt etiketler içerir. Alt etiketlere ilişkin detaylar aşağıdaki başlıklarda verilmiştir.
<ChequeList> Bu etiket alt etiketler içerir. Alt etiketlere ilişkin detaylar aşağıdaki başlıklarda verilmiştir.

<RewardList> Etiketi ve Açıklamaları

Alt Etiketleri Veri Yazım Formatı Açıklama ve notlar
<Reward>  Bu etiket alt etiketler içerir. Alt etiketlere ilişkin detaylar aşağıdaki başlıklarda verilmiştir.

<Reward> Etiketi ve Açıklamaları

Alt Etiketleri Veri Yazım Formatı Açıklama ve notlar
<Type> Alfanümerik Ödül tipinin geri döndürüldüğü alandır. Bu alan içerisinde gelebilcek değerler ve anlamları şu şekildedir:BNS: Bonus PuanFBB: Firma Bazlı Bonus Puan
<TotalAmount> Nümerik LLLLKK şeklinde yollanır. Son 2 hane kuruşu ifade eder. 1,00 TL -> 100 11,22 TL->1122 0,01TL -> 1 şeklinde  Ödül tutarının döndürüldüğü alandır.
<LastTxnGainAmount>  Nümerik LLLLKK şeklinde yollanır. Son 2 hane kuruşu ifade eder. 1,00 TL -> 100 11,22 TL->1122 0,01TL -> 1 şeklinde Son kazanılan ödül tutarının geri döndürüldüğü alandır.

Kod Örnekleri

Aşağıda farklı yazılım dilleri ile yazılmış sanal POS Peşin Satış işlem örneklerine github repo linkleri verilmiştir. Tercih ettiğiniz programlama diline ait link üzerinden ön tanımlı değerlerle yazılmış olan kodları inceleyebilirsiniz. 

Kod Örnekleri

Aşağıda bu işlem tipinin de yer aldığı, farklı yazılım dilleri ile yazılmış özel kod örneklerine ait github repo linkleri verilmiştir. Tercih ettiğiniz programlama diline ait link üzerinden ön tanımlı değerlerle yazılmış olan kodları inceleyebilirsiniz.

Hata Kodları

Hata kodlarına bu sayfadan ulaşabilirsiniz.

Test Kartları

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