Giriş
Bu dokümanda, POSNET TDS (3D Secure) sistemine entegrasyonun nasıl yapılabileceği
anlatılmaktadır. Paylaşılan servis url’leri test ortamı içindir. Gerçek ortama geçmek için gerekli
işlemlere doküman sonunda yer verilmiştir. Test ortamında testlerinizi tamamladıktan sonra canlı ortama geçiş talebinizi posnet.support@yapikredi.com.tr adresine göndereceğaainiz mail ile belirtmeniz gerekmektedir. Göndereceğiniz mail ekinde örnek işlemleriniz için ayırt edici (MERCHANT_ID, TERMINAL_ID, POSNET_ID, SOURCE_IP, ORDER_NO, TRANSACTION_DATE vb.) bilgilere ve işlem yaptığınız tarihe yer vermeniz gerekmektedir.
POSNET sistemini kullanacak üye işyerlerinin hem test hem canlı ortam için Statik IP adreslerini bankaya bildirmesi gerekmektedir.
Order id değeri 24 karakter yerine 1-24 karakter arası gönderilmek isteniyorsa veya aynı order id’nin farklı tarihlerde kullanılma durumu olacak ise merchant üye işyeri için order id parametresinin aktif edilmesi Posnet Support ekibinden talep edilmelidir. Order id parametresinin aktif olması durumunda farklı günlerde aynı order id ile işlem gönderilebilir. Parametre aktifleştirilmesi işlemleri için talebinizi posnet.support@yapikredi.com.tr adresine göndereceğiniz mail ile belirtmeniz gerekmektedir.
Üye işyerinin hem kendi riskini azaltması hem de müşteri bilgilerinin güvenliğinin sağlanması için 3D Secure (3 boyutlu güvenlik) ödeme entegrasyonu yapması önerilmektedir. İptal İşlemi, İade İşlemi,
Puan İşlemleri, Kişiye Özel – Joker Vadaa’lı İşlemler, Vade Farkı işlemler POSNET XML Servisi dokümanında anlatılmaktadır.
Entegrasyonun gerçekleşmesi için gereken adımlar 4 ana başlık altında toplanmaktadır.
1. Verilerin Şifrelenmesi: Kullanıcı alışverişini tamamlayıp ödeme aşamasına geldiğinde müşteri bilgileri, alışveriş bilgileri ve kredi kartı bilgileri YKB servislerine gönderilerek verileri şifrelenir. Şifreli posnetData, posnetData2 ve digest gibi bilgiler response içerisinde alınır.
2. Kullanıcı Doğrulama (3D Secure): Şifrelenmiş veriler banka servislerine gönderilerek kullanıcı doğrulaması yapılır. Bu adımda banka tarafında Ortak Ödeme Sayfası (OOS) ve/veya ThreeD Secure (TDS) doğrulama sayfası aracılığıyla işlemin bir kaydı oluşturulur. Kayıt sonrasında finansallaştırma için gereken bilgiler, üye işyeri sistemine şifreli olarak geri gönderilir.
3. MAC/Kullanıcı Doğrulama Sonuç Sorgulanması: İşleme özel MAC datası üye işyeri tarafından oluşturulur ve ek bilgiler ile banka servislerine gönderilir. Servis cevabında dönen verilerin
1.adımda gönderilmiş verilerle aynı olduğu işyeri tarafından kontrol edilir. Böylelikle bilgilerin web sayfaları arasında doğru şekilde aktarıldığından emin olunur. Ayrıca OOS/TDS doğrulama işlem sonucu bu servis ile öğrenilmektedir. (Kart bilgilerini kendi ekranlarından alan ve TDS doğrulama yapmayan iş yerlerinin MAC doğrulama yapması gerekmektedir)
4. Finansallaştırma: Finansallaştırma işlemi için 2.adımdan dönen bankData ve oluşturulacak MAC datası ilgili servise gönderilir. Servis cevabına göre işlemin sonucu kullanıcıya bilgi olarak verilir.
Finansallaştırma için kullanıcı doğrulamasının başlarıyla sonuçlanmış olması veya MAC datasının doğrulanmış olması banka sistemlerinde kontrol edilmemektedir. İşyerinin bu kontrolleri yapmamasından dolayı oluşacak risklerden dolayı banka sorumluluk kabul etmemektedir.
• POSNET sistemini kullanacak üye iş yerlerinin hem test hem canlı ortam için Statik IP adreslerini bankaya bildirmesi gerekmektedir.
Servis Genel Yapısı
Posnet XML servisi, posnet işyerlerinin XML dokümanları göndererek posnet işlemi yapmalarını sağlayan bir servistir. İşyeri sistemlerinin ortam değişkeni olan <%XML_SERVICE_URL%> adresine
(test ortamı: https://setmpos.ykb.com/PosnetWebService/XML) oluşturdukları xml dokümanını UTF- 8 URL Encode ile encode ettikten sonra “xmldata” parametresinde Content-Type=application/x- www-form-urlencoded; charset=utf-8 ile POST etmesi gerekmektedir. İşlem sonucu yine bir XML dokümanı olarak işyerine dönülür.
Örnek url: https://setmpos.ykb.com/PosnetWebService/XML?xmldata=%3CposnetRequest%3E%0D%0A++%3C mid%3E...
Servis entegrasyonunda yer alan aşağıdaki bilgiler üye iş yerlerine mail ile bildirilmektedir ve bu bilgiler test ve canlı ortamlar arasında farklılık göstermektedir. Bu bilgilerin kod içerisinde gömülü olarak tutulmaması, ortam değişkeni olarak tanımlanarak kullanılması önerilmektedir.
Key Type Description Sample Data
MERCHANT_ID String 10 haneli YKB üye işyeri
numarası 6706598320
TERMINAL_ID String 8 haneli YKB üye işyeri
terminal numarası 67005551
POSNET_ID String 16 haneye kadar YKB üye
işyeri POSNET numarası. 3D Secure şifreleme
işlemlerinde
kullanılmaktadır. 9644
ENCKEY String Şifreleme anahtarı (test
ortamı için sabittir) 10,10,10,10,10,10,10,10
OOS_TDS_SERVICE_U RL String Form yönlendirmesi yapılacak banka banka
sayfası adresi https://setmpos.ykb.com/3DSWeb Service/YKBPaymentService
XML_SERVICE_URL String Banka entegrasyon servis
adresi https://setmpos.ykb.com/PosnetW
ebService/XML
MERCHANT_INIT_URL String Üye işyerinin işlem yaptığı
web sitesi adresi Localhost
MERCHANT_RETURN_ URL String Form yönlendirmesinin geri yapılacağı işyeri sayfa adresi.
Max 255 karakter http://localhost:1453/JavaOOS/me rchant_islem_sonu.jsp
OPEN_A_NEW_WIND OW Boolean POST edilecek formun yeni bir sayfaya mı yoksa mevcut sayfayı mı yönlendirileceğini
belirten parametre 0
MERCHANT_ID, TERMINAL_ID, POSNET_ID, ENCYKEY bilgileri İşyeri Yönetici Ekranlarındaki Üye İşyeri bilgileri sayfasından da öğrenilebilir.
NOTLAR:
• Yapılacak servis entegrasyonunda her Request Header’ına X-MERCHANT-ID, X-TERMINAL-ID, X-POSNET-ID, X-CORRELATION-ID bilgileri eklenmelidir. (CorrelationId: işyeri tarafından set edilecek işleme ait unique değerdir. Satış işlemleri için sipariş numarası (XID) set edilebilir)
• Servise gönderilecek datanın xml yapısını bozmaması için xml escape karakterleri encode edilerek gönderilmelidir.
• Banka sistemlerinde UTF-8 encoding desteklenmektedir.
1. Verilerin Şifrelenmesi
Kullanıcı ödeme adımına geldiğinde, ödeme bilgileri ve kart bilgilerinin şifrelendiği adımdır.
Ödeme bilgileri tutar, para birimi, taksit sayısı, işlem tipi bilgilerden oluşmaktadır. Kart bilgileri ad soyad, kart numarası, son kullanma tarihi, güvenlik kodu bilgilerinden oluşmaktadır. İşyeri kendi ekranlarında kart bilgilerini kullanıcıdan almıyorsa bu bilgileri şifreleme servisine göndermez. Bu durumda banka ortak ödeme sayfası aracılığıyla kullanıcıdan kart bilgilerini isteyecektir.
Verilerin şifrelenmesi için aşağıdaki XML yapısı (oosRequestData) oluşturulup UTF-8 URL Encode ile encode edildikten sonra önüne “xmldata=” stringi eklenir. xmldata=%3CposnetRequest%3E%0D%0A++%3Cmid%3E şeklinde başlayan string <%XML_SERVICE_URL%> ‘e Content-Type=application/x-www-form-urlencoded ile POST edilir.
Örnek url: https://setmpos.ykb.com/PosnetWebService/XML?xmldata=%3CposnetRequest%3E%0D%0A++%3C mid%3E...
Request Örneği
posnetRequest - oosRequestData
Verilerin şifrelenmesi için kullanılacak servis desenini oluşturmaktadır. Servis sonucunda posnetData, posnetData2 ve digest bilgilerine response içerisinden ulaşılacaktır.
posnetRequest
mid YKB Üye İşyeri Numarası <%MERCHANT_ID%>
tid YKB Üye İşyeri Terminal Numarası <%TERMINAL_ID%>
oosRequestData
posnetid YKB Üye İşyeri POSNET Numarası <%POSNET_ID%>
XID Tekil alışveriş sipariş numarası – 20 alfa numerik karakter. İşyeri tarafından
oluşturulur. Üye iş yerinin OrderID parametresinin aktif edildiği durumlarda minimum 1 maksimum 24 karakter alphanumeric.
amount Alışveriş tutarı – Kuruş cinsinden Ör: 12.34 TL için 1234 olarak set edilmelidir.
currencyCode Para birimi – “TL, US, EU”
installment Alışveriş taksit sayısı
Peşin İşlem için “00” kullanılmalıdır.
2 taksitli işlem için “02” kullanılmalıdır.
tranType İşlem Tipi Sale Satış
Auth Provizyon
WP World Puan Kullanım
SaleWP Satış ve World Puan Kullanım Vft Vade Farklı Satış
cardHolderName Müşterinin adı soyadı
ccno Kredi kartı numarası
expDate Kredi kartı son kullanım tarihi – Formatı yıl ay olacak şekilde YYAA
cvc Kredi kartı güvenlik numarası – CVV2
Kredi kartı bilgilerinin banka tarafından ortak ödeme sayfası aracılığı ile alınması isteniyorsa cardHolderName, ccno, expDate, cvc alanlarına XML içerisinde yer verilmez veya boş bırakılır.
Response Örneği
posnetResponse - oosRequestDataResponse
Şifrelenmiş veriler daha sonra kullanılmak üzere kaydedilmelidir.
posnetResponse
approved İşlem sonucu.
0:Başarısız 1:Başarılı
respCode Hata kodu.
İşlem sonucunun başarısız olduğu durumda dikkate alınmalıdır. Hata Kodları bölümünde açıklamalara yer verilmiştir.
respText Hata mesajı.
oosRequestDataResponse
data1 Ödeme bilgilerini içermektedir.
İlerleyen adımlarda posnetData değişkeni olarak kullanılacaktır.
data2 Kart bilgileri request içerisinde bulunuyorsa bu alan oluşturulmaktadır.
İlerleyen adımlarda posnetData2 değişkeni olarak kullanılacaktır.
sign Servis imzası.
İlerleyen adımlarda digest değişkeni olarak kullanılacaktır.
Response Örneği (Hatalı)
2. Kullanıcı Doğrulama (3D Secure)
Kullanıcının banka ekranlarına yönlendirilerek kart sahibi olduğunun doğrulandığı akışı
içermektedir. Kullanıcı ödeme aşamasına geldiğinde üye işyeri sistemi tarafından 1.adımda anlatıldığı gibi bilgiler şifrelenir ve html form içine hidden field olarak diğer bilgilerle birlikte eklenir.
Kullanıcının işyeri sisteminden OOS/TDS banka sayfalarına yönlendirilmesi
hiddenFields
Bir kısmı giriş bölümünde bahsedilen ortam değişkenlerinden, bir kısmı 1.adım servis cevabından alınan
verilerden oluşmaktadır. Form değişken id’leri büyük küçük harf hassasiyeti içermektedir.
parametreler
mid YKB Üye İşyeri Numarası <%MERCHANT_ID%>
posnetID YKB Üye İşyeri POSNET Numarası <%POSNET_ID%>
posnetData Alışveriş ile ilgili bilgilerin bulunduğu data bloğu (oosResponseData XML ‘i
kullanılarak elde edilir.)
posnetData2 Kredi kartı ile ilgili bilgilerin bulunduğu data bloğu. (oosResponseData XML ‘i
kullanılarak elde edilir.) Bu alan boş bırakıldığında ortak ödeme sayfası kullanıcıya otm. olarak açılacaktır. Kullanıcının kart bilgilerini bu ekranda girmesi beklenir.
digest Gönderilecek FORM 'un imza bilgisi (oosResponseData XML ‘i kullanılarak elde
edilir.)
vftCode Vade Farklı işlemler için kullanılacak olan kampanya kodunu belirler.
Üye İşyeri için tanımlı olan kampanya kodu, İşyeri Yönetici Ekranlarına giriş yapıldıktan sonra, Üye İşyeri bilgileri sayfasından öğrenilebilinir.
useJokerVadaa Sadece TDS sistemini kullanacak Üye İşyerleri için, 3D-Secure doğrulamasından önce Joker Vadaa(üye işyerlerine özel ek taksit ve öteleme kampanyaları)
sorgulamasını ve kullanımını aktif etmek için kullanılır.
Opsiyoneldir. Eğer kullanılmak istenmiyor bu field’a form içerisinde yer verilmemelidir.
merchantReturnURL OOS/TDS sisteminden kart bilgileri alındıktan veya 3D-Secure işlemi
tamamlandıktan sonra, Üye İşyeri ‘nin sitesine yönlendirilecek olan sayfanın adresi. Eğer ki, bu parametre kullanılmaz ise, Posnet Üye İşyeri Ekranları ‘ndaki Üye İşyeri bilgileri sayfasında kayıt edilmiş olan adrese yönlendirme yapılmaya
çalışılır. Max 255 karakter <%MERCHANT_RETURN_URL%>
lang Posnet sistemindeki sayfaların dilini belirlemek için kullanılır. tr:Türkçe
en:İngilizce
url Yönlendirilen sayfanın adresi (URL – bilgi amaçlı)
YKB tarafından verilen Java Script fonksiyonu (posnet.js içerisindeki) tarafından
set edilir. Form içerisinde bulundurulması yeterlidir.
openANewWindow POST edilecek formun yeni bir sayfaya mı yoksa mevcut sayfayı mı yönlendirileceğini belirten parametre
YKB tarafından verilen Java Script fonksiyonu tarafından set edilir.
<%OPEN_A_NEW_WINDOW%>
Hazırlanan sayfadaki formun yönlendirilmesi (POST edilmesi) için iki yöntem mevcuttur.
1. Yeni bir pencere açılıp, bu formun açılan yeni bir pencereye POST edilmesi. Pop-up blocker problemleri ile karşılaşılabilir ve browserlardaki cross-domain kontrollerinden dolayı üye işyerinin geri dönüş sayfasına mevcut pencere üzerinden yönlendirilememe sorunu görülebilir.
2. Mevcut pencerede oluşturulan formun YKB 'ye direkt POST edilmesi. (önerilir)
Yönlendirme işleminin sağlıklı bir şekilde yapılabilmesi için YKB tarafından yazılmış bir JavaScript fonksiyonu (submitForm) kullanılabilir. Bunun için https://posnet.yapikredi.com.tr/3DSWebService/scriptler/posnet.js linkinde yer alan javascirpt kodu işyeri sistemine indirilerek referans gösterilmelidir. Banka sayfasında barındırılan linkin doğrudan kullanılması önerilmez.
1.
İlgili JavaScript fonksiyonununda (submitForm) yönlendirme öncesindeki aşağıdaki işlemler yapılmaktadır;
• “url” parametresinin, ilgili sayfanın adresi olarak set edilmesi,
• Yeni bir pencere açılacak ise, “openANewWindow” parametresinin “0” veya “1” olarak set edilmesi,
• Yeni pencere açılacaksa ana pencereye geri yönlendirme yapmak için “window.name” değerinin uygun olarak set edilmesi. Pencere boyutlarının ve özelliklerinin uygun değerlere set edilerek açılması.
Javascript kodu eklendikten sonra yönlendirme sırasında gönderilecek olan FORM ‘un ACTION değeri aşağıdaki şekilde ortam değişkeni ile değiştirilmelidir.
1.
31.
32.
Submit edilen form içerisinde şifrelenmiş kart bilgileri (posnetData2) bulunmuyorsa banka ortak ödeme sayfası aracılığı ile kullanıcıdan kart bilgilerini alınır.
Kullanıcı kart bilgilerini girerek Onayla butonuna bastığında ThreeD Secure doğrulama işlemi için kart sahibi banka ekranına yönlenir. Banka tarafından gönderilen SMS kodunun kullanıcı tarafından ekrana girilmesiyle doğrulama yapılmış olur.
3D-Secure doğrulama işleminin sonucunda kullanıcı üye işyerine sistemlerine geri yönlendirilir.
Bu yönlendirme sırasında, üye iş yerinin doğrulama sonucunu öğrenebilmesi ve ilgili işlemi
finansallaştırabilmesi için ek bilgiler HTML formunun içerisinde gönderilir. Bu aşama da işlem henüz finansallaşmamış, sadece kullanıcı/kart doğrulaması yapılmıştır.
Kullanıcının banka sayfalarından işyerine yönlenmesi
Yönlendirilen form içerisinde aşağıdaki verilerin yer aldığı görülecektir. Bu verilerden MerchantPackage, BankPackage ve Sign formdan okunarak finansallaştırma işleminde kullanılmak üzere tutulmalıdır. Diğer bilgiler işyerinin entegrasyon ve işlem güvenliğini sağlayabilmesi için bilgi amaçlı olarak paylaşılmaktadır ve işyeri sisteminin önceki adımlarda bildirdiği verilerden
oluşmaktadır.
HTML form içerisinde geri gönderilen bilgiler;
Bir kısmı giriş bölümünde bahsedilen ortam değişkenlerinden, bir kısmı 1.adım servisinden alınan
verilerden oluşmaktadır.
parametreler
MerchantPacket İşlem detayları datası (merchantData)
BankPacket İşlemin finansallaştırılması için kullanılacak data (bankData)
Sign Veri doğrulama bilgisi
CCPrefix İşlem yapılan kredi kartının ilk 6 hanesi. Bilgi amaçlı paylaşılmaktadır.
TranType İşlem tipi. Bilgi amaçlı paylaşılmaktadır.
Amount Alışveriş tutarı. Bilgi amaçlı paylaşılmaktadır.
Xid Tekil alışveriş sipariş numarası. Bilgi amaçlı paylaşılmaktadır.
MerchantId YKB Üye İşyeri Numarası. Bilgi amaçlı paylaşılmaktadır.
3. MAC/Kullanıcı Doğrulama Sonuç Sorgulanması
MAC Datasının oluşturulması
Kullanıcının banka tarafında ücretlendirileceği tutar ile işyeri tarafındaki sipariş tutarının
karşılaştırılabilmesi için MAC Datası oluşturulur. MAC Datası oluşturulurken işyeri tarafındaki tekil
işlem bilgileri ve ortam değişkenlerinden faydalanılmaktadır. SHA256 şifreleme algoritmasına UTF-8 byte array’e dönüştürülmüş string verilir ve sonuç Base64String’e dönüştülerek HASH’leme
tamamlanmış olur. HASH’leme işlemi için öncelikle EncryptionKey (encKey) ve terminalId değerleri arasına ‘;’ karakteri gelecek şekilde string birleştirme yapılır ve HASH’lenerek birinciHash oluşturulur. Sonrasında xid, amount, currency, merchantNo ve birinciHash değerleri aralarına ‘;’ karakteri gelecek şekilde tekrar string birleştirme yapılır ve HASH’lenir. Böylelikle MAC datasına ulaşılır.
encKey: 10,10,10,10,10,10,10,10
terminalID: 67005551
değerleri kullanıldığında birincli hash c1PPl+2UcdixyhgLYnf4VfJyFGaNQNOwE0uMkci7Uag= değerinin oluştuğu görülmelidir.
xid: YKB_TST_190620093100_024
amount: 175 currency: TL
merchantNo: 6706598320
firstHash: c1PPl+2UcdixyhgLYnf4VfJyFGaNQNOwE0uMkci7Uag=
değerleri kullanıldığında MAC datasının J/7/Xprj7F/KDf98luVfIGyUPRQzUCqGwpmvz3KT7oQ= değerinin oluştuğu görülmelidir.
JAVA kod örneği
C# kod örneği
1. private string HASH(string originalString) {
3. byte[] bytes = sha256Hash.ComputeHash(Encoding.UTF8.GetBytes(originalString));
5. }
7.
9. string MAC = HASH(xid + ';' + amount + ';' + currency + ';' + merchantNo
+ ';' + firstHash);
PHP kod örneği
1. Function hashString($originalString){
2. return base64_encode(hash('sha256',$originalString,true));
3. }
4.
5. $firstHash = hashString($encKey . ";" . $terminalID);
6. $MAC = hashString($xid . ";" . $amount . ";" . $currency . ";" . $merchantNo . ";"
. $firstHash);
Kullanıcı Doğrulama İşleminin Sorgulanması
TDS sisteminde, kullanıcı doğrulama bilgilerini girdikten sonra banka tarafında kullanıcının kaydı oluşturulur ve HTML form içerisinde ek bilgiler ile üye işyeri tarafına yönlendirilir. Bu bilgiler şifrelidir ve detaylara ulaşmak için oosResolveMerchantData servisi kullanılarak deşifre edilmesi gerekmektedir. Request gönderilmeden önce, oluşturulan XML yapısı UTF-8 URL Encode ile encode edildikten sonra önüne “xmldata=” stringi eklenir.
xmldata=%3CposnetRequest%3E%0D%0A++%3Cmid%3E şeklinde başlayan string <%XML_SERVICE_URL%> ‘e Content-Type=application/x-www-form-urlencoded ile POST edilir.
Request Örneği
Kullanıcı doğrulama sonucunun sorgulanması ve verilerin doğruluğunun teyit edilmesi için kullanılır.
posnetRequest
mid YKB Üye İşyeri Numarası <%MERCHANT_ID%>
tid YKB Üye İşyeri Termial Numarası <%TERMINAL_ID%>
oosResolveMerchantData
bankData 2.adımda yer alan kullanıcı doğrulama işlemi sonrasında banka ekranlarından
üye işyeri ekranlarına gönderilen html formdaki bankPacket verisi.
merchantData 2.adımda yer alan kullanıcı doğrulama işlemi sonrasında banka ekranlarından
üye işyeri ekranlarına gönderilen html formdaki merchantPacket verisi.
sign 2.adımda yer alan kullanıcı doğrulama işlemi sonrasında banka ekranlarından
üye işyeri ekranlarına gönderilen html formdaki sign verisi.
mac Üye işyeri ortamsal bilgiler ve tekil ödeme işlemine ait bilgilerin birleştirilmesi ile oluşturulan sistemler arası işlem tutarı doğruluğunu garanti eden veridir.
UTF-8 ile url encode edilmelidir. Bknz: MAC Datasının oluşturulması
Response Örneği
1.
2.
3. 1
4.
5.
6.
7. YKB_0000080603153823
8. 5696
9. TL
10. 00
11. 0
12. 0
13. N
14. 9
15. None 3D - Secure Transaction
16. ED7254A3ABC264QOP67MN
17.
18.
posnetResponse - oosResolveMerchantDataResponse
Banka tarafından merchantData verisi çözümlenir ve MAC Datası kontrolü ile bilgilerin güvenli bir şekilde aktarıldığı teyit edilmiş olunur. Bu paketten deşifre (decrypt) edilerek elde edilen xid ve amount bilgileri ile iş yeri tarafından satış işlemi aşamasına geçilirken (1.adım veri şifreleme) kullanılan xid ve amount bilgilerinin
birebir aynı olduğu mutlaka kontrol edilmelidir.
posnetResponse
approved İşlem sonucu.
0:Başarısız
1:Başarılı
respCode Hata kodu.
İşlem sonucunun başarısız olduğu durumda dikkate alınmalıdır. Hata Kodları
bölümünde açıklamalara yer verilmiştir.
respText Hata mesajı.
oosResolveMerchantDataResponse
xid Alışveriş sipariş numarası
amount Alışveriş Tutarı
Yeni kuruş cinsinden Ör: 1234 12.34 TL
currency Para Birimi TL: Türk Lirası
US: Amerikan Doları
EU: Euro
installment Alışveriş Taksit Sayısı Peşin işlem ise “00”
point İşlemde kullanılan kredi kartının sahip olduğu World Puan bilgisi Ör : 340
pointAmount İşlemde kullanılan kredi kartının sahip olduğu World Puan tutar bilgisi Ör : 170
1.70 TL
txStatus ThreeD Secure İşlem Durumu
mdStatus ThreeD Secure Onay Durumu
0: Kart doğrulama başarısız, işleme devam etmeyin 1: Doğrulama başarılı, işleme devam edebilirsiniz 2: Kart sahibi veya bankası sisteme kayıtlı değil
3: Kartın bankası sisteme kayıtlı değil
4: Doğrulama denemesi, kart sahibi sisteme daha sonra kayıt olmayı seçmiş 5: Doğrulama yapılamıyor
6: 3-D Secure hatası 7: Sistem hatası
8: Bilinmeyen kart no
9: Üye İşyeri 3D-Secure sistemine kayıtlı değil (Bankada işyeri ve terminal
numarası 3d olarak tanımlı değil)
mdErrorMessage ThreeD Secure Hata Mesajı
mac Banka tarafında doğrulama sorgusuna istinaden oluşturulan hashlenmiş MAC Data bilgisidir.
Cevabın bankadan döndüğü ve değiştirilmediğini görmek için işyeri tarafından
banka response MAC’i oluşturularak karşılaştırılmalıdır.
msStatus kullanıcı doğrulama (3D Secure) işleminin sonucunu belirtmektedir. Kullanıcı
doğrulaması yapılamamış bir işlem finansallaştırma adımı ile devam ettirilebilir ancak bu durumda
işyeri sorumluluğu kabul etmiş olur. Bu işlem 3d doğrulamasız (NonSecure) olarak adlandırılmaktadır.
Point ve PointAmount değerleri, Satış + Puan Kullanımı (Karma) işlem yapıldığında
kullanılmaktadır. Bu değerler, kart sahibinin kullanabileceği World Puan bilgilerini dönmektedir. Satış
+ Puan Kullanımı işlemi yapılırken, kart sahibinin ne kadar puan kullanacağı (wpAmount), geri dönüş sayfalarında girilmektedir. Dolayısıyla, Üye İşyeri kendi sayfalarında bu değerleri göstererek,
kullanıcıya kullanabileceği kaç puanı olduğunu gösterip, bu değer doğrultusunda kullanıcının puanını kullanmasını sağlayabilir.
Point ve PointAmount değerleri, diğer işlemler için “000000000” veya boş bir değer
dönmektedir. Satış + Puan kullanımı işlemi için ise; eğer ki puan sorgulama başarılı ise ilgili puan ve puan tutarı bilgilerini, başarılı değilse “-1” değerlerini dönmektedir. Puan değerinin, “-1” olarak
gelmesi, ilgili kredi kartı puan bilgilerinin sorgulanamadığını göstermektedir. Ancak, puan bilgileri üye işyerine geri dönülemediyse de, Satış + Puan kullanımı işlemine devam edilebilir.
Banka Response MAC Datasının teyit edilmesi
İş yerinin oosResolveMerchantDataResponse bilgisinin bankadan geldiğini teyit edebilmesi amacıyla banka tarafından üretilen MAC Datası oosResolveMerchantDataResponse içerisine
konulmuştur. İşyeri sistemine banka MAC Datasını kendisi oluşturarak, response içerisinde yer alan MAC Datası ile karşılaştırması tavsiye edilir. MAC karşılaştırması doğru sonuçlanmamışsa response bankadan gelmemiş demektir. Bu durumda işleme devam edilmemesi gerekir.
1. String MAC = HASH(mdStatus + ';' + xid + ';' + amount + ';' + currency + ';' + merch antNo + ';' + HASH(EncKey + ';' + terminalID))
Mac değeri oluşturulurken kullanılan parametrelerden mdStatus için oosResolveMerchantDataResponse objesindeki değer; xid, amount, currency, merchantNo, EncKey ve TerminalID değerleri üye işyeri tarafında işleme ait oluşmuş ve 1.adımda şifreleme servisine gönderilen ilk değerler kullanılmalıdır.
4. Finansallaştırma
İşlemin finansallaştırılabilmesi için 2.adım sonucunda kullanıcının işyeri sistemine yönlendirilmesi esnasında HTML form içerisinde dönen şifreli bankPacket verisi kullanılır. Finansallaştırma işlemi için aşağıdaki XML yapısı (oosTranData) oluşturulup UTF-8 URL Encode ile encode edildikten sonra önüne “xmldata=” stringi eklenir. xmldata=%3CposnetRequest%3E%0D%0A++%3Cmid%3E şeklinde başlayan string <%XML_SERVICE_URL%> ‘e Content-Type=application/x-www-form-urlencoded ile POST edilir.
Request Örneği
1.
2.
3. 6706022701
4. 67002706
5.
6. 87F491ACD24EAE64B519980F0B1BC7547BE4A7C5C614DC3A8CA3FC41B180EE7765
851B081AAE61221956C0C68B0AD69307B4386C7FCE451C272264251BD72BFCBA0A96A197C38C6CD39DD4
42BC179FF098824AFA15B1BB320AD15DA2FB588ECC81B11A26D13764A57B57B49C4CA1BD5D46FA7E60EE
D480C944AE0817
7. 0
8. DF2323A3BMC782QOP42RT
9.
10.
posnetRequest - oosTranData
Verilerin geçerli olup olmadığını kontrol eder ve ilgili işlemi finansallaştırır.
posnetRequest
mid YKB Üye İşyeri Numarası <%MERCHANT_ID%>
tid YKB Üye İşyeri Termial Numarası <%TERMINAL_ID%>
oosTranData
bankPacket İşlemin finansallaştırılması için kullanılan data (bankData)
wpAmount 1.adımda veriler şifrelenirken işlem tipi SaleWP (Satış + Puan karma kullanım) olarak set edilmişse kullanılır. Kuruş cinsindendir. Ör: 12.34 TL için 1234 olarak set
edilmelidir.
mac Üye işyeri ortamsal bilgiler ve tekil ödeme işlemine ait bilgilerin birleştirilmesi ile oluşturulan sistemler arası işlem tutarı doğruluğunu garanti eden veridir. UTF-8 ile url encode edilmelidir. Bknz: MAC Datasının oluşturulması
Finansallaştırma işlemi yapılmadan önce iş yerinin 3.adımda belirtilen Banka Response MAC Datasının teyit edilmesi adımını gerçekleştirmiş olduğu var sayılır. Eğer işyeri ve banka arasındaki entegrasyon bir şekilde kötü amaçlı yazılımlarla örnekleniyorsa bunu tespit etmenin yolu private key kullanılarak yapılmış şifrelemelerin karşılaştırılmasıdır. Bu karşılaştırma işyeri sistemlerince
yapılmadığı durumda oluşacak iş yeri maddi kayba uğrayabilir.
oosTranData modelindeki mac verisinin oluşturulması için işyeri sistemlerinde üretilmiş olan XID ve gerekli diğer bilgiler kullanılmalıdır.
1. String MAC = HASH(xid + ';' + amount + ';' + currency + ';' + merchantNo + ';' + HAS H(encKey + ';' + terminalID));
Response Örneği
posnetResponse - instInfo - pointInfo
Kullanıcı hesabına finansal etki eden işlem sonucu yer almaktadır.
posnetResponse
approved İşlem sonucu.
0:Başarısız, onaylanmadı 1:Başarılı, onaylandı
2:Daha önce başarıyla onaylanmış
respCode Hata kodu.
İşlem sonucunun başarısız olduğu durumda dikkate alınmalıdır. Hata Kodları bölümünde açıklamalara yer verilmiştir.
respText Hata mesajı.
mac Banka tarafından finansallaştırma talebine istinaden oluşturulan hashlenmiş MAC Data bilgisidir.
hostlogkey Referans numarası
authCode Onay kodu
instInfo - Taksit Bilgileri
inst1 Alışveriş taksit sayısı
amnt1 Alışveriş taksit tutarı
Kuruş cinsindendir. Ör : 12.34 TL için 1234 olarak yer almaktadır.
pointInfo - Puan Bilgileri
point Kazanılan puan
pointAmount Kazanılan puan tutarı
Kuruş cinsindendir. Ör : 12.34 TL için 1234 olarak yer almaktadır.
totalPoint Kullanılabilir toplam puan
totalPointAmount Kullanılabilir toplam puan tutarı
Kuruş cinsindendir. Ör : 12.34 TL için 1234 olarak yer almaktadır.
vft - VFT Bilgileri
vftAmount İşlem için hesaplanan ek vade tutarı
Kuruş cinsindendir. Ör : 12.34 TL için 1234 olarak yer almaktadır.
vftDayCount İşlem için hesaplanan ek vade gün sayısı
oosTranData Response’un banka tarafından gönderildiğinin teyidi içinse response’da dönen mac’i üye işyeri tarafında aşağıdaki gibi oluşturulan mac ile kontrol edilmesi tavsiye edilir.
1. String MAC = HASH(hostLogkey + ';' + xid + ';' + amount + ';' + currency + ';' + mer chantNo + ';' + HASH(EncKey + ';' + terminalID))
5. Hata Kodları
Yanlış parametre girilmesi veya posnete bağlanılması durumunda alınabilecek hata kodları ve gerçekleştirilmesi gereken aksiyonlar aşağıda belirtilmiştir.
Hata Kodu Yapılması Gereken
100 - OK Posnet sunucuyla iletişim başarıyla kuruldu. Ancak bu sonuç kodu,
işlemin başarılı olduğu anlamına gelmez. İşlemin başarılı olup olmadığını
anlamak için sunucudan alınan yanıtın kontrol edilmesi gerekmektedir.
101 - CONNECT_ERROR Bağlanılan sunucu ip’si kontrol edilmelidir.
103 - PACKET_ERROR Posnet sunucu aldığı paketi çözümleyemediğinde bu hata dönülür. Çözümleme işleminde kaynak ip (ownIP) kullanıldığından, bu parametrenin internete çıkış ip'niz ile aynı olduğundan emin olunmalıdır. IP Bazlı Hatalar sayfasındaki bilgiler de sorunu çözmenize yardımcı
olabilir.
113 - CONNECT_CONNECT Hostname parametresinin doğru set edildiği ve internet bağlantısı olduğu kontrol edilmelidir. Firewall vs. erişimlerini kontrol etmek için Hostname parametresine (adrese) telnet çekerek, erişim problemi olmadığı görülmelidir. (Örneğin komut satırından: telnet 193.254.228.53 2222). Telnet çekerken, port parametresine girilen değerin (dokümantasyonda aksi belirtilmedikçe 2222) telnet komutuna da girildiğinden emin olun (Posnet sunucuya ancak doğru porttan bağlanabilirsiniz, bu telnet için de geçerlidir).
Posnet sunucusuna telnet de çekemiyorsanız internet bağlantınızda bir sorun vardır. Örneğin firewall ayarlarınızda, posnet sunucuya doğru porttan çıkış verildiğinden emin olmalısınız. Birçok firewall sadece http
(80) ve https (8080) portundan çıkış yapılmasına izin vermektedir. Bu durumda izin verilen portlar arasına 2222'nin (veya dokümantasyonda belirtilen bağlantı portunun) eklenmesi gerekir.
internet bağlantınızda da bir sorun yoksa test destek grubuyla iletişim kurmalısınız.
115 - CONN_REFUSED Posnet sunucu bağlantı isteğinizi reddetti. Firmanızın Posnet sistemine işlem gönderebileceği IP'ler listesinde bulunmayan bir ip'den işlem denemiş olabilirsiniz. IP Bazlı Hatalar sayfasındaki bilgiler sorunu
çözmenize yardımcı olabilir.
120 - CGI_SERVLET_ERROR Bağlantı açıldı, ancak paket gönderilemedi.
121 - EXCHANGE_TIMEOUT Posnet sunucudan yanıt alınamadı. Internet bağlantınızda bir sorun
olabilir. Internet bağlantınızda bir sorun yoksa tekrar deneyin, sorun devam ederse test destek birimini arayın.
131 - ERROR_CCNO Kart No parametresi hatalı. Parametre açıklamalarına bakın.
132 - ERROR _HOSTLOGKEY Hostlogkey parametresi hatalı. Parametre açıklamalarına bakın.
133 - ERROR _AUTH Onay kodu parametresi hatalı. Parametre açıklamalarına bakın.
134 - ERROR _HOSTNAME Hostname parametresi hatalı. Parametre açıklamalarına bakın.
135 - ERROR _PORT Port parametresi hatalı. Parametre açıklamalarına bakın.
136 - ERROR _OWNIP Ownip parametresi hatalı. Parametre açıklamalarına bakın.
137 - ERROR _AMOUNT Tutar parametresi hatalı.Tutar bilgisini göndermeden önce son iki hanenin mutlaka kuruş olduğundan ve kuruş veya binler ayracı gibi ayraçlar kullanılmadığından emin olmalısınız. Örneğin 5,12 TL göndermek
için 512 değerini, 5 TL göndermek için 500 değerini girmelisiniz.
138 - ERROR _EXPDATE Kredi kartı son kullanım tarihi parametresi hatalı. Parametre açıklamalarına bakın.
139 - ERROR _CVC Kredi kartı güvenlik numarası (CVC) parametre hatalı. Parametre
açıklamalarına bakın.
140 - ERROR _TAKNUM Taksit parametresi hatalı. Taksit parametresi 2 karakter uzunluğunda ve numerik olmalıdır. Ör: 02. Eğer taksit yapılmayacaksa 00 veya 01 girilmelidir.
Taksitli olması zorunlu işlemlerde (örneğin VFT) taksit parametresinin 00 veya 01 girilmesi de bu hataya neden olur.
142 - ERROR _MIDNO Üye ışyeri numarası (MID) parametresi hatalı. Parametre açıklamalarına bakın.
143 - ERROR _TIDNO Terminal numarası (TID) parametresi hatalı. Parametre açıklamalarına
bakın.
144 - ERROR _ORDERID Sipariş numarası (ORDERID) parametresi hatalı. 20 karakter uzunluğunda
ve sadece harf ve rakamlardan oluşmalıdır. Bkz: Parametre açıklamaları.
146 - ENCRYPTION ERROR Şifreleme hatası. posnet.support@yapikredi.com.tr 'a mail atın.
147 - CURRENCY CODE ERROR Para birimi parametresi hatalı. CurrencyCode parametresine "TL" veya "YT" değerleri dışında bir değer girildiğinde alınır. Bu hatanın en sık
nedeni parametre olarak "YTL" girilmesidir.
156 - ERROR_VFT_CODE VFT Kampanya Kodu hatalı. Fix 4 karakter uzunluğunda olması gerekiyor.
180 - KATLI VE EKSTRA PUAN Aynı işlemde hem kat hem ekstra puan belirtilemez. Ya kat puan
parametresini 00, ya da ekstra puan parametresini 000000 girmelisiniz.
181 - ERROR_TXNSEQNO TranSeqNo parametresi hatalı. Parametre açıklamalarına bakın.
184 - ERROR_TRANTYPE İşlem tipi parametresi hatalı. Parametre açıklamalarına bakın.
185 - ERROR_BONUS Puan işlem tipi hatalı.
186 - ERROR_EXTRAPOINT Ekstra puan parametresi hatalı. Parametre açıklamalarına bakın.
187 - ERROR_MULTIPLE Katlı puan parametresi hatalı. Parametre açıklamalarına bakın.
Parametrelerde ve posnet sistemiyle iletişimde sorun olmadığı halde (iletişim hatası = 100) işlem onaylanmadığında alınabilecek hatalar ve gerçekleştirilmesi gereken aksiyonlar aşağıda belirtilmiştir.
Hata Kodu Açıklama Yapılması Gereken
0001 BANKANIZI ARAYIN 0001 Kart bu tip işleme izin vermiyor veya kartın kredisi
yetersiz. Kartı veren bankayı arayın.
0004 RED-KARTA EL KOY 0004 Kart Bloke edilmiş.
0005 RED-ONAYLANMADI Kart bilgilerinden ( KK No, SKT, CVV) biri yada birkaçı hatalı girilmiş veya Worldcard'lar için bankaca tanımlanmış günlük limitler aşılmış olabilir.
Kart bilgilerinin doğru girildiğinden emin olmak amacıyla, İşyeri Yönetici Ekranlarındaki “Online İşlemler”
sayfasından bir deneme işlemi yapılabilir. Bu işlemde de bu hatanın alınması kart bilgilerinin doğru gönderildiği anlamına gelir.
Bu hatanın bir diğer nedeni de, kart sahibi banka
tarafından belirlenen internetten günlük işlem yapma limitinin kart için dolmasıdır. Bu limit her bankaya göre değişmektedir ve YKB kredi kartları için 3'tür; yani bir YKB
kredi kartı günde en fazla 3 internet alışverişinde kullanılabilir. Bu limit aşıldıysa, kart sahibi kendi
bankasının kredi kartı müşteri hizmetlerini arayarak bu limiti sıfırlamalıdır.
Girilen tutar finansallaştırma işleminde provizyon
tutarından, iade işleminde de finansallaştırma tutarından büyük olamaz.
0007 BANKANIZI ARAYIN 0007 Kart bloke/çalıntı/kayıp statüsünde olabilir (özel durum).
0012 RED-GECERSIZ ISLEM Bu hatanın en sık rastlanan nedeni, yanlış miktarda taksit sayısıyla taksit yapmaya çalışmanızdır. En fazla kaç taksit yapabileceğinizi öğrenmek için 444 0 448'i aramalısınız.
Eğer test kartlarıyla işlem yapıyorsanız, bu bilgiyi posnet.support@yapikredi.com.tr adresinden
öğrenebilirsiniz. Genellikle normal işlemler için en fazla 9 taksit yapılabilmektedir.
0012 almanızın bir diğer nedeni de kullanılan kartın müsaade etmediği bir işlem yapmanızdır. Örneğin başka bankaya ait bir kredi kartına taksit yapmaya çalıştığınızda bu hatayı alırsınız.
Bu adımlar sorunu çözmenize yardımcı olamadıysa, bankamızdaki üye işyeri tanımlamalarınızda sorunlar
olabilir. Üye işyeri servisimizi arayıp üye işyeri no.nuzu ve hangi işlemi yaparken bu hatayı aldığınızı bildirmeniz
gerekmektedir.
0014 RED-HATALI KART 0014 Numara bir kredi kartına ait değil / Kart no hatalı.
0015 PROVIZYON BULUNAMADI Provizyon alınmamış. Provizyon iptal edilmiş olabilir.
Tekrar provizyon almalısınız.
0015 TERMINAL IŞLEM YETKISI YOK Terminal yetkisi işlem için uygun değil.
0015 IŞYERI STATÜSÜ HATALI Işyeri statüsü uygun değil.
0015 TAKSIT IÇIN YETERSIZ TUTAR Taksit için girilen tutar minimum tutarında altında ise bu
hata verilir.
0030 BANKANIZI ARAYIN 0030 Bu hatanın nedeni kartı veren (issuer) bankanın YKB provizyon sistemine gönderdiği bozuk verilerdir. Kartı veren banka aranmalı ve bir sanal pos işleminde bu hatanın alındığı belirtilmelidir. Hata çözümleninceye kadar sorunun geçici çözümü amacıyla, işlem mail order yoluyla YKB'ye gönderilebilir. Mail order yapmak için üye işyeri
servisimizi arayınız.
0041 RED-KARTA EL KOY 0041 Kayıp Kart - (444 0 448)' i arayınız.
0043 RED-KARTA EL KOY 0043 Sorunun nedeni işlemde kullanılan kredi kartının YKB provizyon sisteminde tutulan çalıntı kredi kartı listesinde bulunmasıdır. Işlem kart sahibi bankaya iletilmeden reddedilmektedir.
Sanal POS işlemlerinde kullanılan kredi kartları, çeşitli nedenlerle YKB tarafından karaliste benzeri bir listeye alınabilmektedir. Eğer kartın çalıntı listesinde
bulunmasının yanlış olduğunu (kartın güvenilir bir kart
olduğunu) düşünüyorsanız, YKB Üye Işyeri Operasyon Servisi'ni (444 0 448) aramalısınız.
0051 RED-YETERSIZ BAKIYE 0051 Kartın bakiyesi yetersiz. Kartı veren bankayı arayın.
0053 BANKANIZI ARAYIN 0053 Hesap bulunamadı.
0054 RED-ONAYLANMADI 0054 Son kullanım tarihi geçmiş olan kart.
0057 RED-ONAYLANMADI 0057 Yapılan işlem, kullanılan kart tipi ile yapılamaz
(Debit/kredi). Örnek: POSNET’ten debit kartla (ATM'lerden para çekmek için kullanılan banka kartları) işlem yapılamaz. Hata mesajında “X” olarak belirtilen yerde,
işlemin yapıldığı kartın tipi belirtilir (D: Debit/K: Kredi kartı).
0057 RED-ONAYLANMADI 0057 Bu hata, işlemde kullanılan kredi kartının internetten işlem yapma yetkilerinde bir sorun olduğu durumda alınır. Kart sahibi kredi kartını aldığı bankanın kredi kartları servisiyle görüşüp kredi kartını e-ticarette kullanamadığını
belirtmelidir.
0058 RED-ONAYLANMADI 0058 Terminalin işlem tipine yetkisi yok.
0062 RED-ONAYLANMADI 0062 Kısıtlı kart.
0065 RED-ONAYLANMADI 0065 Kredi kartının para çekme limiti aşıldığında verilen bu hata, normal durumlarda sanal pos işlemlerinde
dönülmemelidir. Bu hatanın alınması durumunda kartı veren (issuer) banka aranmalı, bir sanal pos işleminde bu hatanın alındığı belirtilmelidir. Hata çözümleninceye kadar sorunun geçici çözümü amacıyla, işlem mail order yoluyla YKB'ye gönderilebilir. Mail order yapmak için üye işyeri servisimizi arayınız.
0091 BANKANIZI ARAYIN 0091 Kartı veren (issuer) banka ile iletişimde zaman aşımı oldu (bankadan zamanında yanıt alınamadı). Tekrar deneyin;
sorun devam ederse, kartı veren bankayı arayıp, bir sanal pos işleminde bu hatanın alındığını belirtin.
0100 HOST RECEIVE PROBLEM Bu hata bazen banka sistemlerimizde anlık sorunlar olduğunda alınabilmektedir. Tekrar deneyin, sorun devam ederse posnet.destek@ykb.com adresiyle iletişime geçin.
Test ortamında bu hata alınıyorsa, sorunun nedeni
kullanılan test kartının tanımlarının silinmesi olabilir. Bu olasılığı ortadan kaldırmak için birkaç farklı test kartıyla işlem denemeniz gerekebilir.
0122 DATABASE DE ISTENILEN KAYIT YOK Iptal işleminde hata. Iptal işlemi provizyon işleminden 1 hafta sonrasına kadar yapılabilir. Finansallaştırma
yapılmadan finansallaştırma iptal yapıldığında da bu hata alınabilir.
Bu hatanın bir nedeni de daha önce firmanıza ait bir mid ile yaptığınız bir işlemi, firmanıza ait başka bir mid
kullanarak finansallaştırmak veya iptal etmek istemenizdir. Bunun en sık rastlanan yolu, bir mid kullanılarak yapılmış bir işlemin programsal olarak başka bir mid kullanılarak finansallaştırılması veya iptal edilmesidir.
0123 ORJINAL ISLEM BULUNAMADI Finansallaştırma, iptal veya iade edilmeye çalışılan işlem
bulunamadı. Muhtemelen yanlış YKB ref.no veya sipariş
no ile finansallaştırma/iptal yapmaya çalışıyorsunuz.
Finansallaştırmaya/iptal etmeye çalıştığınız işlem Posnet sistemine hiç gönderilememiş de olabilir.
VFT işlemlerinin iptalinde YKB ref.no ile iptal yapılıyorsa onay kodu (authCode) kontrolü de yapılmaktadır. Bu iptallerde bu hata alınıyorsa YKB ref.no ile birlikte onay kodu da kontrol edilmelidir.
Bir işlem için Posnet sisteminden yanıt alınamadığında, otomatik olarak iptal gönderilmesi üzerine bu hata
alınması normaldir; bu durum, işlemin Posnet sistemine hiç ulaşmadığını gösterir.
0124 HOST SESSION OPEN PROBLEM Bu hata, bankamızın ortamlarından kaynaklanmaktadır. Bazen bankamız ortamlarındaki çalışmalar nedeniyle anlık kesintiler yaşanabilmektedir. Bu hata alındığında işlem bir
süre sonra tekrar denenmeli, sorun devam ederse posnet.destek@ykb.com adresiyle irtibata geçilmelidir.
0125 ORDERID VAR HOSTLOGKEY YOK
DB ERR YKB’yi arayın.
0126 ORDERID VAR KK SIFRELEME
HATASI YKB’yi arayın.
0127 ORDERID DAHA ONCE
KULLANILMIS Kullandığınız sipariş no (orderId) daha önce kullanılmış.
Yeni bir sipariş no ile tekrar deneyin.
0129 KREDI KARTI MERCHANT BLACKLIST TE Bu kredi kartı işyeri karalistesine alınmış. Kartın bu işyeri tarafından kullanılabilmesi için önce karalisteden
çıkarılması gerekiyor.
0146* HATALI SIFRELEME: KULLANICI
ISMI & SIFRE veya NO GENERATED RECORD Kullanıcı adı, şifre veya şifreleme anahtarı yanlış
girilmektedir. Ayrıntılı bilgi için StubF1Class.setUserName, StubF1Class.setPassword,
StubF1Class.setEncKey metodlarına bakınız. İşyeri Yönetici Ekranlarının ana menüsündeki "Anahtar Yarat" linki
kullanılarak yeni kullanıcı adı, şifre ve anahtar oluşturulup, bu bilgilerle işlem tekrar denenmesi gerekir.
0147* HATALI KULLANICI ISMI & SIFRE 146 hatasının açıklamalarına bakın.
0148* CRYPTO HATASI: MID Web sunucunuzun tarihi, saati veya TimeZone bilgisi yanlış olabilir. Bu bilgilerde bir sorun yoksa Teknik Destek
birimimize başvurulmalıdır.
Gönderdiğiniz bilgileri karşılayan Posnet Servisi, bazı şifreli bilgilerin açılmasında tarih ve saatten faydalanmaktadır. Sunucunuzun tarih veya saatinin yanlış olması durumunda
bu bilgiler servis tarafından çözümlenememektedir.
0148* HATALI MID Üye işyeri no bulunamadı. Üye işyeri no (MID) parametresi
yanlış.
0148* MID,TID,IP HATALI: X.X.X.X Bağlantı yaparken kullandığınız mid (üye işyeri no) yanlış veya izin verilmemiş bir ip'den bağlantı yapmaya
çalışıyorsunuz. Yanlış ortama (örneğin üretim ortamı mid'i
ile test ortamına) işlem göndermeniz de bu soruna neden olur.
Test ortamı için https://setmpos.ykb.com/PosnetWebService/XML üretim ortamı için
https://posnet.yapikredi.com.tr/PosnetWebService/XML
adresine işlem göndermelisiniz.
Işleminizi doğru ortama gönderdiğinizden eminseniz, hata mesajında X.X.X.X şeklinde belirtilen istek ip'nizi posnet.destek@ykb.com adresine mid/tid bilgisiyle
birlikte göndererek ip tanımınızın değiştirilmesini sağlayabilirsiniz.
0150 PAKET HATALI Yanlış CVC no kullanılmış. Üretim ortamında, test ortamında kullanılan XXX kullanılmışsa bu hata alınır.
Üretim ortamında CVC kodları müşteriniz tarafından
girilmelidir. Ayrıca test ortamında XXX dışında anlamsız bir CVC (xxx gibi) girilmesi de bu hataya neden olur.
0150 INVALID MID TID IP Yanlış bir ip'den veya yanlış bir mid/tid ile işlem yapmaya çalışıyorsunuz. IP Bazlı Hatalar sayfasındaki bilgiler sorunu
çözmenize yardımcı olabilir.
0200 GECERSIZ ISLEM Geçersiz bir işlem gönderdiğinizde alınır. Örneğin zaten finansallaştırılmış bir işlemi tekrar finansallaştırmaya veya provizyon durumundaki bir işlemi iade etmeye çalışmak. Bu tür hatalı işlemlere İşyeri Yönetici Ekranlarında zaten izin verilmez, ancak programsal olarak gönderilen (ASP gibi bir teknoloji kullanılarak) işlemlerde bu kontrol
yapılmaktadır.
0205 GECERSIZ TUTAR Bu hata şu koşullarda alınmaktadır:
• Yapılan işlemin tutarı maksimum işlem tutarını (99.999,99 TL) aştığında.
Posnet sisteminde bir defada en fazla 99.999,99 TL'lik işlem yapılabilir.
• Finansallaştırma işlemi yapılırken gönderilen işlem tutarı, provizyon işlem tutarını "provizyon aşım yüzdesi"nden fazla aştığında
• Tüm iade işlemlerinde, gönderilen işlem tutarı iade edilebilecek işlem tutarını aştığında
0211 GRUP KAPAMA YAPILMIS Bu hata finansallaşma veya satış iptal işlemini yaparken
alınır. Iptal etmek istediğiniz işlemin finansallaştırıldığı için artık iptal edilememektedir. Yapmış olduğunuz
finansallaştırma veya satışı iade etmek için iade işlemi yapmalısınız.
0217 GEÇERSIZ IŞLEM STATÜSÜ Çalıntı kart. Kullanıcı ve kart no YKB’ye bildirilmelidir.
0220 IPTAL ISLEMI YAPILMIS Zaten iptal edilmiş bir işlem tekrar iptal edilmeye
çalışıldığında alınır.
0223 ONAYLANMADI Finansallaştırma yapılmadan finansallaştırma iptal
yapılmak isteniyor.
0232 KREDIKARTI IŞLEM SINIRI AŞILDI Posnet sisteminde Üye Işyeri tarafından tanımlanmış, belli bir periyotta bir kredi kartı ile işlem yapılabilecek
maksimum sayı aşıldığı vakit ilgili hata oluşur. Bkz. Işlem Kısıtlama
0370 ISLEM IPTALI YAPILMIS Iptal işlemi zaten yapılmış.
0400 DB ERROR Posnet sunucu teknik bir sorun yaşıyor. Tekrar deneyin,
sorun tekrar ederse teknik destek ile iletişim kurun.
0411 ISLEM HENUZ FINANSALLASMAMIS Iade yaparken alınan bu hata, finansallaştırma işleminde belirtilen tutarın henüz karttan tahsil edilip hesabınıza yansımadığını gösterir. Bu nedenle iade işlemi yapmanıza
gerek yoktur, finansallaştırma iptal yapmalısınız.
0444 BANKANIZI ARAYIN YKB’yi arayın.
0450 IADE ISLEMI YAPILAMIYOR İşyeri yönetici ekranları dışından iade edilmiş olabilir.
Işlemi daha önce üye işyeri servisimizi arayarak iade etmiş olabilirsiniz. Eğer böyle bir iade talebiniz olmadıysa, üye
işyeri servisimizi aramanız gerekmektedir.
0788 FINANSAL ISLEM YAPILMIS Finansallaştırma yapılmış. Provizyon iptal edilmek
isteniyorsa önce finansallaştırma iptal edilmeli.
Canlı Ortama Geçiş Adımları
Test ortamında testlerinizi tamamladıktan sonra canlı ortama geçiş talebi posnet.support@yapikredi.com.tr adresine gönderecek mail ile belirtilmelidir. Gönderilecek mail
ekinde örnek işlemler için ayırt edici (MERCHANT_ID, TERMINAL_ID, POSNET_ID, SOURCE_IP, ORDER_NO, TRANSACTION_DATE vb.) bilgiler ve işlem yapılan tarih(ler)e yer verilmelidir.
Posnet sistemlerine gönderilmiş işlemler için her Request Header’ında X-MERCHANT-ID, X- TERMINAL-ID, X-POSNET-ID, X-CORRELATION-ID bilgileri eklenmiş olduğundan emin olunmalıdır.
1. İşyeri yönetim ekranları aracılığı ile MERCHANT_ID, TERMINAL_ID, POSNET_ID bilgileri öğrenilir.
2. İşyeri canlı ortam uygulamasına ortam değişkenleri ve XML_SERVICE_URL, kullanılıyorsa OOS_TDS_SERVICE_URL eklenir.
3. Canlı ortam IP bilgileri işyeri yönetim ekranları aracılığı ile sisteme tanımlanır.
Ortam değişkeni olarak tanımlanmış olan değişkenler canlı ortamda kullanılacak şekilde işyeri uygulama konfigürasyonları güncellenir.
Key Type Description Sample Data
MERCHANT_ID String 10 haneli YKB üye işyeri
numarası 6706598320
TERMINAL_ID String 8 haneli YKB üye işyeri
terminal numarası 67005551
POSNET_ID String 16 haneye kadar YKB üye
işyeri POSNET numarası. 3D Secure şifreleme
işlemlerinde
kullanılmaktadır. 9644
XML_SERVICE_URL String Banka entegrasyon servis
adresi https://posnet.yapikredi.com.tr/Po
snetWebService/XML
OOS_TDS_SERVICE_U
RL String Banka ortak ödeme ve 3D
Secure sayfa adresi https://posnet.yapikredi.com.tr/3D
SWebService/YKBPaymentService
ENCKEY String Şifreleme anahtarı <%LIVE_ENCKEY %>
MERCHANT_INIT_URL String Üye işyerinin işlem yaptığı
web sitesi adresi https://www.example.com
MERCHANT_RETURN_ URL String Form yönlendirmesinin geri yapılacağı işyeri sayfa adresi.
Max 255 karakter https://www.example.com/Payme ntResult
OPEN_A_NEW_WIND OW Boolean POST edilecek formun yeni bir sayfaya mı yoksa mevcut
sayfayı mı yönlendirileceğini belirten parametre 0
İşyeri 3D güvenli ödeme yapıyorsa veya Posnet’in sağladığı ortak ödeme sayfasını kullanıyorsa 3D Secure (3 Boyutlu Güvenlik) aktif demektir ve işyerinin müşterisi yani son kullanıcı işyeri
ekranlarından banka ekranlarına yönlendirilecek ve banka ekranlarındaki güvenlik ve doğrulama adımlarından geçtikten sonra tekrar işyeri ekranına geri gönderilecektir. Müşterinin networkler arasındaki geçişi güvenlik açığı yaratmaması için 3DS ödeme akışlarında MAC doğrulaması
yapılmaktadır. MAC datasının oluşturulabilmesi için işyeri yönetim ekranlarından Anahtar Yaratma adımı takip edilerek canlı ortam için ENCKEY değeri set edilmelidir. Bu değerin Türkçe karakter ve boşluk içermemesine dikkat edilmelidir.
Tarihçe
Tarih Versiyon Açıklama Hazırlayan
12.05.2019 2.0 beta Geliştirme ortamı (.net, java, php vs.) bazlı hazırlanmış dokümanlar referans alınarak platform bağımsız entegrasyon dokümanı oluşturulmuştur.
• Verilerin Şifrelenmesi
• Kullanıcı Doğrulama
• Mac/Kullanıcı Doğrulama Sonuç Sorgulanması
• Finansallaştırma
• Hata Kodları Kemal Koray Pekdemir
-
Sanal Pos ve Kampanya Uygulama
Geliştirme
20.06.2019 2.0.1
beta MAC oluşturma PHP kodları eklenmiştir. Format düzenlemeleri yapılmıştır. Nazım Sezer
-
Sanal Pos ve Kampanya Uygulama
Geliştirme
30.07.2019 2.0.1.3
beta TCKN, Kredi kartı ilk6 ve son4 hane ile ödeme işlemleri desteklenmiştir. Nazım Sezer
-
Sanal Pos ve Kampanya Uygulama
Geliştirme
14.12.2020 2.0.1.4 oosTranData servisinin response’unda dönen mac’in nasıl hesaplandığı eklendi. Enes
Köksalmış – Sanal Pos ve Kampanya Uygulama
Geliştirme
10.01.2023 2.0.1.5 Order ID parametre geliştirmesi ile ilgili bilgiler eklendi. Tuba Çinal - Sanal Pos ve Kampanya Uygulama
Geliştirme