iyzico API Dokümantasyonu Yazarlar: Hakan ERDOĞAN Sabri Onur TÜZÜN Versiyon: 1.2
Değişiklik Tarihçesi Tarih Yazar Versiyon Gerekçe 28/09/15 Hakan ERDOGAN, Sabri Onur Tüzün 1.0 İlk taslak döküman 02/05/16 Sabri Onur Tüzün 1.1 Ön otorizasyon & Son otorizasyon desteği 31/05/16 Emre Fındık 1.2 Sandbox/Test ve node.js ile ilgili bilgilerin eklenmesi
İçindekiler iyzico API Dokümantasyonu... 1 1 Başlarken... 4 2 API Servisleri... 5 2.1 API Servisleri, Ortak İstek (Request) ve Sonuç (Response) Alanları... 6 3 Pazaryeri Çözümü... 8 3.1 Alıcı ve Satıcı Sözleşmeleri... 9 3.1.1 Alternatif - 1: Üyelik Sırasında Sözleşme Onaylatma... 10 3.1.2 Alternatif - 2: Ürün Listeleme ya da Ürün Ödeme Sayfasında Kayıt... 10 3.2 Alt Üye İşyeri Kaydı... 11 3.2.1 Yeni Alt Üye İşyeri Ekleme... 11 3.2.2 Alt Üye İşyeri Güncelleme... 19 3.3 Tahsilat... 22 3.3.1 Ödeme... 22 3.3.2 İptal... 69 3.3.3 İade... 71 3.3.4 Ön Otorizasyon... 74 3.3.5 Son Otorizasyon... 83 3.4 Para Transferi İçin Ürüne Onay Verme... 89 3.4.1 Ürüne Onay Verme... 90 3.4.2 Verilen Onayı Geri Çekme... 91
1 Başlarken Lisanslı bir ödeme kuruluşu olan iyzico, 6493 sayılı Ödeme ve Menkul Kıymet Mutabakat Sistemleri, Ödeme Hizmetleri ve Elektronik Para Kuruluşları Hakkında Kanunu na uyumlu ve hem standart e- ticaret hem de pazaryerlerinin ihtiyaçlarını karşılayan bir ürün sunmaktadır. Kanun kapsamında para toplama (collection) ve dağıtma (settlement) yetkisi Ödeme Kuruluşları tarafından yapılması gerekmektedir. iyzico ödeme API si, internet üzerinden ödeme kabul eden tüm üye işyerlerine hitap edecek bir şekilde, oturum bilgisi tutmayan (stateless) Restful servis odaklı bir mimaride geliştirilmiştir. İletişim, şifreleme (PKI: public key infrastructure), veri sarmalama (data marshalling) ve veri çözme (data unmarshalling) için mutlaka bir API istemcisi (client) kullanmak gerekir. İyzico; Java.Net PHP Ruby on Rails (RoR) Phyton Node.js dillerinde yazılmış API istemcileri sunar. Üye işyeri kendi programlama diline göre uygun API istemcisini seçmelidir. İyzico API entegrasyonu için temelde 3 bilgiye ihtiyaç vardır: API Base URL : Ortam (sandbox) bazlı API servis ana linkidir. Örnek: https://sandbox- api.iyzipay.com API Key : Üye işyeri açık API anahtarıdır. Bu anahtar iyzico sandbox ile iletişimde kullanılır fakat kimseyle paylaşılmaz. Örnek: sandbox- Txl2ctiktW6BrNmFo10pZiPn8W67Ksob Secret Key : Üye işyeri gizli API güvenlik anahtarıdır. Bu anahtar iyzico sandbox ile iletişimde kullanılmaz ve kimseyle paylaşılmaz. Örnek: sandbox- GdzIHrXly6gqDmXGcQl
İyzico API entegrasyonu, ilk olarak Sandbox test ortamında yapılmalıdır. İyzico API; hem pazaryeri hem de pazaryeri olmayan standart e- ticaret firmalarının entegrasyonu için kullanılabilir. Pazaryeri olmayan standart e- ticaret firmaları API Servisleri başlığında belirtilen mavi renkli servisleri kullanmalıdırlar. 2 API Servisleri İyzico API; aşağıdaki servislerden oluşmaktadır. Üye işyeri ile paylaşılan API istemcisi bu API servislerine istekte bulunmakta ve veri alışverişini, şifrelemeyi ve güvenliği üye işyeri adına basitçe halletmektedir. Aşağıdaki tabloda iyzico API servis listesi bulunmaktadır. Bu tabloda kırmızı renkle belirtilen servisler sadece Pazaryeri/Marketplaces Çözümü için geçerlidir, pazaryeri olmayan e- ticaret firmaları kırmızı renkle belirtilen servisleri göz önünde bulundurmayıp, mavi renkle belirtilen diğer servisleri kullanmalıdırlar.
# API Servis (Endpoint) İsmi API Servis (Endpoint) URL Method 1 Yeni Alt Üye İşyeri Ekleme Servisi /onboarding/submerchant POST 2 Alt Üye İşyeri Güncelleme Servisi /onboarding/submerchant PUT 3 Ödeme (Auth) Servisi /payment/iyzipos/auth/ecom POST 3D Secure Ödeme (initialize 3DS) Başlatma POST 4 Servisi /payment/iyzipos/initialize3ds/ecom 5 3D Secure Ödeme (Auth 3DS) Servisi /payment/iyzipos/auth3ds/ecom POST 6 Ön Otorizasyon (PreAuth) Servisi /payment/iyzipos/preauth/ecom POST 7 Son Otorizasyon (PostAuth=Capture) Servisi /payment/iyzipos/postauth POST 8 İptal (Cancel) Servisi /payment/iyzipos/cancel POST 9 İade (Refund) Servisi /payment/iyzipos/refund POST İade (Refund) Servisi - İadeyi Üye İşyerinin POST 10 Üstlendiği /payment/iyzipos/refund/merchant/charge Para Transferi İçin Ürüne Onay Verme POST 11 Servisi /payment/iyzipos/item/approve Para Transferi İçin Ürüne Verilen Onayı Geri POST 12 Çekme Servisi /payment/iyzipos/item/disapprove Mahsuplaşma - Alt Üye İşyerine Para POST 13 Gönderme Servisi /crossbooking/send Mahsuplaşma - Alt Üye İşyerinden Para POST 14 Alma Servisi /crossbooking/receive 15 Servis Ayakta mı Testi (Healthcheck) /payment/test GET 16 BIN Kontrol Servisi /payment/bin/check POST 17 Taksit Matrisi (Installment) Servisi /payment/iyzipos/installment POST 18 Ödemeden Bağımsız Kart Ekleme Servisi /cardstorage/card POST 19 Ödemeden Bağımsız Kart Silme Servisi /cardstorage/card DELETE Ödemeden Bağımsız Kart Bilgilerini Çekme POST 20 Servisi /cardstorage/cards 21 Parası Transferi Yapılan İşlemler Servisi /reporting/settlement/payoutcompleted POST Para Transferi Bankadan Geri Dönenler POST 22 Servisi /reporting/settlement/bounced 2.1 API Servisleri, Ortak İstek (Request) ve Sonuç (Response) Alanları API servislerine mutlaka iyzico istemcileri (client) ile erişim sağlanması gerekmektedir, zira iyzico istemcileri sizin adınıza yetkilendirme ve veri gönderip almayı kolaylaştırır.
Yapılan tüm servis isteklerinde; Request Header ın içinde Authorization ve x- iyzi- rnd parametreleri bulunmalıdır. İyzico istemcileri bunu sizin adınıza halleder. Aşağıdaki istek parametreleri opsiyonel olarak gönderilebilir: Input İsmi Veri Tipi Zorunlu Açıklama locale String Hayır iyzico istek snucunda dönen metinlerin dilini ayarlamak için kullanılır. Varsayılan değeri tr dir. conversationid String Hayır İstek esnasında gönderip, sonuçta alabileceğiniz bir değer, request/response eşmesi yapmak için kullanılabilir Aşağıdaki sonuç parametreleri dönülür. Sonuç (status) başarılı (success) ise yapılan isteğe özel diğer alanlar dolu gelecektir: Veri Tipi Output İsmi Açıklama Yapılan isteğin sonucunu bildirir. İşlem başarılı ise success, status String hatalı ise failure döner errorcode String İşlem hatalıysa, bu hataya dair belirtilen koddur İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale errormessage String parametresine göre dil desteği sunar errorgroup String İşlem hatalıysa, bu hataya dair belirtilen gruptur İstekte belirtilen locale değeri geri dönülür, varsayılan değeri tr dir locale String conversationid String İstek esnasında gönderilmişse, sonuçta aynen geri iletilir systemtime Long Dönen sonucun o anki unix timestamp değeridir
3 Pazaryeri Çözümü iyzico pazaryeri çözümünü detaylı anlayabilmek için klasik bir pazaryerinin akışı aşağıda gösterilmiştir, bu örneğe göre pazaryeri altında satış yapan 3 adet Alt Üye İşyeri (= satıcı = submerchant) olsun. Bu alt üye işyerleri bireysel (C2C), şahıs şirketi (b2c) veya tüzel kişilik (B2C) olabilirler. Bir alıcı 100 TL lik bir sepet oluşturup 3 farklı satıcıdan, örneğin A satıcısından 30 TL lik, B satıcısından 50 TL lik ve C satıcısından 20 TL lik 3 farklı ürün alabilir. Bilindiği üzere escrow ürün bazındadır, her ürünün satıcısı farklı olabileceği için sepette yer alan her bir ürünün durumu da farklılık gösterebilir. Örneğin A satıcısı ürünü kargolamış, alıcının eline ulaşmış ve ürüne onay verilmiş olabilir, B satıcısının ürünü iade edilmiş/işlem iptal edilmiş, C satıcısının ürünü ise henüz kargo yapılmak üzere bekliyor olabilir.
iyzico; satıcı ve alıcı arasındaki escrow a müdahil olmaz, ödemenin tahsilatına aracılık eder ve sepetteki ilgili ürün için üye işyerinden para transferine onay verilmesini bekler, bu süre zarfında alıcının parası bankada korumalı havuz hesapta beklemektedir. iyzico Pazaryeri Çözümü genel olarak para toplama (collection) ve dağıtma (settlement) süreçlerinin kapsamaktadır ve entegrasyonda 3 ana adım bulunmaktadır. Adımlar sırasıyla şu şekildedir: Alt Üye İşyeri Kaydı Ödeme Para Transferi İçin Ürüne Onay Verme Para transferinin satıcılara (alt üye işyerlerine) yapılabilmesi için bu satıcıların iyzico ya tek seferlik kaydının yapılması gerekir, bu da onboarding API ile sağlanır. Üye işyeri satıcıyı iyzico ya kaydettiği anda, istek dönüşünde o satıcı için submerchankey alır. Ödeme esnasında da sepetteki her bir ürünün satıcısı için ilgili submerchantkey ve bu işlemde satıcıya kaç para gönderilecek (submerchantprice) iletilmelidir. Satıcı ve alıcı arasında escrow tamamlanınca da para transferi için ürüne onay verilmelidir. Entegrasyona geçmeden önce mutlaka alıcı ve satıcıların iyzico sözleşmesini kabul etmesi gerekmektedir. 3.1 Alıcı ve Satıcı Sözleşmeleri Pazaryerinizde ödeme akışı iyzico tarafından kontrol edileceği için; alıcılarınızın da satıcılarınızın da birer iyzico üyelikleri bulunması gerekmektedir. Bunun için de hem alıcılarınızın hem de satıcılarınızın https://www.iyzico.com/pazaryeri- anlasma sayfasındaki iyzico sözleşmesini tek seferlik dijital olarak onaylamalarını sağlamalısınız. Üyelerinize web siteniz üzerinden iyzico hizmet şartlarını iki ayrı şekilde onaylatabilirsiniz. Üyelik sırasında Ürün listeleme ya da ürün ödeme sayfasında Her bir üyeniz için bu işlem tek bir defaya mahsustur. iyzico hizmet şartlarını bir önceki listelemesinde ya da ürün ödemesinde kabul etmiş olan üyenizin, sonraki listeleme ya da ödeme aşamalarında sözleşmeyi tekrardan onaylaması gerekmeyecektir.
3.1.1 Alternatif - 1: Üyelik Sırasında Sözleşme Onaylatma Web sitenizdeki üyelik formunun altına iyzico Platform Kullanım Sözleşmesi ni https://www.iyzico.com/pazaryeri- anlasma linkinden iframe ile çekebilir ve pazaryerinize üye olmak isteyen kişilerin aynı zamanda iyzico ya da otomatik olarak kayıt olmalarını sağlayabilirsiniz. 3.1.2 Alternatif - 2: Ürün Listeleme ya da Ürün Ödeme Sayfasında Kayıt Bu alternatifi kullanarak ayrı ayrı yönlendirmelerle satıcı ve alıcılarınızın iyzico hizmet şartlarını onaylamasını, dolayısıyla birer iyzico üyeliklerinin olmasını sağlayabilirsiniz. 3.1.2.1 Satıcılarınız için iyzico kaydı: Web siteniz üzerinden ürün satmak isteyen satıcı üyenize, ürün listeleme bölümlerinin herhangi bir aşamasında https://www.iyzico.com/pazaryeri- anlasma linkinden iyzico hizmet şartlarını iframe ile çekebilir ve satıcılarınıza onaylatabilirsiniz.
3.1.2.2 Alıcılarınız için iyzico kaydı: Alıcılarınız da almak istedikleri ürün için ödeme yapacakları sayfada tek sefere mahsus, aynı şekilde iyzico hizmet şartlarını kabul ederek; ürünü teslim alıp onay verene kadar paralarının güvenli bir şekilde iyzico havuz hesabında bekletileceğini kabul etmelidir. 3.2 Alt Üye İşyeri Kaydı Pazaryeri çözümünde işlem onaylandıktan sonra satıcılara para transferi yapılabilmesi için bu satıcıların iyzico da kaydının bulunması gerekir. Pazaryeri; zaten bu satıcı bilgilerine sahip olduğu için, iyzico Onboarding API sine satıcı bilgilerini göndererek satıcı kaydını oluşturduktan sonra bu bilgileri çekip güncelleyebilir. 3.2.1 Yeni Alt Üye İşyeri Ekleme Pazaryeri altındaki alt üye işyerleri 3 tipte olabilirler: bireysel, şahıs şirketi veya limited/anonim şirket. Her tip için alt üye işyeri kaydında gönderilen parametreler farklılık göstermektedir. Alt üye işyeri kaydı yapıldığında response alanında dönen submerchantkey, o satıcı için tekil değerdir, bu değeri sisteminizde saklamalısınız, ödeme esnasında satıcıyı belirtmek için submerchantkey i göndermeniz gerekecektir.
Not: iyzico ya iletilen tüm parametreler gerçek değerleri içerecek şekilde iletilmelidir, rastgele, test veya gerçek olmayan bilgiler iletilmemelidir. 3.2.1.1 Bireysel Alt Üye İşyeri Ekleme Pazaryeri satıcınız eğer bireysel ise (C2C) aşağıdaki input parametrelerini gönderip bireysel satıcılarınızın iyzico ya kaydını sağlayabilirsiniz. API Servis (Endpoint) İsmi: /onboarding/submerchant Method: HTTP POST Input İsmi Veri Tipi Zorunlu Açıklama name String Hayır Alt üye işyeri adı gsmnumber String Hayır Alt üye işyeri telefon numarası contactname String Evet Alt üye işyeri sahibinin adı. IBAN ile uyumlu olmalı contactsurname String Evet Alt üye işyeri sahibinin soyadı. IBAN ile uyumlu olmalı email String Evet Alt üye işyeri e-posta adresi address String Evet Alt üye işyeri adresi iban String Hayır ** Alt üye işyeri IBAN bilgisi. contactname ve contactsurname ile belirtilecek ad soyada ait bir IBAN olmalı. Eğer alt üye işyeri ekleme esnasında boş bırakılırsa, ürüne onay vermeden önce mutlaka doldurulmalıdır submerchantexternalid String Evet Alt üye işyeri tekil dış ID si, sizin sisteminizdeki ID olabilir identitynumber String Hayır ** Alt üye işyeri T.C. kimlik numarası. Eğer alt üye işyeri ekleme esnasında boş bırakılırsa, ürüne onay vermeden önce mutlaka doldurulmalıdır submerchanttype String Evet Bireysel için PERSONAL enum değeri gönderilmeli İstek sonucu dönen değerler aşağıdaki gibidir: Output İsmi Veri Tipi Açıklama submerchantkey String Alt üye işyerini simgeleyen tekil değer. Örnek Java İstek Kodu: ClientConfiguration configuration = new ClientConfiguration(); configuration.setapikey("api key"); configuration.setsecretkey("secret key"); configuration.setbaseurl("https://sandbox- apiiyzipay.com"); OnboardingServiceClient client = new OnboardingServiceClientImpl(configuration);
CreateSubMerchantRequest request = new CreateSubMerchantRequest(); request.setlocale(requestlocaletype.tr.getvalue()); request.setconversationid("123456789"); request.setsubmerchantexternalid("b49220"); request.setsubmerchanttype(submerchantrequesttype.personal.name()); request.setaddress("nidakule Göztepe İş Merkezi Merdivenköy Mah. Bora Sok. No:1 Kat:19 Bağımsız 70/73 Göztepe Kadıköy 34732"); request.setcontactname("sabri Onur"); request.setcontactsurname("tüzün"); request.setemail("email@submerchantemail.com"); request.setgsmnumber("+905350000000"); request.setname("sabri Onur'un mağazası"); request.setiban("tr180006200119000006672315"); request.setidentitynumber("31300864726"); CreateSubMerchantResponse response = client.createsubmerchant(request); System.out.println("conversationId="+response.getConversationId()); System.out.println("locale="+response.getLocale()); System.out.println("status="+response.getStatus()); System.out.println("errorCode="+response.getErrorCode()); System.out.println("errorMessage="+response.getErrorMessage()); System.out.println("errorGroup="+response.getErrorGroup()); System.out.println("systemTime="+response.getSystemTime()); System.out.println("subMerchantKey="+response.getSubMerchantKey()); Örnek Java Sonuç Çıktısı: conversationid=123456789 locale=tr status=success errorcode=null errormessage=null errorgroup=null systemtime=1443687828497 submerchantkey=l4fcfyciof0patp6687dooch9po= Örnek Java İstek Koduna Ait JSON Çıktısı: {
"locale" : "tr", "conversationid" : "123456789", "name" : "Sabri Onur'un mağazası", "email" : "email@submerchantemail.com", "gsmnumber" : "+905350000000", "address" : "Nidakule Göztepe İş Merkezi Merdivenköy Mah. Bora Sok. No:1 Kat:19 Bağımsız 70/73 Göztepe Kadıköy 34732", "iban" : "TR180006200119000006672315", "contactname" : "Sabri Onur", "contactsurname" : "Tüzün", "submerchantexternalid" : "B49221", "identitynumber" : "31300864726", "submerchanttype" : "PERSONAL" } Örnek Java Sonuç Koduna Ait JSON Çıktısı: { "status" : "success", "locale" : "tr", "systemtime" : 1443687828497, "conversationid" : "123456789", "submerchantkey" : "l4fcfyciof0patp6687dooch9po=" } 3.2.1.2 Şahıs Şirketi Alt Üye İşyeri Ekleme Pazaryeri satıcınız eğer Şahıs Şirketi ise aşağıdaki input parametrelerini gönderip Şahıs Şirketi satıcılarınızın iyzico ya kaydını sağlayabilirsiniz. API Servis (Endpoint) İsmi: /onboarding/submerchant Method: HTTP POST Input İsmi Veri Tipi Zorunlu Açıklama name String Hayır Alt üye işyeri adı gsmnumber String Hayır Alt üye işyeri telefon numarası taxoffice String Evet Alt üye işyeri vergi dairesi legalcompanytitle String Evet Alt üye işyeri yasal şirket ünvanı email String Evet Alt üye işyeri e-posta adresi address String Evet Alt üye işyeri adresi
iban String Hayır ** Alt üye işyeri IBAN bilgisi. legalcompanytitle ile uyumlu bir IBAN olmalı. Eğer alt üye işyeri ekleme esnasında boş bırakılırsa, ürüne onay vermeden önce mutlaka doldurulmalıdır submerchantexternalid String Evet Alt üye işyeri tekil dış ID si, sizin sisteminizdeki ID olabilir identitynumber String Hayır ** Alt üye işyeri T.C. kimlik numarası. Eğer alt üye işyeri ekleme esnasında boş bırakılırsa, ürüne onay vermeden önce mutlaka doldurulmalıdır submerchanttype String Evet Şahıs Şirketi için PRIVATE_COMPANY enum değeri gönderilmeli İstek sonucu dönen değerler aşağıdaki gibidir: Output İsmi Veri Tipi Açıklama submerchantkey String Alt üye işyerini simgeleyen tekil değer. Örnek Java İstek Kodu: ClientConfiguration configuration = new ClientConfiguration(); configuration.setapikey("api key"); configuration.setsecretkey("secret key"); configuration.setbaseurl("https://sandbox- apiiyzipay.com"); OnboardingServiceClient client = new OnboardingServiceClientImpl(configuration); CreateSubMerchantRequest request = new CreateSubMerchantRequest(); request.setlocale(requestlocaletype.tr.getvalue()); request.setconversationid("123456789"); request.setsubmerchantexternalid("s49221"); request.setsubmerchanttype(submerchantrequesttype.private_company.name()); request.setaddress("nidakule Göztepe İş Merkezi Merdivenköy Mah. Bora Sok. No:1 Kat:19 Bağımsız 70/73 Göztepe Kadıköy 34732"); request.settaxoffice("kadıköy V.D."); request.setlegalcompanytitle("sabri Onur Tüzün Bilişim Hizmetleri"); request.setemail("email@submerchantemail.com"); request.setgsmnumber("+905350000000"); request.setname("sabri Onur'un mağazası"); request.setiban("tr180006200119000006672315"); request.setidentitynumber("31300864726"); CreateSubMerchantResponse response = client.createsubmerchant(request); System.out.println("conversationId="+response.getConversationId()); System.out.println("locale="+response.getLocale()); System.out.println("status="+response.getStatus()); System.out.println("errorCode="+response.getErrorCode());
System.out.println("errorMessage="+response.getErrorMessage()); System.out.println("errorGroup="+response.getErrorGroup()); System.out.println("systemTime="+response.getSystemTime()); System.out.println("subMerchantKey="+response.getSubMerchantKey()); Örnek Java Sonuç Çıktısı: conversationid=123456789 locale=tr status=success errorcode=null errormessage=null errorgroup=null systemtime=1443788792146 submerchantkey=lcb6ba9dwef5e8ygji0uiecw1kw= Örnek Java İstek Koduna Ait JSON Çıktısı: { "locale" : "tr", "conversationid" : "123456789", "name" : "Sabri Onur'un mağazası", "email" : "email@submerchantemail.com", "gsmnumber" : "+905350000000", "address" : "Nidakule Göztepe İş Merkezi Merdivenköy Mah. Bora Sok. No:1 Kat:19 Bağımsız 70/73 Göztepe Kadıköy 34732", "iban" : "TR180006200119000006672315", "taxoffice" : "Kadıköy V.D.", "legalcompanytitle" : "Sabri Onur Tüzün Bilişim Hizmetleri", "submerchantexternalid" : "S49221", "identitynumber" : "31300864726", "submerchanttype" : "PRIVATE_COMPANY" } Örnek Java Sonuç Koduna Ait JSON Çıktısı: { "status" : "success",
"locale" : "tr", "systemtime" : 1443788792146, "conversationid" : "123456789", "submerchantkey" : "lcb6ba9dwef5e8ygji0uiecw1kw=" } 3.2.1.3 Limited veya Anonim Şirket Alt Üye İşyeri Ekleme Pazaryeri satıcınız eğer Limited veya Anonim Şirket ise aşağıdaki input parametrelerini gönderip Limited veya Anonim Şirket satıcılarınızın iyzico ya kaydını sağlayabilirsiniz. API Servis (Endpoint) İsmi: /onboarding/submerchant Method: HTTP POST Input İsmi Veri Tipi Zorunlu Açıklama name String Hayır Alt üye işyeri adı gsmnumber String Hayır Alt üye işyeri telefon numarası taxoffice String Evet Alt üye işyeri vergi dairesi taxnumber String Evet Alt üye işyeri vergi numarası legalcompanytitle String Evet Alt üye işyeri yasal şirket ünvanı email String Evet Alt üye işyeri e-posta adresi address String Evet Alt üye işyeri adresi iban String Hayır ** Alt üye işyeri IBAN bilgisi. legalcompanytitle ile uyumlu bir IBAN olmalı. Eğer alt üye işyeri ekleme esnasında boş bırakılırsa, ürüne onay vermeden önce mutlaka doldurulmalıdır submerchantexternalid String Evet Alt üye işyeri tekil dış ID si, sizin sisteminizdeki ID olabilir submerchanttype String Evet Şahıs Şirketi için LIMITED_OR_JOINT_STOCK_COMPANY enum değeri gönderilmeli İstek sonucu dönen değerler aşağıdaki gibidir: Output İsmi Veri Tipi Açıklama submerchantkey String Alt üye işyerini simgeleyen tekil değer. Örnek Java İstek Kodu: ClientConfiguration configuration = new ClientConfiguration(); configuration.setapikey("api key"); configuration.setsecretkey("secret key"); configuration.setbaseurl("https://sandbox- apiiyzipay.com");
OnboardingServiceClient client = new OnboardingServiceClientImpl(configuration); CreateSubMerchantRequest request = new CreateSubMerchantRequest(); request.setlocale(requestlocaletype.tr.getvalue()); request.setconversationid("123456789"); request.setsubmerchantexternalid("as49222"); request.setsubmerchanttype(submerchantrequesttype.limited_or_joint_stock_company.na me()); request.setaddress("nidakule Göztepe İş Merkezi Merdivenköy Mah. Bora Sok. No:1 Kat:19 Bağımsız 70/73 Göztepe Kadıköy 34732"); request.settaxoffice("kadıköy V.D."); request.settaxnumber("9261877"); request.setlegalcompanytitle("xyz Bilişim Hizmetleri A.Ş."); request.setemail("email@submerchantemail.com"); request.setgsmnumber("+905350000000"); request.setname("sabri Onur'un mağazası"); request.setiban("tr180006200119000006672315"); CreateSubMerchantResponse response = client.createsubmerchant(request); System.out.println("conversationId=" + response.getconversationid()); System.out.println("locale=" + response.getlocale()); System.out.println("status=" + response.getstatus()); System.out.println("errorCode=" + response.geterrorcode()); System.out.println("errorMessage=" + response.geterrormessage()); System.out.println("errorGroup=" + response.geterrorgroup()); System.out.println("systemTime=" + response.getsystemtime()); System.out.println("subMerchantKey=" + response.getsubmerchantkey()); Örnek Java Sonuç Çıktısı: conversationid=123456789 locale=tr status=success errorcode=null errormessage=null errorgroup=null systemtime=1443790256853 submerchantkey=d9v/mqirituza4dutl+ncbvnwfs=
Örnek Java İstek Koduna Ait JSON Çıktısı: { "locale" : "tr", "conversationid" : "123456789", "name" : "Sabri Onur'un mağazası", "email" : "email@submerchantemail.com", "gsmnumber" : "+905350000000", "address" : "Nidakule Göztepe İş Merkezi Merdivenköy Mah. Bora Sok. No:1 Kat:19 Bağımsız 70/73 Göztepe Kadıköy 34732", "iban" : "TR180006200119000006672315", "taxoffice" : "Kadıköy V.D.", "legalcompanytitle" : "XYZ Bilişim Hizmetleri A.Ş.", "submerchantexternalid" : "AS49222", "taxnumber" : "9261877", "submerchanttype" : "LIMITED_OR_JOINT_STOCK_COMPANY" } Örnek Java Sonuç Koduna Ait JSON Çıktısı: { "status" : "success", "locale" : "tr", "systemtime" : 1443790256853, "conversationid" : "123456789", "submerchantkey" : "D9V/MqIRitUzA4dutL+nCBvnWfs=" } 3.2.2 Alt Üye İşyeri Güncelleme İyzico ya tek seferlik kaydını gerçekleştirdiğiniz alt üye işyerlerini, alt üye işyeri ekleme bölümünde bahsedilen parametreleri göndererek güncelleyebilirsiniz. Not 1: Alt üye işyeri güncelleme için, güncellemek istediğiniz alt üye işyerine ait submerchantkey gönderilmesi gerekmektedir. Not 2: Alt üye işyeri güncellenirken geçerli formatta IBAN bilgisi gönderilmesi zorunludur Not 3: Alt üye işyeri tipi güncellenemez, eğer Bireysel olan bir alt üye işyeriniz, Şahıs Şirketi veya Limited/A.Ş. şirketine dönüşüyorsa, her bir tip için yeni bir alt üye işyeri ekleyip, ilgili submerchantkey leri saklamalısınız.
Aşağıda sadece Bireysel alt üye işyeri güncelleme örneği verilmiştir, Şahıs Şirketi ve Limited/A.Ş. alt üye işyerleri için güncelleme istekleri alt üye işyeri eklemedeki parametreleri kullanacak şekilde benzerdir. API Servis (Endpoint) İsmi: /onboarding/submerchant Method: HTTP PUT Input İsmi Veri Tipi Zorunlu Açıklama submerchantkey String Evet iyzico tarafından, alt üye işyeri ekleme sonucunda dönen alt üye işyeri tekil anahtarı iban String Evet Alt üye işyeri IBAN bilgisi. contactname ve contactsurname ile belirtilecek ad soyada ait bir IBAN olmalı. name String Hayır Alt üye işyeri adı gsmnumber String Hayır Alt üye işyeri telefon numarası contactname String Evet Alt üye işyeri sahibinin adı. IBAN ile uyumlu olmalı contactsurname String Evet Alt üye işyeri sahibinin soyadı. IBAN ile uyumlu olmalı email String Evet Alt üye işyeri e-posta adresi address String Evet Alt üye işyeri adresi identitynumber String Hayır ** Alt üye işyeri T.C. kimlik numarası. Eğer alt üye işyeri ekleme esnasında boş bırakılırsa, ürüne onay vermeden önce mutlaka doldurulmalıdır submerchanttype String Evet Bireysel için PERSONAL enum değeri gönderilmeli İstek sonucu dönen değerler; 3.1 maddesinde bahsedilen genel API dönüş değerleridir. Örnek Java İstek Kodu: ClientConfiguration configuration = new ClientConfiguration(); configuration.setapikey("api key"); configuration.setsecretkey("secret key"); configuration.setbaseurl("https://sandbox- apiiyzipay.com"); OnboardingServiceClient client = new OnboardingServiceClientImpl(configuration); UpdateSubMerchantRequest request = new UpdateSubMerchantRequest(); request.setlocale(requestlocaletype.tr.getvalue()); request.setconversationid("123456789"); request.setsubmerchantkey("l4fcfyciof0patp6687dooch9po="); request.setiban("tr630006200027700006678204"); request.setaddress("nidakule Göztepe İş Merkezi Merdivenköy Mah. Bora Sok. No:1 Kat:19 Bağımsız 70/73 Göztepe Kadıköy 34732");
request.setcontactname("hakan"); request.setcontactsurname("erdoğan"); request.setemail("email@submerchantemail.com"); request.setgsmnumber("+905350000000"); request.setname("hakan Erdoğan'ın mağazası"); request.setidentitynumber("31300864726"); UpdateSubMerchantResponse response = client.updatesubmerchant(request); System.out.println("conversationId=" + response.getconversationid()); System.out.println("locale=" + response.getlocale()); System.out.println("status=" + response.getstatus()); System.out.println("errorCode=" + response.geterrorcode()); System.out.println("errorMessage=" + response.geterrormessage()); System.out.println("errorGroup=" + response.geterrorgroup()); System.out.println("systemTime=" + response.getsystemtime()); Örnek Java Sonuç Çıktısı: conversationid=123456789 locale=tr status=success errorcode=null errormessage=null errorgroup=null systemtime=1444129731762 Örnek Java İstek Koduna Ait JSON Çıktısı: { "locale" : "tr", "conversationid" : "123456789", "name" : "Hakan Erdoğan'ın mağazası", "email" : "email@submerchantemail.com", "gsmnumber" : "+905350000000", "address" : "Nidakule Göztepe İş Merkezi Merdivenköy Mah. Bora Sok. No:1 Kat:19 Bağımsız 70/73 Göztepe Kadıköy 34732", "iban" : "TR630006200027700006678204", "contactname" : "Hakan", "contactsurname" : "Erdoğan", "submerchantkey" : "l4fcfyciof0patp6687dooch9po=",
"identitynumber" : "31300864726" } Örnek Java Sonuç Koduna Ait JSON Çıktısı: { "status" : "success", "locale" : "tr", "systemtime" : 1444129731762, "conversationid" : "123456789" } 3.3 Tahsilat Üye işyeri; ister pazaryeri isterse standart e- ticaret iş modelinde olsun aşağıdaki ödeme (3D Secure ve 3D Secure olmayan), iptal, iade, ön otorizasyon vb işlemleri yapabilir. 3.3.1 Ödeme Üye işyeri, kendi veya alıcı tercihine göre 3D Secure veya 3D Secure olmayan ödeme alabilir. 3D Secure olmayan ödeme basit bir istek/sonuç evresinde (request/response cycle) sonuçlanır. 3.3.1.1 Ödeme Grupları, Ürün Tipleri ve Temel Ödeme Bilgileri Üye işyeri; ürün, listeleme ve abonelik ödeme tiplerinde ödeme alabilir, listeleme ve abonelik arasında bir fark yoktur, ürün ödemesi ise detayları aşağıda verileceğe üzere farklı bir akışa sahiptir: PRODUCT à Ürün LISTING à Listeleme SUBSCRIPTION à Abonelik Ödeme sepetinde yer alan ürünler ise Sanal veya Fiziksel ürün olabilir: VIRTUAL à Sanal Ürün PHYSICAL à Fiziksel Ürün
Sanal (VIRTUAL) tipteki ürünler için teslimat adresi (ShippingAddress) gönderilmesi opsiyoneldir. Sepette yer alan ürünlerin bir tanesi bile Fiziksel (PHYSICAL) ürün ise, teslimat adresi (ShippingAddress) gönderilmesi zorunludur. Pazaryeri/Marketplaces İş Modelinde Olan Üye İşyerleri İçin; Listeleme (LISTING) ve Abonelik (SUBSCRIPTION) tipindeki ödemeler için sepet kırılımındaki ürünlerin tipi Sanal (VIRTUAL) olmalıdır. Ürün (PRODUCT) tipindeki ödemeler için sepet kırılımındaki ürünlerin tipi Sanal (VIRTUAL) veya Fiziksel (PHYSICAL) olabilir. Ürün (PRODUCT) tipindeki ödeme için; alt üye işyeri tutarı (submerchantprice) ve alt üye işyeri anahtarı (submerchantkey) gönderilmelidir. Ürün (PRODUCT) tipindeki ödemeler için escrow işleyişi uygulanır ve üye işyerinden ürüne onay verilinceye dek para, korumalı havuz hesapta beklemede tutulur. Listeleme veya Abonelik ödemesi geçtikten sonra üye işyeri para transfer periyod ayarına göre ilgili tutarlar üye işyerine gönderilir. Ürün ödemesi geçtikten sonra, üye işyeri ürüne onay verdikten sonra, para transfer periyod ayarına göre ilgili tutarlar üye işyerine gönderilir Pazaryeri/Marketplaces İş Modelinde OlMAyan Üye İşyerleri İçin; Listeleme (LISTING) ve Abonelik (SUBSCRIPTION) tipindeki ödemeler için sepet kırılımındaki ürünlerin tipi Sanal (VIRTUAL) olmalıdır. Ürün (PRODUCT) tipindeki ödemeler için sepet kırılımındaki ürünlerin tipi Sanal (VIRTUAL) veya Fiziksel (PHYSICAL) olabilir. Ürün (PRODUCT) tipindeki ödeme için; alt üye işyeri tutarı (submerchantprice) ve alt üye işyeri anahtarı (submerchantkey) gönderilmez. Ürün (PRODUCT) tipindeki ödemeler için escrow işleyişi uygulanmaz Ürün, Listeleme veya Abonelik ödemesi geçtikten sonra üye işyeri para transfer periyod ayarına göre ilgili tutarlar üye işyerine gönderilir. Örnek Pazaryeri İş Modeli Ürün Ödemesi: Bir alıcı; 100 TL lik bir sepet oluşturup 3 farklı satıcıdan, örneğin
A satıcısından 30 TL lik, B satıcısından 50 TL lik ve C satıcısından 20 TL lik 3 farklı ürün alabilir. Üye işyeri, ödeme esnasında kart bilgileri, adres bilgileri, ödeme bilgilerine ek olarak temelde; sepete ait tutarı (price), indirim vade farkı vs hesaplanmış POS dan geçecek nihai tutarı (paidprice), sepetteki her bir ürün için; o ürün fiyatını (price) o bu ürün için alt üye işyerine gönderilecek tutarı (submerchantprice) o alt üye işyeri anahtarını (submerchantkey) iletir Yukarıdaki örneğe istinaden;... price = 100 paidprice=110
o basketitem 1 price=30 submerchantprice=27 submerchantkey=g2fcfyciof0patp6687dooch9tc= o basketitem 2 price=50 submerchantprice=42 o submerchantkey=d9v/mqirituza4dutl+ncbvnwfs= o basketitem 3 price=20 submerchantprice=18 submerchantkey=d9v/mqirituza4dutl+ncbvnwfs=... Bir ödeme gerçekleştiğinde dönüş değerlerinde; ödemeye istinaden paymentid, sepetteki her bir kırılıma istinaden paymenttransactionid yer alır. Üye işyeri bu iki değeri sisteminde saklamalıdır zira; paymentid: ödeme iptali ve iyzico ile olan iletişimde kullanılmaktadır transactionid: ödeme kırılım iadesi, ürün onayı, ürün onay iptali ve iyzico ile olan iletişimde kullanılmaktadır Input İsmi 3.3.1.2 Ödeme İstek ve Dönüş Parametreleri Veri Sözlüğü Tüm ödemeler için aşağıdaki tabloda yer alan input parametreleri geçerlidir: Veri Tipi Zorunlu Açıklama price Decimal Evet Ödeme sepet tutarı. Kırılım tutarlar toplamı sepet tutarına eşit olmalı paidprice Decimal Evet İndirim vade farkı vs hesaplanmış POS dan geçecek nihai tutar Ödemenin alınacağı para birimi. Default olarak TRY. Diğer değerler ise currency String Evet installment Integer Evet basketid String Hayır Üye işyeri sepet id si USD, EUR, GBP ve IRR. Taksit bilgisi, tek çekim için 1 gönderilmelidir. Geçerli değerler: 1, 2, 3, 6, 9 paymentchannel String Hayır Ödeme kanalı. Geçerli değerler enum içinde sunulmaktadır: WEB, MOBILE, MOBILE_WEB, MOBILE_IOS, MOBILE_ANDROID, MOBILE_WINDOWS, MOBILE_TABLET, MOBILE_PHONE paymentgroup String Hayır Ödeme grubu, varsayılan PRODUCT. Geçerli değerler enum içinde
sunulmaktadır: PRODUCT, LISTING, SUBSCRIPTION cardnumber String Evet ** Ödemenin alınacağı kart numarası. Eğer saklı kart ile ödeme yapılmıyorsa zorunludur expireyear String Evet ** Ödemenin alınacağı kart son kullanma tarihi yılı. Eğer saklı kart ile ödeme yapılmıyorsa zorunludur expiremonth String Evet ** Ödemenin alınacağı kart son kullanma tarihi ayı. Eğer saklı kart ile ödeme yapılmıyorsa zorunludur cvc String Evet ** Ödemenin alınacağı kartın güvenlik kodu. Eğer saklı kart ile ödeme yapılmıyorsa zorunludur, saklı kartla ödeme yapılırken gönderilirse aynen bankaya iletilir cardholdername String Evet ** Ödemenin alınacağı kart sahibinin adı soyadı. Eğer saklı kart ile ödeme yapılmıyorsa zorunludur callbackurl String Hayır ** 3D Secure ödeme akışında üye işyerine başarılı ve hatalı sonucu bildirmek üzere alınan URL adresi. Sadece 3D Secure ödemenin init3ds metodunda zorunludur. registercard Integer Hayır Ödeme esnasında kartın kaydedilip kaydedilmeyeceğini belirleyen parametre. Varsayılan değeri 0 olup, geçerli değerler 0 ve 1 dir. cardalias String Hayır Ödeme esnasında kartın kaydedildiği durumlarda (registercard=1), karta verilen rumuzu simgeler carduserkey String Hayır ** Saklı kart ile ödemede zorunlu olup, kart saklandığı esnada dönen kartın sahibine özel kullanıcı anahtarı cardtoken String Hayır ** Saklı kart ile ödemede zorunlu olup, kart saklandığı esnada dönen karta ait anahtar id (Buyer) String Evet Üye işyeri tarafındaki alıcıya ait id name (Buyer) String Evet Üye işyeri tarafındaki alıcıya ait ad surname (Buyer) String Evet Üye işyeri tarafındaki alıcıya ait soyad identitynumber (Buyer) String Evet Üye işyeri tarafındaki alıcıya ait kimlik (TCKN) numarası city (Buyer) String Evet Üye işyeri tarafındaki alıcıya ait şehir bilgisi country (Buyer) String Evet Üye işyeri tarafındaki alıcıya ait ülke bilgisi email (Buyer) String Evet Üye işyeri tarafındaki alıcıya ait e-posta bilgisi. E-posta adresi alıcıya ait geçerli ve erişilebilir bir adres olmalıdır gsmnumber (Buyer) String Hayır Üye işyeri tarafındaki alıcıya ait GSM numarası ip (Buyer) String Evet Üye işyeri tarafındaki alıcıya ait IP adresi registrationaddress (Buyer) String Evet Üye işyeri tarafındaki alıcıya ait kayıt adresi zipcode (Buyer) String Hayır Üye işyeri tarafındaki alıcıya ait posta kodu registrationdate (Buyer) String Hayır Üye işyeri tarafındaki alıcıya ait kayıt tarihi. Tarih formatı 2015-09-17 23:45:06 şeklinde olmalıdır lastlogindate (Buyer) String Hayır Üye işyeri tarafındaki alıcıya ait son giriş tarihi. Tarih formatı 2015-09- 17 23:45:06 şeklinde olmalıdır contactname (BillingAddress) String Evet Üye işyeri tarafındaki fatura adresi ad soyad bilgisi city (BillingAddress) String Evet Üye işyeri tarafındaki fatura adresi şehir bilgisi country (BillingAddress) String Evet Üye işyeri tarafındaki fatura adresi ülke bilgisi address (BillingAddress) String Evet Üye işyeri tarafındaki fatura adresi zipcode (BillingAddress) String Hayır Üye işyeri tarafındaki fatura adresi posta kodu contactname (ShippingAddress) String Evet ** Üye işyeri tarafındaki teslimat adresi ad soyad bilgisi. Sepetteki ürünlerden en az 1 tanesi fiziksel ürün (itemtype=physical) ise zorunludur city (ShippingAddress) String Evet ** Üye işyeri tarafındaki teslimat adresi şehir bilgisi. Sepetteki ürünlerden en az 1 tanesi fiziksel ürün (itemtype=physical) ise zorunludur country Üye işyeri tarafındaki teslimat adresi ülke bilgisi. Sepetteki ürünlerden (ShippingAddress) String Evet ** address (ShippingAddress) String Evet ** zipcode (ShippingAddress) String Hayır Üye işyeri tarafındaki teslimat adresi posta kodu en az 1 tanesi fiziksel ürün (itemtype=physical) ise zorunludur Üye işyeri tarafındaki teslimat adresi. Sepetteki ürünlerden en az 1 tanesi fiziksel ürün (itemtype=physical) ise zorunludur
id (BasketItem) String Evet Üye işyeri tarafındaki sepetteki ürüne ait id itemtype (BasketItem) String Evet Üye işyeri tarafındaki sepetteki ürüne ait tip. Geçerli enum değerler: PHYSICAL ve VIRTUAL name (BasketItem) String Evet Üye işyeri tarafındaki sepetteki ürüne ait isim category1 (BasketItem) String Evet Üye işyeri tarafındaki sepetteki ürüne ait kategori 1 category2 (BasketItem) String Hayır Üye işyeri tarafındaki sepetteki ürüne ait kategori 2 price (BasketItem) Üye işyeri tarafındaki sepetteki ürüne ait tutar. 0 ve 0 dan küçük submerchantprice (BasketItem) Decimal Evet Decimal Evet ** submerchantkey (BasketItem) String Evet ** olamaz, tutarlar toplamı sepet tutarına (price) eşit olmalıdır Üye işyeri tarafındaki sepetteki ürüne istinaden alt üye işyerine gönderilecek olan tutar. 0 dan küçük ve sepet ürün tutarından [price (BasketItem)] büyük olamaz Pazaryeri iş modeli için geçerli ve zorunludur Üye işyeri tarafındaki sepetteki ürüne istinaden alt üye işyerine ait anahtar. Pazaryeri iş modeli için geçerli ve zorunludur Tüm ödemeler için aşağıdaki tabloda yer alan output parametreleri geçerlidir: Output İsmi Veri Tipi Açıklama paymentid Ödemeye ait id, üye işyeri tarafından mutlaka saklanmalıdır. Ödemenin String iptali ve iyzico ile iletişimde kullanılır price Decimal Ödeme sepet tutarı. Kırılım tutarlar toplamı sepet tutarına eşit olmalı paidprice Decimal İndirim vade farkı vs hesaplanmış POS dan geçen, tahsil edilen, nihai tutar Currency String Ödemenin alınacağı para birimi. Default olarak TRY. Diğer değerler ise USD, EUR, GBP ve IRR. installment Integer Ödemenin taksit bilgisi, tek çekim için 1 döner. Geçerli değerler: 1, 2, 3, 6, 9 paymentstatus String İşlemin sonucunu gösterir. SUCCESS, FAILURE, INIT_THREEDS, CALLBACK_THREEDS, BKM_POS_SELECTED, CALLBACK_PECCO basketid String Üye işyeri taradından gönderilen sepet id si binnumber String Ödeme yapılan kartın ilk 6 hanesi cardassociation String Eğer ödeme yapılan kart yerel bir kart ise, kartın ait olduğu kuruluş. Geçerli değerler: VISA, MASTER_CARD, AMERICAN_EXPRESS cardfamily String Eğer ödeme yapılan kart yerel bir kart ise, kartın ait olduğu aile. Geçerli değerler: Bonus, Axess, World, Maximum, Paraf, CardFinans, AsyaCard,... cardtype String Eğer ödeme yapılan kart yerel bir kart ise, kartın ait olduğu tipi. Geçerli değerler: CREDIT_CARD, DEBIT_CARD, PREPAID_CARD carduserkey String Eğer ödeme esnasında kartı kaydetme parametresi (registercard=1) gönderilmişse veya saklı bir kart ile ödeme yapılıyorsa, o kartın sahibine özel kullanıcı anahtarı cardtoken String Kart saklandığı esnada dönen karta ait anahtar fraudstatus Integer Ödeme işleminin fraud filtrelerine göre durumu. Eğer ödemenin fraud risk skoru düşük ise ödemeye anında onay verilir bu durumda 1 değeri döner. Eğer fraud risk skoru yüksek ise ödeme işlemi reddedilir ve -1 döner. Eğer ödeme işlemi daha sonradan incelenip karar verilecekse 0 döner. Geçerli değerler: 0, -1 ve 1. Üye işyeri sadece 1 olan işlemlerde ürünü kargoya vermelidir, 0 olan işlemler için bilgilendirme beklemelidir. iyzicommissionfee Decimal Ödemeye ait iyzico işlem ücreti iyzicommissionrateamount Decimal Ödemeye ait iyzico işlem komisyon tutarı merchantcommissionrate Decimal Üye işyerinin uyguladığı vade/komisyon oranı. Örneğin price=100, paidprice=110 ise üye işyeri vade/komisyon oranı %10 dur.bilgi amaçlıdır merchantcommissionrateamount Decimal Üye işyerinin uyguladığı vade/komisyon tutarı. Örneğin price=100, paidprice=110 ise üye işyeri vade/komisyon tutarı 10 dur.bilgi
paymenttransactionid (ItemTransactions) amaçlıdır Ödeme kırılımına ait id, üye işyeri tarafından mutlaka saklanmalıdır. Ödeme kırılımının iadesi, onayı, onay geri çekmesi ve iyzico ile iletişimde kullanılır. Tercihen itemid ile ilişkili bir şekilde tutulmalıdır String itemid (ItemTransactions) String Üye işyeri tarafından iletilen, sepetteki ürüne ait id price (ItemTransactions) Decimal Üye işyeri tarafındaki sepetteki ürüne ait tutar paidprice (ItemTransactions) transactionstatus (ItemTransactions) blockagerate (ItemTransactions) blockagerateamountmerchant (ItemTransactions) Decimal Integer Decimal Decimal Tahsilat tutarının kırılım bazındaki dağılımı. Üye işyeri tarafından mutlaka saklanmalıdır Ödeme kırılımının durumu. Ödeme fraud kontrolünde ise 0 değeri döner, bu durumda fraudstatus değeri de 0 dır. Ödeme, fraud kontrolünden sonra reddedilirse -1 döner. Pazaryeri modelinde ürüne onay verilene dek bu değer 1 olarak döner. Pazaryeri modelinde ürüne onay verilmişse bu değer 2 olur. Geçerli değerler: 0, -1, 1, 2 Kırılım bazında üye işyeri blokaj oranı. iyzico üye işyeri anlaşmasına göre, üye işyerine işlem bazında blokaj uygulayabilir. Bu blokaj üye işyeri fraud riskini önlemek içindir, blokaj süresi boyunca para iyzico da tutulur, bu süre sonrası üye işyerine gönderilir. Kırılım bazında üye işyeri blokaj tutarının, üye işyerine yansıyan rakamı. Blokaj tutarı mümkün olduğunca üye işyerine yansıtılır. Eğer blokaj tutarı, üye işyeri tutarından daha büyükse bu durumda alt üye işyerine de yansıtılır. blockagerateamountsubmerchant (ItemTransactions) Decimal Kırılım bazında üye işyeri blokaj tutarının, alt üye işyerine yansıyan rakamı. blockageresolveddate (ItemTransactions) String İşlem bazında blokaj çözülme tarihi. yyyy-mm-dd HH:mm:ss formatındadır, örneğin 2015-10-19 14:36:52 iyzicommissionfee (ItemTransactions) Decimal iyico işlem ücretinin kırılım bazında dağılmış tutarı iyzicommissionrateamount (ItemTransactions) Decimal iyico işlem komisyon tutarının kırılım bazında dağılmış tutarı merchantcommissionrate (ItemTransactions) merchantcommissionrateamount (ItemTransactions) submerchantkey (ItemTransactions) submerchantprice (ItemTransactions) merchantpayoutamount (ItemTransactions) submerchantpayoutamount (ItemTransactions) submerchantpayoutrate (ItemTransactions) Decimal Decimal String Decimal Decimal Decimal Decimal Üye işyerinin uyguladığı vade/komisyon oranının kırılım bazında dağılmış oranı Üye işyerinin uyguladığı vade/komisyon tutarıın, kırılım bazında dağılmış tutarı Üye işyeri tarafındaki sepetteki ürüne istinaden alt üye işyerine ait anahtar. Pazaryeri iş modeli için geçerlidir Üye işyeri tarafındaki sepetteki ürüne istinaden alt üye işyerine gönderilecek olan tutar. Pazaryeri iş modeli için geçerlidir Bu kırılım için, iyzico işlem ücreti, komisyon tutarı ve blokajlar düşüldükten sonra üye işyerine gönderilecek tutar. Bu kırılım için, iyzico işlem ücreti, komisyon tutarı ve blokajlar düşüldükten sonra alt üye işyerine gönderilecek tutar. Pazaryeri iş modeli için geçerlidir Bu kırılım için, alt üye işyeri gönderim oranı. Örneğin 50 TL lik bir ürünün 45 TL si submerchantprice olarak gönderilmişse, bu durumda submerchantpayoutrate 90 döner, yani %90. Pazaryeri iş modeli için geçerlidir
3.3.1.3 3D Secure Olmayan Ödeme 3.3.1.3.1 Pazaryeri/Marketplaces İş Modelinde Olan Üye İşyerleri İçin Ürün Ödemesi; Aşağıdaki örnekte, 3 üründen oluşan 100 TL tutarında bir sepet 3 taksitli, 110 TL olarak ödeniyor. Sepetteki ürünlerden en az 1 tanesi fiziksel ürün olduğu için teslimat adresi bilgisi gönderiliyor. Sepette yer alan her bir ürün farklı alt üye işyerine ait ve sırasıyla 30 TL lik ürün onaylandığında 27 TL si (üye işyeri satış komisyonu bu ürün için %10), 50 TL lik ürün onaylandığında 42 TL si (üye işyeri satış komisyonu bu ürün için %16) ve 20 TL lik ürün onaylandığında 18 TL si (üye işyeri satış komisyonu bu ürün için %10) alt üye işyerine gönderilecektir. API Servis (Endpoint) İsmi: /payment/iyzipos/auth/ecom Method: HTTP POST Örnek Java İstek Kodu: EcomPaymentServiceClient client = new EcomPaymentServiceClientImpl(configuration); EcomPaymentAuthRequest request = new EcomPaymentAuthRequest(); request.setlocale(requestlocaletype.tr.getvalue()); request.setconversationid("123456789"); request.setprice(new BigDecimal("100")); request.setpaidprice(new BigDecimal("110")); request.setcurrency ("TRY"); request.setinstallment(3); request.setbasketid("b67832"); request.setpaymentchannel(paymentchannelrequesttype.web.name()); request.setpaymentgroup(paymentgrouprequesttype.product.name()); EcomPaymentCardDto paymentcard = new EcomPaymentCardDto(); paymentcard.setcardholdername("sabri Onur Tüzün"); paymentcard.setcardnumber("554960**********"); paymentcard.setexpiremonth("**"); paymentcard.setexpireyear("20**"); paymentcard.setcvc("***"); paymentcard.setregistercard(0); request.setpaymentcard(paymentcard);
EcomPaymentBuyerDto buyer = new EcomPaymentBuyerDto(); buyer.setid("by789"); buyer.setname("sabri Onur"); buyer.setsurname("tüzün"); buyer.setgsmnumber("+905350000000"); buyer.setemail("email@buyeremail.com"); buyer.setidentitynumber("74300864791"); buyer.setlastlogindate("2015-10- 05 12:43:35"); buyer.setregistrationdate("2013-04- 21 15:12:09"); buyer.setregistrationaddress("nidakule Göztepe İş Merkezi Merdivenköy Mah. Bora Sok. No:1 Kat:19 Bağımsız 70/73 Göztepe Kadıköy"); buyer.setip("85.34.78.112"); buyer.setcity("istanbul"); buyer.setcountry("türkiye"); buyer.setzipcode("34732"); request.setbuyer(buyer); EcomPaymentShippingAddressDto shippingaddress = new EcomPaymentShippingAddressDto(); shippingaddress.setcontactname("hakan Erdoğan"); shippingaddress.setcity("istanbul"); shippingaddress.setcountry("türkiye"); shippingaddress.setaddress("19 Mayıs Mah. İnönü Cad. No:45 Kozyatağı"); shippingaddress.setzipcode("34742"); request.setshippingaddress(shippingaddress); EcomPaymentBillingAddressDto billingaddress = new EcomPaymentBillingAddressDto(); billingaddress.setcontactname("hakan Erdoğan"); billingaddress.setcity("istanbul"); billingaddress.setcountry("türkiye"); billingaddress.setaddress("19 Mayıs Mah. İnönü Cad. No:45 Kozyatağı"); billingaddress.setzipcode("34742"); request.setbillingaddress(billingaddress); List<EcomPaymentBasketItemDto> basketitems = new ArrayList<EcomPaymentBasketItemDto>(); EcomPaymentBasketItemDto basketitem1 = new EcomPaymentBasketItemDto(); basketitem1.setid("bi101"); basketitem1.setname("abc Marka Kolye"); basketitem1.setcategory1("giyim"); basketitem1.setcategory2("aksesuar"); basketitem1.setitemtype(basketitemrequesttype.physical.name()); basketitem1.setprice(new BigDecimal("30")); basketitem1.setsubmerchantkey("l4fcfyciof0patp6687dooch9po="); basketitem1.setsubmerchantprice(new BigDecimal("27"));
basketitems.add(basketitem1); EcomPaymentBasketItemDto basketitem2 = new EcomPaymentBasketItemDto(); basketitem2.setid("bi102"); basketitem2.setname("xyz Oyun Kodu"); basketitem2.setcategory1("oyun"); basketitem2.setcategory2("online Oyun Kodları"); basketitem2.setitemtype(basketitemrequesttype.virtual.name()); basketitem2.setprice(new BigDecimal("50")); basketitem2.setsubmerchantkey("lcb6ba9dwef5e8ygji0uiecw1kw="); basketitem2.setsubmerchantprice(new BigDecimal("42")); basketitems.add(basketitem2); EcomPaymentBasketItemDto basketitem3 = new EcomPaymentBasketItemDto(); basketitem3.setid("bi103"); basketitem3.setname("edc Marka Usb"); basketitem3.setcategory1("elektronik"); basketitem3.setcategory2("usb / Cable"); basketitem3.setitemtype(basketitemrequesttype.physical.name()); basketitem3.setprice(new BigDecimal("20")); basketitem3.setsubmerchantkey("d9v/mqirituza4dutl+ncbvnwfs="); basketitem3.setsubmerchantprice(new BigDecimal("18")); basketitems.add(basketitem3); request.setbasketitems(basketitems); EcomPaymentAuthResponse response = client.auth(request); System.out.println("conversationId=" + response.getconversationid()); System.out.println("locale=" + response.getlocale()); System.out.println("status=" + response.getstatus()); System.out.println("errorCode=" + response.geterrorcode()); System.out.println("errorMessage=" + response.geterrormessage()); System.out.println("errorGroup=" + response.geterrorgroup()); System.out.println("systemTime=" + response.getsystemtime()); System.out.println("paymentId=" + response.getpaymentid()); System.out.println("price=" + response.getprice()); System.out.println("paidPrice=" + response.getpaidprice()); System.out.println("currency=" + response.getcurrency()); System.out.println("installment=" + response.getinstallment()); System.out.println("basketId=" + response.getbasketid()); System.out.println("binNumber=" + response.getbinnumber()); System.out.println("cardAssociation=" + response.getcardassociation()); System.out.println("cardFamily=" + response.getcardfamily());
System.out.println("cardType=" + response.getcardtype()); System.out.println("cardToken=" + response.getcardtoken()); System.out.println("cardUserKey=" + response.getcarduserkey()); System.out.println("fraudStatus=" + response.getfraudstatus()); System.out.println("iyziCommissionFee=" + response.getiyzicommissionfee()); System.out.println("iyziCommissionRateAmount=" + response.getiyzicommissionrateamount()); System.out.println("merchantCommissionRate=" + response.getmerchantcommissionrate()); System.out.println("merchantCommissionRateAmount=" + response.getmerchantcommissionrateamount()); List<EcomPaymentItemTransactionDto> itemtransactions = response.getitemtransactions(); if (itemtransactions!= null &&!itemtransactions.isempty()) { for (EcomPaymentItemTransactionDto itemtransaction : itemtransactions) { System.out.println("paymentTransactionId=" + itemtransaction.getpaymenttransactionid()); System.out.println("itemId=" + itemtransaction.getitemid()); System.out.println("paidPrice=" + itemtransaction.getpaidprice()); System.out.println("price=" + itemtransaction.getprice()); System.out.println("transactionStatus=" + itemtransaction.gettransactionstatus()); System.out.println("blockageRate=" + itemtransaction.getblockagerate()); System.out.println("blockageRateAmountMerchant=" + itemtransaction.getblockagerateamountmerchant()); System.out.println("blockageRateAmountSubMerchant=" + itemtransaction.getblockagerateamountsubmerchant()); System.out.println("blockageResolvedDate=" + itemtransaction.getblockageresolveddate()); System.out.println("iyziCommissionFee=" + itemtransaction.getiyzicommissionfee()); System.out.println("iyziCommissionRateAmount=" + itemtransaction.getiyzicommissionrateamount()); System.out.println("merchantCommissionRate=" + itemtransaction.getmerchantcommissionrate()); System.out.println("merchantCommissionRateAmount=" + itemtransaction.getmerchantcommissionrateamount()); System.out.println("merchantPayoutAmount=" + itemtransaction.getmerchantpayoutamount()); System.out.println("subMerchantKey=" + itemtransaction.getsubmerchantkey()); System.out.println("subMerchantPayoutAmount=" + itemtransaction.getsubmerchantpayoutamount()); System.out.println("subMerchantPayoutRate=" + itemtransaction.getsubmerchantpayoutrate()); System.out.println("subMerchantPrice=" + itemtransaction.getsubmerchantprice()); } }
ödeniyor. Örnek Java Sonuç Çıktısı: Aşağıdaki örnekte, 3 üründen oluşan 100 TL tutarında bir sepet 3 taksitli, 110 TL olarak conversationid=123456789 locale=tr status=success errorcode=null errormessage=null errorgroup=null systemtime=1444142311338 paymentid=2744 price=100 paidprice=110 currency=try installment=3 basketid=b67832 binnumber=554960 cardassociation=master_card cardfamily=bonus cardtype=credit_card cardtoken=null carduserkey=null fraudstatus=1 iyzicommissionfee=0.25000000 iyzicommissionrateamount=4.51000000 merchantcommissionrate=10.00000000 merchantcommissionrateamount=10 paymenttransactionid=1307 itemid=bi101 paidprice=33.00000000 price=30 transactionstatus=1 blockagerate=7.00000000 blockagerateamountmerchant=2.31000000 blockagerateamountsubmerchant=0 blockageresolveddate=2015-10- 16 17:38:31 iyzicommissionfee=0.07500000 iyzicommissionrateamount=1.35300000 merchantcommissionrate=10.00000000 merchantcommissionrateamount=3.00000000 merchantpayoutamount=2.26200000 submerchantkey=l4fcfyciof0patp6687dooch9po=
submerchantpayoutamount=27 submerchantpayoutrate=90.00000000 submerchantprice=27 paymenttransactionid=1308 itemid=bi102 paidprice=55.00000000 price=50 transactionstatus=1 blockagerate=7.00000000 blockagerateamountmerchant=3.85000000 blockagerateamountsubmerchant=0 blockageresolveddate=2015-10- 16 17:38:31 iyzicommissionfee=0.12500000 iyzicommissionrateamount=2.25500000 merchantcommissionrate=10.00000000 merchantcommissionrateamount=5.00000000 merchantpayoutamount=6.77000000 submerchantkey=lcb6ba9dwef5e8ygji0uiecw1kw= submerchantpayoutamount=42 submerchantpayoutrate=84.00000000 submerchantprice=42 paymenttransactionid=1309 itemid=bi103 paidprice=22.00000000 price=20 transactionstatus=1 blockagerate=7.00000000 blockagerateamountmerchant=1.54000000 blockagerateamountsubmerchant=0 blockageresolveddate=2015-10- 16 17:38:31 iyzicommissionfee=0.05000000 iyzicommissionrateamount=0.90200000 merchantcommissionrate=10.00000000 merchantcommissionrateamount=2.00000000 merchantpayoutamount=1.50800000 submerchantkey=d9v/mqirituza4dutl+ncbvnwfs= submerchantpayoutamount=18 submerchantpayoutrate=90.00000000 submerchantprice=18
Örnek Java İstek Koduna Ait JSON Çıktısı: { "locale" : "tr", "conversationid" : "123456789", "price" : 100, "paidprice" : 110, "currency" : TRY, "installment" : 3, "paymentchannel" : "WEB", "basketid" : "B67832", "paymentgroup" : "PRODUCT", "paymentcard" : { "cardholdername" : "Sabri Onur Tüzün", "cardnumber" : 554960**********", "expireyear" : 20**", "expiremonth" : **", "cvc" : ***", "registercard" : 0 }, "buyer" : { "id" : "BY789", "name" : "Sabri Onur", "surname" : "Tüzün", "identitynumber" : "74300864791", "email" : "email@buyeremail.com", "gsmnumber" : "+905350000000", "registrationdate" : "2013-04- 21 15:12:09", "lastlogindate" : "2015-10- 05 12:43:35", "registrationaddress" : "Nidakule Göztepe İş Merkezi Merdivenköy Mah. Bora Sok. No:1 Kat:19 Bağımsız 70/73 Göztepe Kadıköy", "city" : "İstanbul", "country" : "Türkiye", "zipcode" : "34732", "ip" : "85.34.78.112" }, "shippingaddress" : { "address" : "19 Mayıs Mah. İnönü Cad. No:45 Kozyatağı", "zipcode" : "34742", "contactname" : "Hakan Erdoğan", "city" : "İstanbul", "country" : "Türkiye" },
"billingaddress" : { "address" : "19 Mayıs Mah. İnönü Cad. No:45 Kozyatağı", "zipcode" : "34742", "contactname" : "Hakan Erdoğan", "city" : "İstanbul", "country" : "Türkiye" }, "basketitems" : [ { "id" : "BI101", "price" : 30, "name" : "ABC Marka Kolye", "category1" : "Giyim", "category2" : "Aksesuar", "itemtype" : "PHYSICAL", "submerchantkey" : "l4fcfyciof0patp6687dooch9po=", "submerchantprice" : 27 }, { "id" : "BI102", "price" : 50, "name" : "XYZ Oyun Kodu", "category1" : "Oyun", "category2" : "Online Oyun Kodları", "itemtype" : "VIRTUAL", "submerchantkey" : "lcb6ba9dwef5e8ygji0uiecw1kw=", "submerchantprice" : 42 }, { "id" : "BI103", "price" : 20, "name" : "EDC Marka Usb", "category1" : "Elektronik", "category2" : "Usb / Cable", "itemtype" : "PHYSICAL", "submerchantkey" : "D9V/MqIRitUzA4dutL+nCBvnWfs=", "submerchantprice" : 18 } ] } Örnek Java Sonuç Koduna Ait JSON Çıktısı: { "status" : "success", "locale" : "tr",
"systemtime" : 1444142311338, "conversationid" : "123456789", "price" : 100, "paidprice" : 110, "currency" : TRY, "installment" : 3, "paymentid" : "2744", "fraudstatus" : 1, "merchantcommissionrate" : 10.00000000, "merchantcommissionrateamount" : 10, "iyzicommissionrateamount" : 4.51000000, "iyzicommissionfee" : 0.25000000, "cardtype" : "CREDIT_CARD", "cardassociation" : "MASTER_CARD", "cardfamily" : "Bonus", "binnumber" : "554960", "basketid" : "B67832", "itemtransactions" : [ { "itemid" : "BI101", "paymenttransactionid" : "1307", "transactionstatus" : 1, "price" : 30, "paidprice" : 33.00000000, "merchantcommissionrate" : 10.00000000, "merchantcommissionrateamount" : 3.00000000, "iyzicommissionrateamount" : 1.35300000, "iyzicommissionfee" : 0.07500000, "blockagerate" : 7.00000000, "blockagerateamountmerchant" : 2.31000000, "blockagerateamountsubmerchant" : 0, "blockageresolveddate" : "2015-10- 16 17:38:31", "submerchantkey" : "l4fcfyciof0patp6687dooch9po=", "submerchantprice" : 27, "submerchantpayoutrate" : 90.00000000, "submerchantpayoutamount" : 27, "merchantpayoutamount" : 2.26200000 }, { "itemid" : "BI102", "paymenttransactionid" : "1308", "transactionstatus" : 1, "price" : 50, "paidprice" : 55.00000000, "merchantcommissionrate" : 10.00000000,
"merchantcommissionrateamount" : 5.00000000, "iyzicommissionrateamount" : 2.25500000, "iyzicommissionfee" : 0.12500000, "blockagerate" : 7.00000000, "blockagerateamountmerchant" : 3.85000000, "blockagerateamountsubmerchant" : 0, "blockageresolveddate" : "2015-10- 16 17:38:31", "submerchantkey" : "lcb6ba9dwef5e8ygji0uiecw1kw=", "submerchantprice" : 42, "submerchantpayoutrate" : 84.00000000, "submerchantpayoutamount" : 42, "merchantpayoutamount" : 6.77000000 }, { "itemid" : "BI103", "paymenttransactionid" : "1309", "transactionstatus" : 1, "price" : 20, "paidprice" : 22.00000000, "merchantcommissionrate" : 10.00000000, "merchantcommissionrateamount" : 2.00000000, "iyzicommissionrateamount" : 0.90200000, "iyzicommissionfee" : 0.05000000, "blockagerate" : 7.00000000, "blockagerateamountmerchant" : 1.54000000, "blockagerateamountsubmerchant" : 0, "blockageresolveddate" : "2015-10- 16 17:38:31", "submerchantkey" : "D9V/MqIRitUzA4dutL+nCBvnWfs=", "submerchantprice" : 18, "submerchantpayoutrate" : 90.00000000, "submerchantpayoutamount" : 18, "merchantpayoutamount" : 1.50800000 } ] } 3.3.1.3.2 Listeleme veya Abonelik Ödemesi (Pazaryeri/Marketplaces ve Pazaryeri Olmayan İş Modelindeki Üye İşyerleri İçin Aynı); Bir üye işyeri ister pazaryeri modelinde isterse standart e- ticaret modelinde olsun, dilerse escrow a tabi olmayacak listeleme veya abonelik ödemeleri yapabilir. Örneğin pazaryerinde satış
yapan alt üye işyerlerinin aylık mağaza/dükkan abonelik ödemesi gibi. Burada alıcı ve ürün olmadığı için escrow döngüsü yoktur. Aşağıdaki örnekte toplamda 100 TL lik 3 adet abonelik ödemesi, 3 taksitle 110 TL olacak şekilde ödeniyor. Hatta sepette yer alan ilk abonelik ödemesi aynı zamanda fiziksel bir kargo gerektirdiği için, tipi (BasketItemType) fiziksel ürün (PHYSICAL) olarak işaretlenmiştir, bu nedenle de teslimat adresi (ShippingAddress) gönderilmiştir. API Servis (Endpoint) İsmi: /payment/iyzipos/auth/ecom Method: HTTP POST Örnek Java İstek Kodu: EcomPaymentServiceClient client = new EcomPaymentServiceClientImpl(configuration); EcomPaymentAuthRequest request = new EcomPaymentAuthRequest(); request.setlocale(requestlocaletype.tr.getvalue()); request.setconversationid("123456789"); request.setprice(new BigDecimal("100")); request.setpaidprice(new BigDecimal("110")); request.setcurrency ("TRY"); request.setinstallment(3); request.setbasketid("b67832"); request.setpaymentchannel(paymentchannelrequesttype.web.name()); request.setpaymentgroup(paymentgrouprequesttype.subscription.name()); EcomPaymentCardDto paymentcard = new EcomPaymentCardDto(); paymentcard.setcardholdername("sabri Onur Tüzün"); paymentcard.setcardnumber("554960******7015"); paymentcard.setexpiremonth("**"); paymentcard.setexpireyear("20**"); paymentcard.setcvc("***"); paymentcard.setregistercard(0); request.setpaymentcard(paymentcard); EcomPaymentBuyerDto buyer = new EcomPaymentBuyerDto(); buyer.setid("by789"); buyer.setname("sabri Onur"); buyer.setsurname("tüzün"); buyer.setgsmnumber("+905350000000");
buyer.setemail("onur.tuzun@iyzico.com"); buyer.setidentitynumber("74300864791"); buyer.setlastlogindate("2015-10- 05 12:43:35"); buyer.setregistrationdate("2013-04- 21 15:12:09"); buyer.setregistrationaddress("nidakule Göztepe İş Merkezi Merdivenköy Mah. Bora Sok. No:1 Kat:19 Bağımsız 70/73 Göztepe Kadıköy"); buyer.setip("85.34.78.112"); buyer.setcity("istanbul"); buyer.setcountry("türkiye"); buyer.setzipcode("34732"); request.setbuyer(buyer); EcomPaymentShippingAddressDto shippingaddress = new EcomPaymentShippingAddressDto(); shippingaddress.setcontactname("hakan Erdoğan"); shippingaddress.setcity("istanbul"); shippingaddress.setcountry("türkiye"); shippingaddress.setaddress("19 Mayıs Mah. İnönü Cad. No:45 Kozyatağı"); shippingaddress.setzipcode("34742"); request.setshippingaddress(shippingaddress); EcomPaymentBillingAddressDto billingaddress = new EcomPaymentBillingAddressDto(); billingaddress.setcontactname("hakan Erdoğan"); billingaddress.setcity("istanbul"); billingaddress.setcountry("türkiye"); billingaddress.setaddress("19 Mayıs Mah. İnönü Cad. No:45 Kozyatağı"); billingaddress.setzipcode("34742"); request.setbillingaddress(billingaddress); List<EcomPaymentBasketItemDto> basketitems = new ArrayList<EcomPaymentBasketItemDto>(); EcomPaymentBasketItemDto basketitem1 = new EcomPaymentBasketItemDto(); basketitem1.setid("bi101"); basketitem1.setname("dükkan aboneliği ve katalog"); basketitem1.setcategory1("abonelik"); basketitem1.setcategory2("dükkan"); basketitem1.setitemtype(basketitemrequesttype.physical.name()); basketitem1.setprice(new BigDecimal("30")); basketitems.add(basketitem1); EcomPaymentBasketItemDto basketitem2 = new EcomPaymentBasketItemDto(); basketitem2.setid("bi102"); basketitem2.setname("listeleme aboneliği"); basketitem2.setcategory1("abonelik"); basketitem2.setcategory2("listeleme");
basketitem2.setitemtype(basketitemrequesttype.virtual.name()); basketitem2.setprice(new BigDecimal("50")); basketitems.add(basketitem2); EcomPaymentBasketItemDto basketitem3 = new EcomPaymentBasketItemDto(); basketitem3.setid("bi103"); basketitem3.setname("servis aboneliği"); basketitem3.setcategory1("abonelik"); basketitem3.setcategory2("servis"); basketitem3.setitemtype(basketitemrequesttype.virtual.name()); basketitem3.setprice(new BigDecimal("20")); basketitems.add(basketitem3); request.setbasketitems(basketitems); EcomPaymentAuthResponse response = client.auth(request); System.out.println("conversationId=" + response.getconversationid()); System.out.println("locale=" + response.getlocale()); System.out.println("status=" + response.getstatus()); System.out.println("errorCode=" + response.geterrorcode()); System.out.println("errorMessage=" + response.geterrormessage()); System.out.println("errorGroup=" + response.geterrorgroup()); System.out.println("systemTime=" + response.getsystemtime()); System.out.println("paymentId=" + response.getpaymentid()); System.out.println("currency=" + response.getcurrency()); System.out.println("price=" + response.getprice()); System.out.println("paidPrice=" + response.getpaidprice()); System.out.println("installment=" + response.getinstallment()); System.out.println("basketId=" + response.getbasketid()); System.out.println("binNumber=" + response.getbinnumber()); System.out.println("cardAssociation=" + response.getcardassociation()); System.out.println("cardFamily=" + response.getcardfamily()); System.out.println("cardType=" + response.getcardtype()); System.out.println("cardToken=" + response.getcardtoken()); System.out.println("cardUserKey=" + response.getcarduserkey()); System.out.println("fraudStatus=" + response.getfraudstatus()); System.out.println("iyziCommissionFee=" + response.getiyzicommissionfee()); System.out.println("iyziCommissionRateAmount=" + response.getiyzicommissionrateamount()); System.out.println("merchantCommissionRate=" + response.getmerchantcommissionrate()); System.out.println("merchantCommissionRateAmount=" + response.getmerchantcommissionrateamount()); List<EcomPaymentItemTransactionDto> itemtransactions = response.getitemtransactions();
if (itemtransactions!= null &&!itemtransactions.isempty()) { for (EcomPaymentItemTransactionDto itemtransaction : itemtransactions) { System.out.println("paymentTransactionId=" + itemtransaction.getpaymenttransactionid()); System.out.println("itemId=" + itemtransaction.getitemid()); System.out.println("paidPrice=" + itemtransaction.getpaidprice()); System.out.println("price=" + itemtransaction.getprice()); System.out.println("transactionStatus=" + itemtransaction.gettransactionstatus()); System.out.println("blockageRate=" + itemtransaction.getblockagerate()); System.out.println("blockageRateAmountMerchant=" + itemtransaction.getblockagerateamountmerchant()); System.out.println("blockageRateAmountSubMerchant=" + itemtransaction.getblockagerateamountsubmerchant()); System.out.println("blockageResolvedDate=" + itemtransaction.getblockageresolveddate()); System.out.println("iyziCommissionFee=" + itemtransaction.getiyzicommissionfee()); System.out.println("iyziCommissionRateAmount=" + itemtransaction.getiyzicommissionrateamount()); System.out.println("merchantCommissionRate=" + itemtransaction.getmerchantcommissionrate()); System.out.println("merchantCommissionRateAmount=" + itemtransaction.getmerchantcommissionrateamount()); System.out.println("merchantPayoutAmount=" + itemtransaction.getmerchantpayoutamount()); } } Örnek Java Sonuç Çıktısı: conversationid=123456789 locale=tr status=success errorcode=null errormessage=null errorgroup=null systemtime=1444735597648 paymentid=667906 price=100 paidprice=110 currency= TRY installment=3 basketid=b67832 binnumber=554960
cardassociation=master_card cardfamily=bonus cardtype=credit_card cardtoken=null carduserkey=null fraudstatus=1 iyzicommissionfee=0.25000000 iyzicommissionrateamount=4.51000000 merchantcommissionrate=10.00000000 merchantcommissionrateamount=10 paymenttransactionid=506591 itemid=bi101 paidprice=33.00000000 price=30 transactionstatus=2 blockagerate=10.00000000 blockagerateamountmerchant=3.30000000 blockagerateamountsubmerchant=0 blockageresolveddate=2015-10- 28 14:26:37 iyzicommissionfee=0.07500000 iyzicommissionrateamount=1.35300000 merchantcommissionrate=10.00000000 merchantcommissionrateamount=3.00000000 merchantpayoutamount=28.27200000 paymenttransactionid=506596 itemid=bi102 paidprice=55.00000000 price=50 transactionstatus=2 blockagerate=10.00000000 blockagerateamountmerchant=5.50000000 blockagerateamountsubmerchant=0 blockageresolveddate=2015-10- 28 14:26:37 iyzicommissionfee=0.12500000 iyzicommissionrateamount=2.25500000 merchantcommissionrate=10.00000000 merchantcommissionrateamount=5.00000000 merchantpayoutamount=47.12000000 paymenttransactionid=506601 itemid=bi103 paidprice=22.00000000 price=20 transactionstatus=2
blockagerate=10.00000000 blockagerateamountmerchant=2.20000000 blockagerateamountsubmerchant=0 blockageresolveddate=2015-10- 28 14:26:37 iyzicommissionfee=0.05000000 iyzicommissionrateamount=0.90200000 merchantcommissionrate=10.00000000 merchantcommissionrateamount=2.00000000 merchantpayoutamount=18.84800000 Örnek Java İstek Koduna Ait JSON Çıktısı: { "locale" : "tr", "conversationid" : "123456789", "price" : 100, "paidprice" : 110, "currency" : TRY, "installment" : 3, "paymentchannel" : "WEB", "basketid" : "B67832", "paymentgroup" : "SUBSCRIPTION", "paymentcard" : { "cardholdername" : "Sabri Onur Tüzün", "cardnumber" : "554960******7015", "expireyear" : "20**", "expiremonth" : "**", "cvc" : ***", "registercard" : 0 }, "buyer" : { "id" : "BY789", "name" : "Sabri Onur", "surname" : "Tüzün", "identitynumber" : "74300864791", "email" : "onur.tuzun@iyzico.com", "gsmnumber" : "+905350000000", "registrationdate" : "2013-04- 21 15:12:09", "lastlogindate" : "2015-10- 05 12:43:35", "registrationaddress" : "Nidakule Göztepe İş Merkezi Merdivenköy Mah. Bora Sok. No:1 Kat:19 Bağımsız 70/73 Göztepe Kadıköy",
"city" : "İstanbul", "country" : "Türkiye", "zipcode" : "34732", "ip" : "85.34.78.112" }, "shippingaddress" : { "address" : "19 Mayıs Mah. İnönü Cad. No:45 Kozyatağı", "zipcode" : "34742", "contactname" : "Hakan Erdoğan", "city" : "İstanbul", "country" : "Türkiye" }, "billingaddress" : { "address" : "19 Mayıs Mah. İnönü Cad. No:45 Kozyatağı", "zipcode" : "34742", "contactname" : "Hakan Erdoğan", "city" : "İstanbul", "country" : "Türkiye" }, "basketitems" : [ { "id" : "BI101", "price" : 30, "name" : "Dükkan aboneliği ve katalog", "category1" : "Abonelik", "category2" : "Dükkan", "itemtype" : "PHYSICAL" }, { "id" : "BI102", "price" : 50, "name" : "Listeleme aboneliği", "category1" : "Abonelik", "category2" : "Listeleme", "itemtype" : "VIRTUAL" }, { "id" : "BI103", "price" : 20, "name" : "Servis aboneliği", "category1" : "Abonelik", "category2" : "Servis", "itemtype" : "VIRTUAL" } ] }
Örnek Java Sonuç Koduna Ait JSON Çıktısı: { "status" : "success", "locale" : "tr", "systemtime" : 1444735597648, "conversationid" : "123456789", "price" : 100, "paidprice" : 110, "currency" : TRY, "installment" : 3, "paymentid" : "667906", "fraudstatus" : 1, "merchantcommissionrate" : 10.00000000, "merchantcommissionrateamount" : 10, "iyzicommissionrateamount" : 4.51000000, "iyzicommissionfee" : 0.25000000, "cardtype" : "CREDIT_CARD", "cardassociation" : "MASTER_CARD", "cardfamily" : "Bonus", "binnumber" : "554960", "basketid" : "B67832", "itemtransactions" : [ { "itemid" : "BI101", "paymenttransactionid" : "506591", "transactionstatus" : 2, "price" : 30, "paidprice" : 33.00000000, "merchantcommissionrate" : 10.00000000, "merchantcommissionrateamount" : 3.00000000, "iyzicommissionrateamount" : 1.35300000, "iyzicommissionfee" : 0.07500000, "blockagerate" : 10.00000000, "blockagerateamountmerchant" : 3.30000000, "blockagerateamountsubmerchant" : 0, "blockageresolveddate" : "2015-10- 28 14:26:37", "submerchantprice" : 0, "submerchantpayoutrate" : 0E- 8, "submerchantpayoutamount" : 0, "merchantpayoutamount" : 28.27200000 }, { "itemid" : "BI102",
"paymenttransactionid" : "506596", "transactionstatus" : 2, "price" : 50, "paidprice" : 55.00000000, "merchantcommissionrate" : 10.00000000, "merchantcommissionrateamount" : 5.00000000, "iyzicommissionrateamount" : 2.25500000, "iyzicommissionfee" : 0.12500000, "blockagerate" : 10.00000000, "blockagerateamountmerchant" : 5.50000000, "blockagerateamountsubmerchant" : 0, "blockageresolveddate" : "2015-10- 28 14:26:37", "submerchantprice" : 0, "submerchantpayoutrate" : 0E- 8, "submerchantpayoutamount" : 0, "merchantpayoutamount" : 47.12000000 }, { "itemid" : "BI103", "paymenttransactionid" : "506601", "transactionstatus" : 2, "price" : 20, "paidprice" : 22.00000000, "merchantcommissionrate" : 10.00000000, "merchantcommissionrateamount" : 2.00000000, "iyzicommissionrateamount" : 0.90200000, "iyzicommissionfee" : 0.05000000, "blockagerate" : 10.00000000, "blockagerateamountmerchant" : 2.20000000, "blockagerateamountsubmerchant" : 0, "blockageresolveddate" : "2015-10- 28 14:26:37", "submerchantprice" : 0, "submerchantpayoutrate" : 0E- 8, "submerchantpayoutamount" : 0, "merchantpayoutamount" : 18.84800000 } ] } 3.3.1.3.3 Pazaryeri/Marketplaces İş Modelinde OlMAyan Üye İşyerleri İçin Ürün Ödemesi; Pazaryeri iş modelinde olmayan, standart e- ticaret iş modelindeki üye işyerlerinin ürün ödemesi neredeyse bir üstte yer alan listeleme/abonelik ödemesiyle aynıdır. Tek fark,
Sepette yer alan ürünlerin tipi (BasketItemType) fiziksel ürün (PHYSICAL) olarak işaretlenmelidir, bu nedenle de teslimat adresi (ShippingAddress) gönderilmelidir. Sepette yer alan ürünler için submerchantkey ve submerchantprice gönderilmemelidir Ödeme grubu ürün gönderilmelidir: request.setpaymentgroup(paymentgrouprequesttype.product.name()); 3.3.1.4 3D Secure Ödeme Üye işyeri; çeşitli durumlarda (risk faktörünün yüksek oluşu, alıcının 3D Secure seçimi, banka kartı ile ödeme yapılması, vb) ödemeyi 3D Secure olarak almayı tercih edebilir. 3D Secure ödeme temelde 3 aşamadan oluşur: 1. 3D Secure u Başlatma (initialize3ds) : 3DS ödeme alınabilmesi için iyzico ya ödeme parametreleriyle birlikte bir geri dönüş (callback) URL i POST edilir. Dönülen sonuç başarılı ise (status=success), dönüş içinde yer alan HTML içerik (threedshtmlcontent), tarayıcının responsebody sine basılır, böylece kullanıcı otomatik olarak, bankanın 3DS ödeme sayfasına (SMS şifresini gireceği banka sayfası) yönlenir. Not: iyzico dan dönen HTML içerik Base64 encoded olarak iletilir ancak iyzico istemcilerinde sizin adınıza otomatik olarak Base64 decoding işlemi yapılır, dolayısıyla siz kulanıcı dostu HTML içeriği görebilirsiniz. 2. Üye İşyerine Dönüş (callback) : Kullanıcı bankanın 3DS ödeme sayfasında şifresini girdikten sonra, sonuç iyzico ya gelir. İyzico kendi kontrollerini yaptıktan sonra, üye işyeri tarafında gerekli kontrollerin (ürün hala satışta mı, ürün hala stokta mı, oturum hala açık mı, vb) yapılması için üye işyerinin callback URL ine HTML post eder. Bu adım, üye işyeri iyzico ve banka üçlüsü arasında el sıkışma (handshake) için gereklidir. Bu aşamda henüz para çekilmemiştir. 3D Secure modellerinde 3D modeli tam doğrulama (Full 3DS) ile kullanılmaktadır. 3. 3D Secure ile Ödemeyi Tamamlama (auth3ds) : Eğer, üye işyerinin callback URL ine dönülen HTML sonuç içinde işlem durumu başarılı (status=success) ise, üye işyeri kendi
gerekli kontrollerini yaptıktan sonra, ödeme alınması = para çekilmesi için iyzico ya istekte (auth3ds) bulunur ve işlem sonucunu kendi kullanıcısına gösterir. Callback URL ine dönülen HTML sonuç içinde işlem durumu başarısız ise auth3ds isteğinde bulunulmamalıdır. 3.3.1.4.1 Pazaryeri/Marketplaces İş Modelinde Olan Üye İşyerleri İçin Ürün Ödemesi (3D Secure); Aşağıdaki örnekte, 3 üründen oluşan 100 TL tutarında bir sepet 3 taksitli, 110 TL olarak 3D Secure yöntemiyle ödeniyor. Sepetteki ürünlerden en az 1 tanesi fiziksel ürün olduğu için teslimat adresi bilgisi gönderiliyor. Sepette yer alan her bir ürün farklı alt üye işyerine ait ve sırasıyla 30 TL lik ürün onaylandığında 27 TL si (üye işyeri satış komisyonu bu ürün için %10), 50 TL lik ürün onaylandığında 42 TL si (üye işyeri satış komisyonu bu ürün için %16) ve 20 TL lik ürün onaylandığında 18 TL si (üye işyeri satış komisyonu bu ürün için %10) alt üye işyerine gönderilecektir. 3D Secure u Başlatma (initialize3ds) Ürün Ödemesi: API Servis (Endpoint) İsmi: /payment/iyzipos/initialize3ds/ecom Method: HTTP POST Örnek initialize3ds Java İstek Çıktısı: EcomPaymentServiceClient client = new EcomPaymentServiceClientImpl(configuration); EcomPaymentThreeDSInitializeRequest request = new EcomPaymentThreeDSInitializeRequest(); request.setlocale(requestlocaletype.tr.getvalue()); request.setconversationid("123456789"); request.setcallbackurl("https://www.merchant.com/callbackurl"); request.setprice(new BigDecimal("100")); request.setpaidprice(new BigDecimal("110")); request.setcurrency ("TRY"); request.setinstallment(3); request.setbasketid("b67832"); request.setpaymentchannel(paymentchannelrequesttype.web.name()); request.setpaymentgroup(paymentgrouprequesttype.product.name()); EcomPaymentCardDto paymentcard = new EcomPaymentCardDto(); paymentcard.setcardholdername("sabri Onur Tüzün");
paymentcard.setcardnumber("554960******7015"); paymentcard.setexpiremonth("**"); paymentcard.setexpireyear("20**"); paymentcard.setcvc("***"); paymentcard.setregistercard(0); request.setpaymentcard(paymentcard); EcomPaymentBuyerDto buyer = new EcomPaymentBuyerDto(); buyer.setid("by789"); buyer.setname("sabri Onur"); buyer.setsurname("tüzün"); buyer.setgsmnumber("+905350000000"); buyer.setemail("onur.tuzun@iyzico.com"); buyer.setidentitynumber("74300864791"); buyer.setlastlogindate("2015-10- 05 12:43:35"); buyer.setregistrationdate("2013-04- 21 15:12:09"); buyer.setregistrationaddress("nidakule Göztepe İş Merkezi Merdivenköy Mah. Bora Sok. No:1 Kat:19 Bağımsız 70/73 Göztepe Kadıköy"); buyer.setip("85.34.78.112"); buyer.setcity("istanbul"); buyer.setcountry("türkiye"); buyer.setzipcode("34732"); request.setbuyer(buyer); EcomPaymentShippingAddressDto shippingaddress = new EcomPaymentShippingAddressDto(); shippingaddress.setcontactname("hakan Erdoğan"); shippingaddress.setcity("istanbul"); shippingaddress.setcountry("türkiye"); shippingaddress.setaddress("19 Mayıs Mah. İnönü Cad. No:45 Kozyatağı"); shippingaddress.setzipcode("34742"); request.setshippingaddress(shippingaddress); EcomPaymentBillingAddressDto billingaddress = new EcomPaymentBillingAddressDto(); billingaddress.setcontactname("hakan Erdoğan"); billingaddress.setcity("istanbul"); billingaddress.setcountry("türkiye"); billingaddress.setaddress("19 Mayıs Mah. İnönü Cad. No:45 Kozyatağı"); billingaddress.setzipcode("34742"); request.setbillingaddress(billingaddress); List<EcomPaymentBasketItemDto> basketitems = new ArrayList<EcomPaymentBasketItemDto>(); EcomPaymentBasketItemDto basketitem1 = new EcomPaymentBasketItemDto(); basketitem1.setid("bi101");
basketitem1.setname("abc Marka Kolye"); basketitem1.setcategory1("giyim"); basketitem1.setcategory2("aksesuar"); basketitem1.setitemtype(basketitemrequesttype.physical.name()); basketitem1.setprice(new BigDecimal("30")); basketitem1.setsubmerchantkey("ha3us4v5mk2652kkjk5728cc4407an"); basketitem1.setsubmerchantprice(new BigDecimal("27")); basketitems.add(basketitem1); EcomPaymentBasketItemDto basketitem2 = new EcomPaymentBasketItemDto(); basketitem2.setid("bi102"); basketitem2.setname("xyz Oyun Kodu"); basketitem2.setcategory1("oyun"); basketitem2.setcategory2("online Oyun Kodları"); basketitem2.setitemtype(basketitemrequesttype.virtual.name()); basketitem2.setprice(new BigDecimal("50")); basketitem2.setsubmerchantkey("ha3us4v5mk2652kkjk5728cc4407an"); basketitem2.setsubmerchantprice(new BigDecimal("42")); basketitems.add(basketitem2); EcomPaymentBasketItemDto basketitem3 = new EcomPaymentBasketItemDto(); basketitem3.setid("bi103"); basketitem3.setname("edc Marka Usb"); basketitem3.setcategory1("elektronik"); basketitem3.setcategory2("usb / Cable"); basketitem3.setitemtype(basketitemrequesttype.physical.name()); basketitem3.setprice(new BigDecimal("20")); basketitem3.setsubmerchantkey("ha3us4v5mk2652kkjk5728cc4407an"); basketitem3.setsubmerchantprice(new BigDecimal("18")); basketitems.add(basketitem3); request.setbasketitems(basketitems); EcomPaymentThreeDSInitializeResponse response = client.initializethreeds(request); System.out.println("conversationId=" + response.getconversationid()); System.out.println("locale=" + response.getlocale()); System.out.println("status=" + response.getstatus()); System.out.println("errorCode=" + response.geterrorcode()); System.out.println("errorMessage=" + response.geterrormessage()); System.out.println("errorGroup=" + response.geterrorgroup()); System.out.println("systemTime=" + response.getsystemtime()); System.out.println("threeDSHtmlContent=" + response.getthreedshtmlcontent());
Örnek initialize3ds Java Sonuç Çıktısı: conversationid=123456789 locale=tr status=success errorcode=null errormessage=null errorgroup=null systemtime=1444739797682 threedshtmlcontent=<!doctype HTML PUBLIC "- //W3C//DTD HTML 4.01//EN" "http://www.w3.org/tr/html4/strict.dtd"> <html> <head> <title>mdpay default response template for web</title> </head> <body bgcolor="#02014e" OnLoad="OnLoadEvent();" > <form name="downloadform" action="https://3dsecure.garanti.com.tr/acs/0036537396382857515710002306/merchant/contro l/master" method="post"> <input type="hidden" name="pareq" value="ejxvudtuwjam/zwkd2islvsctcqud0mae4jp0vzwug860rtsdiv9/zkwy/yun2phxz6g17 1GnG9QNhoFLLGusx16RT4e8GESM87ZQMBqssaTgG/UdVEpwXzqB0Bu0P7Scp8pIyCTp+niRfCARjwEco VQol7MRcSjiCYRS4H0BKisRFFcfgpZAekAyKpRRl9EnFqFG4BGH8TemOOIkLZt/f6LL6sSiEsBeYywalxU21b nihdbs522qkzy+pzvanz+xo/lg8ovzwe3buiqim8mioayziglpramhnquwvgoh6x0m4jx9bvhgpuptvv 1FByd0qQHNudSfymwlmpU8iLSoV35jgDPx0qhrbAi9xhyrKXwrKx7gTzWmD05X6WxhlEaWl/jMI3CJEh4z BmPnXAQ0si53RW5/oU1jSWMdQIOAHFtyPWQ5HpnG/27/y9Ltqri"> <input type="hidden" name="termurl" value="https://spos.isbank.com.tr/fim/est3dgate?msgid=54871551"> <input type="hidden" name="md" value="554960:49b5838c731576e72b2bb10319d348d301545852c82bb0a45a0e9b11ecb86ce7 :3668:##700656608619"> <!- - To support javascript unaware/disabled browsers - - > <noscript> <center>please click the submit button below.<br> <input type="submit" name="submit" value="submit"></center> </noscript> </form>
<SCRIPT LANGUAGE="Javascript" > <!- - about:blank - - > <!- - function OnLoadEvent() { document.downloadform.submit(); } //- - > </SCRIPT> </body> </html> Örnek initialize3ds Java İstek Koduna Ait JSON Çıktısı: { "locale" : "tr", "conversationid" : "123456789", "price" : 100, "paidprice" : 110, "currency" : TRY, "installment" : 3, "paymentchannel" : "WEB", "basketid" : "B67832", "paymentgroup" : "PRODUCT", "paymentcard" : { "cardholdername" : "Sabri Onur Tüzün", "cardnumber" : "554960******7015", "expireyear" : "20**", "expiremonth" : "**", "cvc" : "***", "registercard" : 0 }, "buyer" : { "id" : "BY789", "name" : "Sabri Onur", "surname" : "Tüzün", "identitynumber" : "74300864791", "email" : "onur.tuzun@iyzico.com", "gsmnumber" : "+905350000000", "registrationdate" : "2013-04- 21 15:12:09", "lastlogindate" : "2015-10- 05 12:43:35", "registrationaddress" : "Nidakule Göztepe İş Merkezi Merdivenköy Mah. Bora Sok. No:1 Kat:19 Bağımsız 70/73 Göztepe Kadıköy",
"city" : "İstanbul", "country" : "Türkiye", "zipcode" : "34732", "ip" : "85.34.78.112" }, "shippingaddress" : { "address" : "19 Mayıs Mah. İnönü Cad. No:45 Kozyatağı", "zipcode" : "34742", "contactname" : "Hakan Erdoğan", "city" : "İstanbul", "country" : "Türkiye" }, "billingaddress" : { "address" : "19 Mayıs Mah. İnönü Cad. No:45 Kozyatağı", "zipcode" : "34742", "contactname" : "Hakan Erdoğan", "city" : "İstanbul", "country" : "Türkiye" }, "basketitems" : [ { "id" : "BI101", "price" : 30, "name" : "ABC Marka Kolye", "category1" : "Giyim", "category2" : "Aksesuar", "itemtype" : "PHYSICAL", "submerchantkey" : "ha3us4v5mk2652kkjk5728cc4407an", "submerchantprice" : 27 }, { "id" : "BI102", "price" : 50, "name" : "XYZ Oyun Kodu", "category1" : "Oyun", "category2" : "Online Oyun Kodları", "itemtype" : "VIRTUAL", "submerchantkey" : "ha3us4v5mk2652kkjk5728cc4407an", "submerchantprice" : 42 }, { "id" : "BI103", "price" : 20, "name" : "EDC Marka Usb", "category1" : "Elektronik", "category2" : "Usb / Cable",
"itemtype" : "PHYSICAL", "submerchantkey" : "ha3us4v5mk2652kkjk5728cc4407an", "submerchantprice" : 18 } ], "callbackurl" : "https://www.merchant.com/callbackurl" } Örnek initialize3ds Java Sonuç Koduna Ait JSON Çıktısı: { "status" : "success", "locale" : "tr", "systemtime" : 1444740039787, "conversationid" : "123456789", "threedshtmlcontent" : "<!DOCTYPE HTML PUBLIC \"- //W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/tr/html4/strict.dtd\">\n\n<html>\n<head>\n <title>mdpay default response template for web</title>\n</head>\n<body bgcolor=\"#02014e\" OnLoad=\"OnLoadEvent();\" >\n<form name=\"downloadform\"\n action=\"https://3dsecure.garanti.com.tr/acs/0036537398804063853 260059907/merchant/control/master\"\n method=\"post\">\n <input type=\"hidden\"\n name=\"pareq\"\n value=\"ejxvudtuwjam/zwkd2istukfgusmmecccw 19YI9Vao1qawtpu8K+fgnlsj3F59jxsY8h3Wui+RupThPChpom+yCnyCcjGcSRJ4UcIWynr3RE+CbdFHWFw uwub+wgzs+t9lnvimtq+lr6qenxuprarhbk0qs5hjimerykbnhaqjwvhmx5p1a1sasavxdvq88yjubh BqDTX7hv28OYsb7v3eGLq+oSmE0Be4yw7WzUmFanIseMynT9uTs2i3TXr5+XvVgFCzFT6UZNgNkKyLO W0ONCCi58R3jjIBj7AbALD1lpZ8D09d0Rgrucm60GCg5WaToAk7OpvxQYSzVV6oxJYFa+I6DToa7IVJgN7z Hk1Ch0jKx9gT3WmC2tr6o1hnHuG18jP4ljHvDQj6XvhZzLJOGRdftSZPsXxjQRC3ERsACYbcOuh2TXO5vo3 /1/AU1fqgg=\">\n <input type=\"hidden\"\n name=\"termurl\" value=\"https://spos.isbank.com.tr/fim/est3dgate?msgid=54872515\">\n <input type=\"hidden\"\n name=\"md\"\n value=\"554960:4c296bfd8b09cb33b583b7401731de2 B57E8A0753CE88B889A628E6772B1325B:3867:##700656608619\">\n <!- - To support javascript unaware/disabled browsers - - >\n <noscript>\n <center>please click the submit button below.<br>\n <input type=\"submit\" name=\"submit\" value=\"submit\"></center>\n </noscript>\n</form>\n\n<script LANGUAGE=\"Javascript\" >\n <!- - about:blank - - >\n <!- - \n function OnLoadEvent() {\n document.downloadform.submit();\n }\n //- - >\n</script>\n</body>\n</html>\u0000" } Üye İşyerine Dönüş (callback) : Kullanıcı bankanın 3D Secure ödeme sayfasında SMS şifresini girdikten sonra sonuç iyzico ya iletilir. İyzico da gerekli kontrollerini yaptıktan sonra kullanıcıyı, tarayıcı seviyesinde, üye işyeri
dönüş (callback) URL ine aşağıdaki şekilde POST eder ve yönlendirir. Callback URL ine (https://www.merchant.com/callbackurl) dönen 3 temel parametre bulunur. Bunlardan ilki işlemin sonucunu gösteren status alanı (success veya failure), diğeri para çekimi yapılacak ödemenin id si paymentid, son olarak da iletişimde kullanılan veri conversationdata. Eğer status=success ise paymentid ve conversationdata iletilerek 3D Secure ödeme tamamlama (auth3ds) yapılır. status=failure ise paymentid ve conversationdata boş gelecektir, bu durumda auth3ds isteği yapılmamalıdır. Örnek Üye İşyeri Dönüş HTML İçeriği: <!doctype html> <html lang="en"> <head> <title>merchant 3ds Callback Form</title> </head> <body onload="submitiyzicothreedscallbackform();"> <form id="iyzico- 3ds- callback- form" name="iyzico- 3ds- callback- form" action="https://www.merchant.com/callbackurl" method="post"> <input type="hidden" name="status" value="success"> <input type="hidden" name="paymentid" value="457932"> <input type="hidden" name="conversationdata" value="kpea/vsq2nsptxa3mihveg=="> </form> <script language="javascript"> <!- - function submitiyzicothreedscallbackform() { document.getelementbyid("iyzico- 3ds- callback- form").submit(); } //- - > </script> </body> </html> 3D Secure ile Ödemeyi Tamamlama (auth3ds) : iyzico, üye işyerinin callback URL ine başarılı sonuç POST ettikten sonra, üye işyeri kendi tarafında gerekli kontrolleri (ürün hala satışta mı, ürün hala stokta mı, oturum hala açık mı, vb) yapar ve ödemeyi almaya karar verirse auth3ds isteğinde bulunur.
API Servis (Endpoint) İsmi: /payment/iyzipos/auth3ds/ecom Method: HTTP POST Örnek auth3ds Java İstek Çıktısı: EcomPaymentServiceClient client = new EcomPaymentServiceClientImpl(configuration); EcomPaymentThreeDSRequest request = new EcomPaymentThreeDSRequest(); request.setlocale(requestlocaletype.tr.getvalue()); request.setconversationid("123456789"); request.setpaymentid("457932"); request.setconversationdata("kpea/vsq2nsptxa3mihveg=="); EcomPaymentThreeDSResponse response = client.threedsauth(request); System.out.println("conversationId=" + response.getconversationid()); System.out.println("locale=" + response.getlocale()); System.out.println("status=" + response.getstatus()); System.out.println("errorCode=" + response.geterrorcode()); System.out.println("errorMessage=" + response.geterrormessage()); System.out.println("errorGroup=" + response.geterrorgroup()); System.out.println("systemTime=" + response.getsystemtime()); System.out.println("paymentId=" + response.getpaymentid()); System.out.println("price=" + response.getprice()); System.out.println("paidPrice=" + response.getpaidprice()); System.out.println("currency=" + response.getcurrency()); System.out.println("installment=" + response.getinstallment()); System.out.println("basketId=" + response.getbasketid()); System.out.println("binNumber=" + response.getbinnumber()); System.out.println("cardAssociation=" + response.getcardassociation()); System.out.println("cardFamily=" + response.getcardfamily()); System.out.println("cardType=" + response.getcardtype()); System.out.println("cardToken=" + response.getcardtoken()); System.out.println("cardUserKey=" + response.getcarduserkey()); System.out.println("fraudStatus=" + response.getfraudstatus()); System.out.println("iyziCommissionFee=" + response.getiyzicommissionfee()); System.out.println("iyziCommissionRateAmount=" + response.getiyzicommissionrateamount()); System.out.println("merchantCommissionRate=" + response.getmerchantcommissionrate()); System.out.println("merchantCommissionRateAmount=" + response.getmerchantcommissionrateamount());
List<EcomPaymentItemTransactionDto> itemtransactions = response.getitemtransactions(); if (itemtransactions!= null &&!itemtransactions.isempty()) { for (EcomPaymentItemTransactionDto itemtransaction : itemtransactions) { System.out.println("paymentTransactionId=" + itemtransaction.getpaymenttransactionid()); System.out.println("itemId=" + itemtransaction.getitemid()); System.out.println("paidPrice=" + itemtransaction.getpaidprice()); System.out.println("price=" + itemtransaction.getprice()); System.out.println("transactionStatus=" + itemtransaction.gettransactionstatus()); System.out.println("blockageRate=" + itemtransaction.getblockagerate()); System.out.println("blockageRateAmountMerchant=" + itemtransaction.getblockagerateamountmerchant()); System.out.println("blockageRateAmountSubMerchant=" + itemtransaction.getblockagerateamountsubmerchant()); System.out.println("blockageResolvedDate=" + itemtransaction.getblockageresolveddate()); System.out.println("iyziCommissionFee=" + itemtransaction.getiyzicommissionfee()); System.out.println("iyziCommissionRateAmount=" + itemtransaction.getiyzicommissionrateamount()); System.out.println("merchantCommissionRate=" + itemtransaction.getmerchantcommissionrate()); System.out.println("merchantCommissionRateAmount=" + itemtransaction.getmerchantcommissionrateamount()); System.out.println("merchantPayoutAmount=" + itemtransaction.getmerchantpayoutamount()); System.out.println("subMerchantKey=" + itemtransaction.getsubmerchantkey()); System.out.println("subMerchantPayoutAmount=" + itemtransaction.getsubmerchantpayoutamount()); System.out.println("subMerchantPayoutRate=" + itemtransaction.getsubmerchantpayoutrate()); System.out.println("subMerchantPrice=" + itemtransaction.getsubmerchantprice()); } } Örnek auth3ds Java Sonuç Çıktısı: conversationid=123456789 locale=tr status=success errorcode=null errormessage=null errorgroup=null systemtime=1444142311338 paymentid=457932 price=100
paidprice=110 currency=try installment=3 basketid=b67832 binnumber=554960 cardassociation=master_card cardfamily=bonus cardtype=credit_card cardtoken=null carduserkey=null fraudstatus=1 iyzicommissionfee=0.25000000 iyzicommissionrateamount=4.51000000 merchantcommissionrate=10.00000000 merchantcommissionrateamount=10 paymenttransactionid=1307 itemid=bi101 paidprice=33.00000000 price=30 transactionstatus=1 blockagerate=7.00000000 blockagerateamountmerchant=2.31000000 blockagerateamountsubmerchant=0 blockageresolveddate=2015-10- 16 17:38:31 iyzicommissionfee=0.07500000 iyzicommissionrateamount=1.35300000 merchantcommissionrate=10.00000000 merchantcommissionrateamount=3.00000000 merchantpayoutamount=2.26200000 submerchantkey=l4fcfyciof0patp6687dooch9po= submerchantpayoutamount=27 submerchantpayoutrate=90.00000000 submerchantprice=27 paymenttransactionid=1308 itemid=bi102 paidprice=55.00000000 price=50 transactionstatus=1 blockagerate=7.00000000 blockagerateamountmerchant=3.85000000 blockagerateamountsubmerchant=0 blockageresolveddate=2015-10- 16 17:38:31 iyzicommissionfee=0.12500000
iyzicommissionrateamount=2.25500000 merchantcommissionrate=10.00000000 merchantcommissionrateamount=5.00000000 merchantpayoutamount=6.77000000 submerchantkey=lcb6ba9dwef5e8ygji0uiecw1kw= submerchantpayoutamount=42 submerchantpayoutrate=84.00000000 submerchantprice=42 paymenttransactionid=1309 itemid=bi103 paidprice=22.00000000 price=20 transactionstatus=1 blockagerate=7.00000000 blockagerateamountmerchant=1.54000000 blockagerateamountsubmerchant=0 blockageresolveddate=2015-10- 16 17:38:31 iyzicommissionfee=0.05000000 iyzicommissionrateamount=0.90200000 merchantcommissionrate=10.00000000 merchantcommissionrateamount=2.00000000 merchantpayoutamount=1.50800000 submerchantkey=d9v/mqirituza4dutl+ncbvnwfs= submerchantpayoutamount=18 submerchantpayoutrate=90.00000000 submerchantprice=18 Örnek auth3ds Java İstek Koduna Ait JSON Çıktısı: { "locale" : "tr", "conversationid" : "123456789", "paymentid" : "457932", "conversationdata" : "KPeA/vSq2nspTXa3mIHveg==" } Örnek auth3ds Java Sonuç Koduna Ait JSON Çıktısı: { "status" : "success", "locale" : "tr",
"systemtime" : 1444142311338, "conversationid" : "123456789", "price" : 100, "paidprice" : 110, "currency" : TRY, "installment" : 3, "paymentid" : "457932", "fraudstatus" : 1, "merchantcommissionrate" : 10.00000000, "merchantcommissionrateamount" : 10, "iyzicommissionrateamount" : 4.51000000, "iyzicommissionfee" : 0.25000000, "cardtype" : "CREDIT_CARD", "cardassociation" : "MASTER_CARD", "cardfamily" : "Bonus", "binnumber" : "554960", "basketid" : "B67832", "itemtransactions" : [ { "itemid" : "BI101", "paymenttransactionid" : "1307", "transactionstatus" : 1, "price" : 30, "paidprice" : 33.00000000, "merchantcommissionrate" : 10.00000000, "merchantcommissionrateamount" : 3.00000000, "iyzicommissionrateamount" : 1.35300000, "iyzicommissionfee" : 0.07500000, "blockagerate" : 7.00000000, "blockagerateamountmerchant" : 2.31000000, "blockagerateamountsubmerchant" : 0, "blockageresolveddate" : "2015-10- 16 17:38:31", "submerchantkey" : "l4fcfyciof0patp6687dooch9po=", "submerchantprice" : 27, "submerchantpayoutrate" : 90.00000000, "submerchantpayoutamount" : 27, "merchantpayoutamount" : 2.26200000 }, { "itemid" : "BI102", "paymenttransactionid" : "1308", "transactionstatus" : 1, "price" : 50, "paidprice" : 55.00000000, "merchantcommissionrate" : 10.00000000,
"merchantcommissionrateamount" : 5.00000000, "iyzicommissionrateamount" : 2.25500000, "iyzicommissionfee" : 0.12500000, "blockagerate" : 7.00000000, "blockagerateamountmerchant" : 3.85000000, "blockagerateamountsubmerchant" : 0, "blockageresolveddate" : "2015-10- 16 17:38:31", "submerchantkey" : "lcb6ba9dwef5e8ygji0uiecw1kw=", "submerchantprice" : 42, "submerchantpayoutrate" : 84.00000000, "submerchantpayoutamount" : 42, "merchantpayoutamount" : 6.77000000 }, { "itemid" : "BI103", "paymenttransactionid" : "1309", "transactionstatus" : 1, "price" : 20, "paidprice" : 22.00000000, "merchantcommissionrate" : 10.00000000, "merchantcommissionrateamount" : 2.00000000, "iyzicommissionrateamount" : 0.90200000, "iyzicommissionfee" : 0.05000000, "blockagerate" : 7.00000000, "blockagerateamountmerchant" : 1.54000000, "blockagerateamountsubmerchant" : 0, "blockageresolveddate" : "2015-10- 16 17:38:31", "submerchantkey" : "D9V/MqIRitUzA4dutL+nCBvnWfs=", "submerchantprice" : 18, "submerchantpayoutrate" : 90.00000000, "submerchantpayoutamount" : 18, "merchantpayoutamount" : 1.50800000 } ] } 3.3.1.4.2 Listeleme veya Abonelik Ödemesi (Pazaryeri/Marketplaces ve Pazaryeri Olmayan İş Modelindeki Üye İşyerleri İçin Aynı) (3D Secure); Üye işyeri; Listeleme veya Abonelik ödemelerini 3D Secure ile yapmak isterse, aşağıdaki örnekte yer aldığı gibi parametreleri göndermesi yeterlidir. initialize3ds dışındaki, callback ve auth3ds akışları ve parametreleri "4.3.1.4.1 Pazaryeri/Marketplaces İş Modelinde Olan Üye İşyerleri İçin
Ürün Ödemesi (3D Secure)" maddesindekilerle birebir aynı olduğu için bu örneklere tekrar yapılmamıştır. 3D Secure u Başlatma (initialize3ds) - Listeleme veya Abonelik Ödemesi: API Servis (Endpoint) İsmi: /payment/iyzipos/initialize3ds/ecom Method: HTTP POST Örnek initialize3ds Java İstek Çıktısı: EcomPaymentServiceClient client = new EcomPaymentServiceClientImpl(configuration); EcomPaymentThreeDSInitializeRequest request = new EcomPaymentThreeDSInitializeRequest(); request.setlocale(requestlocaletype.tr.getvalue()); request.setconversationid("123456789"); request.setcallbackurl("https://www.merchant.com/callback"); request.setprice(new BigDecimal("100")); request.setpaidprice(new BigDecimal("100")); request.setcurrency("try"); request.setinstallment(1); request.setbasketid("b67832"); request.setpaymentchannel(paymentchannelrequesttype.web.name()); request.setpaymentgroup(paymentgrouprequesttype.listing.name()); EcomPaymentCardDto paymentcard = new EcomPaymentCardDto(); paymentcard.setcardholdername("sabri Onur Tüzün"); paymentcard.setcardnumber("554960******7015"); paymentcard.setexpiremonth("**"); paymentcard.setexpireyear("20**"); paymentcard.setcvc("***"); paymentcard.setregistercard(0); request.setpaymentcard(paymentcard); EcomPaymentBuyerDto buyer = new EcomPaymentBuyerDto(); buyer.setid("by789"); buyer.setname("sabri Onur"); buyer.setsurname("tüzün"); buyer.setgsmnumber("+905350000000"); buyer.setemail("onur.tuzun@iyzico.com"); buyer.setidentitynumber("74300864791"); buyer.setlastlogindate("2015-10- 05 12:43:35");
buyer.setregistrationdate("2013-04- 21 15:12:09"); buyer.setregistrationaddress("nidakule Göztepe İş Merkezi Merdivenköy Mah. Bora Sok. No:1 Kat:19 Bağımsız 70/73 Göztepe Kadıköy"); buyer.setip("85.34.78.112"); buyer.setcity("istanbul"); buyer.setcountry("türkiye"); buyer.setzipcode("34732"); request.setbuyer(buyer); EcomPaymentShippingAddressDto shippingaddress = new EcomPaymentShippingAddressDto(); shippingaddress.setcontactname("hakan Erdoğan"); shippingaddress.setcity("istanbul"); shippingaddress.setcountry("türkiye"); shippingaddress.setaddress("19 Mayıs Mah. İnönü Cad. No:45 Kozyatağı"); shippingaddress.setzipcode("34742"); request.setshippingaddress(shippingaddress); EcomPaymentBillingAddressDto billingaddress = new EcomPaymentBillingAddressDto(); billingaddress.setcontactname("hakan Erdoğan"); billingaddress.setcity("istanbul"); billingaddress.setcountry("türkiye"); billingaddress.setaddress("19 Mayıs Mah. İnönü Cad. No:45 Kozyatağı"); billingaddress.setzipcode("34742"); request.setbillingaddress(billingaddress); List<EcomPaymentBasketItemDto> basketitems = new ArrayList<EcomPaymentBasketItemDto>(); EcomPaymentBasketItemDto basketitem1 = new EcomPaymentBasketItemDto(); basketitem1.setid("bi101"); basketitem1.setname("dükkan listelemesi ve katalog"); basketitem1.setcategory1("listeleme"); basketitem1.setcategory2("dükkan"); basketitem1.setitemtype(basketitemrequesttype.physical.name()); basketitem1.setprice(new BigDecimal("30")); basketitems.add(basketitem1); EcomPaymentBasketItemDto basketitem2 = new EcomPaymentBasketItemDto(); basketitem2.setid("bi102"); basketitem2.setname("listeleme hizmeti"); basketitem2.setcategory1("listeleme"); basketitem2.setcategory2("listeleme"); basketitem2.setitemtype(basketitemrequesttype.virtual.name()); basketitem2.setprice(new BigDecimal("50")); basketitems.add(basketitem2);
EcomPaymentBasketItemDto basketitem3 = new EcomPaymentBasketItemDto(); basketitem3.setid("bi103"); basketitem3.setname("servis hizmeti"); basketitem3.setcategory1("listeleme"); basketitem3.setcategory2("servis"); basketitem3.setitemtype(basketitemrequesttype.virtual.name()); basketitem3.setprice(new BigDecimal("20")); basketitems.add(basketitem3); request.setbasketitems(basketitems); EcomPaymentThreeDSInitializeResponse response = client.initializethreeds(request); System.out.println("conversationId=" + response.getconversationid()); System.out.println("locale=" + response.getlocale()); System.out.println("status=" + response.getstatus()); System.out.println("errorCode=" + response.geterrorcode()); System.out.println("errorMessage=" + response.geterrormessage()); System.out.println("errorGroup=" + response.geterrorgroup()); System.out.println("systemTime=" + response.getsystemtime()); System.out.println("threeDSHtmlContent=" + response.getthreedshtmlcontent()); Örnek initialize3ds Java Sonuç Çıktısı: conversationid=123456789 locale=tr status=success errorcode=null errormessage=null errorgroup=null systemtime=1445238853435 threedshtmlcontent=<!doctype HTML PUBLIC "- //W3C//DTD HTML 4.01//EN" "http://www.w3.org/tr/html4/strict.dtd"> <html> <head> <title>mdpay default response template for web</title> </head> <body bgcolor="#02014e" OnLoad="OnLoadEvent();" > <form name="downloadform" action="https://3dsecure.garanti.com.tr/acs/0036542387077064147970095830/merchant/contro l/master"
method="post"> <input type="hidden" name="pareq" value="ejxvudtugzam/rxu10neaukgcio15wgdtkpqq017zcfqkcalaubz1y8pvwxp8tl2fhxs3b+1 UslOyU4rga+qadKDcvJsNmEsogEAnwjczLfqJPBb6SavSkFdcD0kN2h+aXlMy1ZgKk+L1VowD0LmI7lCLJReJ SJkYQhRSGMkI4FlWiiRDz+5rJBcAMqqK1s9CB4bhRvATn+JY9vWU0L6vnfHL66sCiQ2heQxwqazUWNanf NMvO2G3TZ536/jan1olk/J4ly/9PXn5qWaIbEVmKWtEh5QRoHGDvApjaYeRXLhMS3sDGK//XAogAtgXI0 U1lZpPgKTs6m/FJqValXKQcSBsXxHqM51VSpTYRzeY8xUI4VjZO2L5GFj+Wz3KluzMAA/ZIHnRxw4hzCgAY 85QMwi3841Ftn+uVkajSi9CFiAxLYh10OS651N9O/+v486qk0="> <input type="hidden" name="termurl" value="https://spos.isbank.com.tr/fim/est3dgate?msgid=55814007"> <input type="hidden" name="md" value="554960:ff5b0bedb0e17ac8087ebab69b4fb5ebe8cb4ca2601451549b96212890f104f4 :4434:##700656608619"> <!- - To support javascript unaware/disabled browsers - - > <noscript> <center>please click the submit button below.<br> <input type="submit" name="submit" value="submit"></center> </noscript> </form> <SCRIPT LANGUAGE="Javascript" > <!- - about:blank - - > <!- - function OnLoadEvent() { document.downloadform.submit(); } //- - > </SCRIPT> </body> </html> Örnek initialize3ds Java İstek Koduna Ait JSON Çıktısı: { "locale" : "tr", "conversationid" : "123456789", "price" : 100, "paidprice" : 100, "currency" : TRY, "installment" : 1,
"paymentchannel" : "WEB", "basketid" : "B67832", "paymentgroup" : "LISTING", "paymentcard" : { "cardholdername" : "Sabri Onur Tüzün", "cardnumber" : 554960******7015", "expireyear" : 20**", "expiremonth" : **", "cvc" : ***", "registercard" : 0 }, "buyer" : { "id" : "BY789", "name" : "Sabri Onur", "surname" : "Tüzün", "identitynumber" : "74300864791", "email" : "onur.tuzun@iyzico.com", "gsmnumber" : "+905350000000", "registrationdate" : "2013-04- 21 15:12:09", "lastlogindate" : "2015-10- 05 12:43:35", "registrationaddress" : "Nidakule Göztepe İş Merkezi Merdivenköy Mah. Bora Sok. No:1 Kat:19 Bağımsız 70/73 Göztepe Kadıköy", "city" : "İstanbul", "country" : "Türkiye", "zipcode" : "34732", "ip" : "85.34.78.112" }, "shippingaddress" : { "address" : "19 Mayıs Mah. İnönü Cad. No:45 Kozyatağı", "zipcode" : "34742", "contactname" : "Hakan Erdoğan", "city" : "İstanbul", "country" : "Türkiye" }, "billingaddress" : { "address" : "19 Mayıs Mah. İnönü Cad. No:45 Kozyatağı", "zipcode" : "34742", "contactname" : "Hakan Erdoğan", "city" : "İstanbul", "country" : "Türkiye" }, "basketitems" : [ { "id" : "BI101",
"price" : 30, "name" : "Dükkan listelemesi ve katalog", "category1" : "Listeleme", "category2" : "Dükkan", "itemtype" : "PHYSICAL" }, { "id" : "BI102", "price" : 50, "name" : "Listeleme hizmeti", "category1" : "Listeleme", "category2" : "Listeleme", "itemtype" : "VIRTUAL" }, { "id" : "BI103", "price" : 20, "name" : "Servis hizmeti", "category1" : "Listeleme", "category2" : "Servis", "itemtype" : "VIRTUAL" } ], "callbackurl" : "https://www.merchant.com/callback" } Örnek initialize3ds Java Sonuç Koduna Ait JSON Çıktısı: { "status" : "success", "locale" : "tr", "systemtime" : 1445238853435, "conversationid" : "123456789", "threedshtmlcontent" : "<!DOCTYPE HTML PUBLIC \"- //W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/tr/html4/strict.dtd\">\n\n<html>\n<head>\n <title>mdpay default response template for web</title>\n</head>\n<body bgcolor=\"#02014e\" OnLoad=\"OnLoadEvent();\" >\n<form name=\"downloadform\"\n action=\"https://3dsecure.garanti.com.tr/acs/0036542389782599331 550048898/merchant/control/master\"\n method=\"post\">\n <input type=\"hidden\"\n name=\"pareq\"\n value=\"ejxvuctugzaq/bwud8apmnjrxllahiqqiptm 0B6RsRKk8oiBBvr1tQlJ2pN3Ztc7u7NwOBmtd+9aDUZLeNNdlx+1VxabFWOchGEsVhKy7V6fJXxr05VNLY mpfqrobu0vo0553uvi1fkpsswjogiboavcpu2ykxgliswjigbdcajzssty+ilva2ggojqh7s0ky2evbgag8yv Pfd+uEbpcLv71i6+aCpBLAXqMkA0u6myrsSwkT9hIxyxvy/KjyNMkHdFrMGW7Y9psALkKKPJeS4oJI5gID8 drstcma5p5ycs3gzzspz2csy9tyqggdurbk7a5l/plgbxu6fpnuor25tscpbznrw2f3faeq6e7jt0r615ajz WeX5yvqreGYRxELKQBFzGnTIggIIxhHHIuuHN7LnL9S2sa4YTMAg4Acm3Qcki03NlG/+7/C34mqkE=\">\n
<input type=\"hidden\"\n name=\"termurl\" value=\"https://spos.isbank.com.tr/fim/est3dgate?msgid=55814479\">\n <input type=\"hidden\"\n name=\"md\"\n value=\"554960:ab3ca68f65e473063c526c352bfaab0 EBD46B96FADC3293D13E1493F1E9EC00C:3568:##700656608619\">\n <!- - To support javascript unaware/disabled browsers - - >\n <noscript>\n <center>please click the submit button below.<br>\n <input type=\"submit\" name=\"submit\" value=\"submit\"></center>\n </noscript>\n</form>\n\n<script LANGUAGE=\"Javascript\" >\n <!- - about:blank - - >\n <!- - \n function OnLoadEvent() {\n document.downloadform.submit();\n }\n //- - >\n</script>\n</body>\n</html>\u0000" } 3.3.1.4.3 Pazaryeri/Marketplaces İş Modelinde OlMAyan Üye İşyerleri İçin Ürün Ödemesi (3D Secure); Pazaryeri iş modelinde olmayan, standart e- ticaret iş modelindeki üye işyerlerinin ürün ödemesi neredeyse bir üstte yer alan 4.3.1.4.2 maddesinde belirtilen 3D Secure listeleme/abonelik ödemesi ile aynıdır. Tek fark, Sepette yer alan ürünlerin tipi (BasketItemType) fiziksel ürün (PHYSICAL) olarak işaretlenmelidir, bu nedenle de teslimat adresi (ShippingAddress) gönderilmelidir. Sepette yer alan ürünler için submerchantkey ve submerchantprice gönderilmemelidir Ödeme grubu ürün gönderilmelidir: request.setpaymentgroup(paymentgrouprequesttype.product.name()); 3.3.2 İptal İyzico üzerinden tahsil edilen bir ödeme, banka kuralları gereği aynı gün içinde (gün sonu yapılmadan) iptal (cancel) edilebilir. İptal işleminin iadeden farkı, ödeme ile aynı gün yapılabilmesi ve kart ekstresinde girdi/çıktı yaratmamasıdır. İptal yapılabilmesi için ödemeye ait id (paymentid) gönderilmesi gerekir, iptal işlemi başarılıysa iptal edilen tutar (price) servisten döner. İptal işlemi tepeden çalışır, yani ödemenin tamamını iptal eder. API Servis (Endpoint) İsmi: /payment/iyzipos/cancel Method: HTTP POST
Örnek Java İstek Çıktısı EcomPaymentServiceClient client = new EcomPaymentServiceClientImpl(configuration); PaymentCancelRequest request = new PaymentCancelRequest(); request.setlocale(requestlocaletype.tr.getvalue()); request.setconversationid("123456789"); request.setpaymentid("3031"); request.setip("85.34.78.112"); PaymentCancelResponse response = client.cancel(request); System.out.println("conversationId=" + response.getconversationid()); System.out.println("locale=" + response.getlocale()); System.out.println("status=" + response.getstatus()); System.out.println("errorCode=" + response.geterrorcode()); System.out.println("errorMessage=" + response.geterrormessage()); System.out.println("errorGroup=" + response.geterrorgroup()); System.out.println("systemTime=" + response.getsystemtime()); System.out.println("paymentId=" + response.getpaymentid()); System.out.println("price=" + response.getprice()); Örnek Java Sonuç Çıktısı conversationid=123456789 locale=tr status=success errorcode=null errormessage=null errorgroup=null systemtime=1445239960166 paymentid=3031 price=1.10000000 Örnek Java İstek Koduna Ait JSON Çıktısı { "locale" : "tr", "conversationid" : "123456789", "paymentid" : "3031", "ip" : "85.34.78.112" }
Örnek Java Sonuç Koduna Ait JSON Çıktısı { "status" : "success", "locale" : "tr", "systemtime" : 1445239960166, "conversationid" : "123456789", "paymentid" : "3031", "price" : 1.10000000 } 3.3.3 İade İyzico üzerinden tahsil edilen bir ödeme, 365 gün 7/24 iade (refund) edilebilir. İade işlemi mutlaka ekstreye yansır ve iade edilen ödeme taksitli bir işlemse, iadenin karta yansıması bankadan bankaya değişmekle beraber bir kaç günü bulabilir. İade işlemi kırılımdan çalışır, yani ödemenin bir kırlımının tamamını veya bir kısmını iade eder. 3.3.3.1 Standart İade İade yapılabilmesi için ödeme kırılımına ait id (paymenttransactionid) ve iade edilecek tutar (price) gönderilmesi gerekir, iade işlemi başarılıysa iade edilen tutar (price) servisten döner. İade edilecek tutar (price), iade edilecek ödemenin kırılımının tutarından (itemtransaction à paidprice) ve iade edilebilir kalan tutardan küçük veya eşit olmalıdır. Bu kural sağlandığı sürece ardarda defalarca iade yapılabilir. API Servis (Endpoint) İsmi: /payment/iyzipos/refund Method: HTTP POST Örnek Java İstek Çıktısı EcomPaymentServiceClient client = new EcomPaymentServiceClientImpl(configuration); PaymentRefundRequest request = new PaymentRefundRequest(); request.setlocale(requestlocaletype.tr.getvalue());
request.setconversationid("123456789"); request.setpaymenttransactionid("1543"); request.setprice(new BigDecimal("3.3")); request.setcurreny("try"); request.setip("85.34.78.112"); PaymentRefundResponse response = client.refund(request); System.out.println("conversationId=" + response.getconversationid()); System.out.println("locale=" + response.getlocale()); System.out.println("status=" + response.getstatus()); System.out.println("errorCode=" + response.geterrorcode()); System.out.println("errorMessage=" + response.geterrormessage()); System.out.println("errorGroup=" + response.geterrorgroup()); System.out.println("systemTime=" + response.getsystemtime()); System.out.println("paymentId=" + response.getpaymentid()); System.out.println("paymentTransactionId=" + response.getpaymenttransactionid()); System.out.println("price=" + response.getprice()); System.out.println("currency=" + response.getcurrency()); Örnek Java Sonuç Çıktısı conversationid=123456789 locale=tr status=success errorcode=null errormessage=null errorgroup=null systemtime=1445240504793 paymentid=3032 paymenttransactionid=1543 price=3.3 currency=try Örnek Java İstek Koduna Ait JSON Çıktısı { "locale" : "tr", "conversationid" : "123456789", "paymenttransactionid" : "1543", "price" : 3.3, "ip" : "85.34.78.112"
} Örnek Java Sonuç Koduna Ait JSON Çıktısı { "status" : "success", "locale" : "tr", "systemtime" : 1445240504793, "conversationid" : "123456789", "paymentid" : "3032", "paymenttransactionid" : "1543", "currency" : TRY, "price" : 3.3 } 3.3.3.2 Para Transferi Sonrası İade Eğer iade edilecek kırılıma ait para transferi; üye işyerine ve/veya alt üye işyerine yapılmışsa, bu durumda iadenin yapılabilmesi için daha önceden dağıtılan paranın toplanması gerekir. Örneğin; pazaryeri iş modelinde 100 TL lik bir ödemenin 90 TL si alt üye işyerine, 8 TL si üye işyerine, 2 TL si de iyzico ya gönderilmiş olsun. Bu işleme ait 50 TL lik bir kısmi iade talebi gelirse, bu durumda alt üye işyerinden 45 TL, üye işyerinden 4 TL, iyzico dan da 1 TL geri almak gerekir. İyzico, paranın geri toplama işini, o üye işyerine ve/veya alt üye işyerine gönderilecek bir sonraki para transferinden düşerek (mahsuplaşarak) otomatik bir şekilde el değmeden yapar. Bu noktada alt üye işyerine ait sistemde parası henüz gönderilmemiş, onay bekleyen, veya onaylanan ama henüz para transferi yapılmamış ödemeler, yani bakiye varsa, üye işyerine ait sistemde parası henüz gönderilmemiş, onay bekleyen, veya onaylanan ama henüz para transferi yapılmamış ödemeler, yani bakiye varsa iade kabul edilir ve ilgili bakiyeler ilgili üye işyeri ve alt üye işyerine eksi olarak yazılır, bir sonraki para transferinden düşülür.
Eğer alt üye işyerinin bakiyesinde yeterli para yoksa bu iade işlemi reddedilir ve üye işyerine 5116 hata kodu dönülür. Üye işyeri bu bakiyeyi de kendisi üstlenmek isterse aşağıdaki servisi çağırarak iadenin yapılmasını sağlar. Eğer üye işyerinin bakiyesinde yeterli para yoksa bu iade işlemi reddedilir ve üye işyerine 5117 hata kodu dönülür. Bu durumda iade işlemi kabul edilmez. İade parametreleri ve dönüş değerleri standart iade ile aynıdır. API Servis (Endpoint) İsmi: /payment/iyzipos/refund/merchant/charge Method: HTTP POST 3.3.4 Ön Otorizasyon Normal ödemeden farklı olarak ön otorizasyonu yapılan ödeme sadece ekstreden, çekilen tutarın düşmesine sebep olur. Çekilen ödeme banka tarafında ön provizyon işlemlerinde yer alır. Normal ödemeden farkı ise farklı servisi olmasıdır. Servise gönderilen istek ve alınan sonuçlar tamamiyle normal ödemenin aynısıdır. API Servis (Endpoint) İsmi: /payment/iyzipos/preauth Method: HTTP POST Örnek Java İstek Kodu: EcomPaymentServiceClient client = new EcomPaymentServiceClientImpl(configuration); EcomPaymentPreAuthRequest request = new EcomPaymentPreAuthRequest(); request.setlocale(requestlocaletype.tr.getvalue()); request.setconversationid("123456789"); request.setprice(new BigDecimal("100")); request.setpaidprice(new BigDecimal("110")); request.setcurrency("try"); request.setinstallment(3); request.setbasketid("b67832"); request.setpaymentchannel(paymentchannelrequesttype.web.name()); request.setpaymentgroup(paymentgrouprequesttype.product.name());
EcomPaymentCardDto paymentcard = new EcomPaymentCardDto(); paymentcard.setcardholdername("sabri Onur Tüzün"); paymentcard.setcardnumber("554960**********"); paymentcard.setexpiremonth("**"); paymentcard.setexpireyear("20**"); paymentcard.setcvc("***"); paymentcard.setregistercard(0); request.setpaymentcard(paymentcard); EcomPaymentBuyerDto buyer = new EcomPaymentBuyerDto(); buyer.setid("by789"); buyer.setname("sabri Onur"); buyer.setsurname("tüzün"); buyer.setgsmnumber("+905350000000"); buyer.setemail("email@buyeremail.com"); buyer.setidentitynumber("74300864791"); buyer.setlastlogindate("2015-10- 05 12:43:35"); buyer.setregistrationdate("2013-04- 21 15:12:09"); buyer.setregistrationaddress("nidakule Göztepe İş Merkezi Merdivenköy Mah. Bora Sok. No:1 Kat:19 Bağımsız 70/73 Göztepe Kadıköy"); buyer.setip("85.34.78.112"); buyer.setcity("istanbul"); buyer.setcountry("türkiye"); buyer.setzipcode("34732"); request.setbuyer(buyer); EcomPaymentShippingAddressDto shippingaddress = new EcomPaymentShippingAddressDto(); shippingaddress.setcontactname("hakan Erdoğan"); shippingaddress.setcity("istanbul"); shippingaddress.setcountry("türkiye"); shippingaddress.setaddress("19 Mayıs Mah. İnönü Cad. No:45 Kozyatağı"); shippingaddress.setzipcode("34742"); request.setshippingaddress(shippingaddress); EcomPaymentBillingAddressDto billingaddress = new EcomPaymentBillingAddressDto(); billingaddress.setcontactname("hakan Erdoğan"); billingaddress.setcity("istanbul"); billingaddress.setcountry("türkiye"); billingaddress.setaddress("19 Mayıs Mah. İnönü Cad. No:45 Kozyatağı"); billingaddress.setzipcode("34742"); request.setbillingaddress(billingaddress); List<EcomPaymentBasketItemDto> basketitems = new ArrayList<EcomPaymentBasketItemDto>();
EcomPaymentBasketItemDto basketitem1 = new EcomPaymentBasketItemDto(); basketitem1.setid("bi101"); basketitem1.setname("abc Marka Kolye"); basketitem1.setcategory1("giyim"); basketitem1.setcategory2("aksesuar"); basketitem1.setitemtype(basketitemrequesttype.physical.name()); basketitem1.setprice(new BigDecimal("30")); basketitem1.setsubmerchantkey("l4fcfyciof0patp6687dooch9po="); basketitem1.setsubmerchantprice(new BigDecimal("27")); basketitems.add(basketitem1); EcomPaymentBasketItemDto basketitem2 = new EcomPaymentBasketItemDto(); basketitem2.setid("bi102"); basketitem2.setname("xyz Oyun Kodu"); basketitem2.setcategory1("oyun"); basketitem2.setcategory2("online Oyun Kodları"); basketitem2.setitemtype(basketitemrequesttype.virtual.name()); basketitem2.setprice(new BigDecimal("50")); basketitem2.setsubmerchantkey("lcb6ba9dwef5e8ygji0uiecw1kw="); basketitem2.setsubmerchantprice(new BigDecimal("42")); basketitems.add(basketitem2); EcomPaymentBasketItemDto basketitem3 = new EcomPaymentBasketItemDto(); basketitem3.setid("bi103"); basketitem3.setname("edc Marka Usb"); basketitem3.setcategory1("elektronik"); basketitem3.setcategory2("usb / Cable"); basketitem3.setitemtype(basketitemrequesttype.physical.name()); basketitem3.setprice(new BigDecimal("20")); basketitem3.setsubmerchantkey("d9v/mqirituza4dutl+ncbvnwfs="); basketitem3.setsubmerchantprice(new BigDecimal("18")); basketitems.add(basketitem3); request.setbasketitems(basketitems); EcomPaymentPreAuthResponse response = client.preauth(request); System.out.println("conversationId=" + response.getconversationid()); System.out.println("locale=" + response.getlocale()); System.out.println("status=" + response.getstatus()); System.out.println("errorCode=" + response.geterrorcode()); System.out.println("errorMessage=" + response.geterrormessage()); System.out.println("errorGroup=" + response.geterrorgroup()); System.out.println("systemTime=" + response.getsystemtime());
System.out.println("paymentId=" + response.getpaymentid()); System.out.println("price=" + response.getprice()); System.out.println("paidPrice=" + response.getpaidprice()); System.out.println("currency=" + response.getcurrency()); System.out.println("installment=" + response.getinstallment()); System.out.println("basketId=" + response.getbasketid()); System.out.println("binNumber=" + response.getbinnumber()); System.out.println("cardAssociation=" + response.getcardassociation()); System.out.println("cardFamily=" + response.getcardfamily()); System.out.println("cardType=" + response.getcardtype()); System.out.println("cardToken=" + response.getcardtoken()); System.out.println("cardUserKey=" + response.getcarduserkey()); System.out.println("fraudStatus=" + response.getfraudstatus()); System.out.println("iyziCommissionFee=" + response.getiyzicommissionfee()); System.out.println("iyziCommissionRateAmount=" + response.getiyzicommissionrateamount()); System.out.println("merchantCommissionRate=" + response.getmerchantcommissionrate()); System.out.println("merchantCommissionRateAmount=" + response.getmerchantcommissionrateamount()); List<EcomPaymentItemTransactionDto> itemtransactions = response.getitemtransactions(); if (itemtransactions!= null &&!itemtransactions.isempty()) { for (EcomPaymentItemTransactionDto itemtransaction : itemtransactions) { System.out.println("paymentTransactionId=" + itemtransaction.getpaymenttransactionid()); System.out.println("itemId=" + itemtransaction.getitemid()); System.out.println("paidPrice=" + itemtransaction.getpaidprice()); System.out.println("price=" + itemtransaction.getprice()); System.out.println("transactionStatus=" + itemtransaction.gettransactionstatus()); System.out.println("blockageRate=" + itemtransaction.getblockagerate()); System.out.println("blockageRateAmountMerchant=" + itemtransaction.getblockagerateamountmerchant()); System.out.println("blockageRateAmountSubMerchant=" + itemtransaction.getblockagerateamountsubmerchant()); System.out.println("blockageResolvedDate=" + itemtransaction.getblockageresolveddate()); System.out.println("iyziCommissionFee=" + itemtransaction.getiyzicommissionfee()); System.out.println("iyziCommissionRateAmount=" + itemtransaction.getiyzicommissionrateamount()); System.out.println("merchantCommissionRate=" + itemtransaction.getmerchantcommissionrate()); System.out.println("merchantCommissionRateAmount=" + itemtransaction.getmerchantcommissionrateamount()); System.out.println("merchantPayoutAmount=" + itemtransaction.getmerchantpayoutamount()); System.out.println("subMerchantKey=" + itemtransaction.getsubmerchantkey());
System.out.println("subMerchantPayoutAmount=" + itemtransaction.getsubmerchantpayoutamount()); System.out.println("subMerchantPayoutRate=" + itemtransaction.getsubmerchantpayoutrate()); System.out.println("subMerchantPrice=" + itemtransaction.getsubmerchantprice()); } } Örnek Java Sonuç Çıktısı: conversationid=123456789 locale=tr status=success errorcode=null errormessage=null errorgroup=null systemtime=1444142311338 paymentid=2744 price=100 paidprice=110 currency=try installment=3 basketid=b67832 binnumber=554960 cardassociation=master_card cardfamily=bonus cardtype=credit_card cardtoken=null carduserkey=null fraudstatus=1 iyzicommissionfee=0.25000000 iyzicommissionrateamount=4.51000000 merchantcommissionrate=10.00000000 merchantcommissionrateamount=10 paymenttransactionid=1307 itemid=bi101 paidprice=33.00000000 price=30 transactionstatus=1 blockagerate=7.00000000 blockagerateamountmerchant=2.31000000 blockagerateamountsubmerchant=0 blockageresolveddate=2015-10- 16 17:38:31
iyzicommissionfee=0.07500000 iyzicommissionrateamount=1.35300000 merchantcommissionrate=10.00000000 merchantcommissionrateamount=3.00000000 merchantpayoutamount=2.26200000 submerchantkey=l4fcfyciof0patp6687dooch9po= submerchantpayoutamount=27 submerchantpayoutrate=90.00000000 submerchantprice=27 paymenttransactionid=1308 itemid=bi102 paidprice=55.00000000 price=50 transactionstatus=1 blockagerate=7.00000000 blockagerateamountmerchant=3.85000000 blockagerateamountsubmerchant=0 blockageresolveddate=2015-10- 16 17:38:31 iyzicommissionfee=0.12500000 iyzicommissionrateamount=2.25500000 merchantcommissionrate=10.00000000 merchantcommissionrateamount=5.00000000 merchantpayoutamount=6.77000000 submerchantkey=lcb6ba9dwef5e8ygji0uiecw1kw= submerchantpayoutamount=42 submerchantpayoutrate=84.00000000 submerchantprice=42 paymenttransactionid=1309 itemid=bi103 paidprice=22.00000000 price=20 transactionstatus=1 blockagerate=7.00000000 blockagerateamountmerchant=1.54000000 blockagerateamountsubmerchant=0 blockageresolveddate=2015-10- 16 17:38:31 iyzicommissionfee=0.05000000 iyzicommissionrateamount=0.90200000 merchantcommissionrate=10.00000000 merchantcommissionrateamount=2.00000000 merchantpayoutamount=1.50800000 submerchantkey=d9v/mqirituza4dutl+ncbvnwfs= submerchantpayoutamount=18
submerchantpayoutrate=90.00000000 submerchantprice=18 Örnek Java İstek Koduna Ait JSON Çıktısı: { "locale" : "tr", "conversationid" : "123456789", "price" : 100, "paidprice" : 110, "currency" : TRY, "installment" : 3, "paymentchannel" : "WEB", "basketid" : "B67832", "paymentgroup" : "PRODUCT", "paymentcard" : { "cardholdername" : "Sabri Onur Tüzün", "cardnumber" : 554960**********", "expireyear" : 20**", "expiremonth" : **", "cvc" : ***", "registercard" : 0 }, "buyer" : { "id" : "BY789", "name" : "Sabri Onur", "surname" : "Tüzün", "identitynumber" : "74300864791", "email" : "email@buyeremail.com", "gsmnumber" : "+905350000000", "registrationdate" : "2013-04- 21 15:12:09", "lastlogindate" : "2015-10- 05 12:43:35", "registrationaddress" : "Nidakule Göztepe İş Merkezi Merdivenköy Mah. Bora Sok. No:1 Kat:19 Bağımsız 70/73 Göztepe Kadıköy", "city" : "İstanbul", "country" : "Türkiye", "zipcode" : "34732", "ip" : "85.34.78.112" }, "shippingaddress" : { "address" : "19 Mayıs Mah. İnönü Cad. No:45 Kozyatağı", "zipcode" : "34742", "contactname" : "Hakan Erdoğan",
"city" : "İstanbul", "country" : "Türkiye" }, "billingaddress" : { "address" : "19 Mayıs Mah. İnönü Cad. No:45 Kozyatağı", "zipcode" : "34742", "contactname" : "Hakan Erdoğan", "city" : "İstanbul", "country" : "Türkiye" }, "basketitems" : [ { "id" : "BI101", "price" : 30, "name" : "ABC Marka Kolye", "category1" : "Giyim", "category2" : "Aksesuar", "itemtype" : "PHYSICAL", "submerchantkey" : "l4fcfyciof0patp6687dooch9po=", "submerchantprice" : 27 }, { "id" : "BI102", "price" : 50, "name" : "XYZ Oyun Kodu", "category1" : "Oyun", "category2" : "Online Oyun Kodları", "itemtype" : "VIRTUAL", "submerchantkey" : "lcb6ba9dwef5e8ygji0uiecw1kw=", "submerchantprice" : 42 }, { "id" : "BI103", "price" : 20, "name" : "EDC Marka Usb", "category1" : "Elektronik", "category2" : "Usb / Cable", "itemtype" : "PHYSICAL", "submerchantkey" : "D9V/MqIRitUzA4dutL+nCBvnWfs=", "submerchantprice" : 18 } ] } Örnek Java Sonuç Koduna Ait JSON Çıktısı: {
"status" : "success", "locale" : "tr", "systemtime" : 1444142311338, "conversationid" : "123456789", "price" : 100, "paidprice" : 110, "installment" : 3, "paymentid" : "2744", "fraudstatus" : 1, "merchantcommissionrate" : 10.00000000, "merchantcommissionrateamount" : 10, "iyzicommissionrateamount" : 4.51000000, "iyzicommissionfee" : 0.25000000, "cardtype" : "CREDIT_CARD", "cardassociation" : "MASTER_CARD", "cardfamily" : "Bonus", "binnumber" : "554960", "basketid" : "B67832", "itemtransactions" : [ { "itemid" : "BI101", "paymenttransactionid" : "1307", "transactionstatus" : 1, "price" : 30, "paidprice" : 33.00000000, "merchantcommissionrate" : 10.00000000, "merchantcommissionrateamount" : 3.00000000, "iyzicommissionrateamount" : 1.35300000, "iyzicommissionfee" : 0.07500000, "blockagerate" : 7.00000000, "blockagerateamountmerchant" : 2.31000000, "blockagerateamountsubmerchant" : 0, "blockageresolveddate" : "2015-10- 16 17:38:31", "submerchantkey" : "l4fcfyciof0patp6687dooch9po=", "submerchantprice" : 27, "submerchantpayoutrate" : 90.00000000, "submerchantpayoutamount" : 27, "merchantpayoutamount" : 2.26200000 }, { "itemid" : "BI102", "paymenttransactionid" : "1308", "transactionstatus" : 1, "price" : 50, "paidprice" : 55.00000000,
"merchantcommissionrate" : 10.00000000, "merchantcommissionrateamount" : 5.00000000, "iyzicommissionrateamount" : 2.25500000, "iyzicommissionfee" : 0.12500000, "blockagerate" : 7.00000000, "blockagerateamountmerchant" : 3.85000000, "blockagerateamountsubmerchant" : 0, "blockageresolveddate" : "2015-10- 16 17:38:31", "submerchantkey" : "lcb6ba9dwef5e8ygji0uiecw1kw=", "submerchantprice" : 42, "submerchantpayoutrate" : 84.00000000, "submerchantpayoutamount" : 42, "merchantpayoutamount" : 6.77000000 }, { "itemid" : "BI103", "paymenttransactionid" : "1309", "transactionstatus" : 1, "price" : 20, "paidprice" : 22.00000000, "merchantcommissionrate" : 10.00000000, "merchantcommissionrateamount" : 2.00000000, "iyzicommissionrateamount" : 0.90200000, "iyzicommissionfee" : 0.05000000, "blockagerate" : 7.00000000, "blockagerateamountmerchant" : 1.54000000, "blockagerateamountsubmerchant" : 0, "blockageresolveddate" : "2015-10- 16 17:38:31", "submerchantkey" : "D9V/MqIRitUzA4dutL+nCBvnWfs=", "submerchantprice" : 18, "submerchantpayoutrate" : 90.00000000, "submerchantpayoutamount" : 18, "merchantpayoutamount" : 1.50800000 } ] } 3.3.5 Son Otorizasyon Ön provizyonu yapılan ödemeyi ekstreye yansıtmak için provizyon kapama yapılması gerekir. Bütün ödemeyi kapamak için fiyat bilgisi olarak ödenen tutar yollanmalıdır. Eğer yollanmaz ise tamamına provizyon kapama uygulanır. Kısmi kapama da yapılabilir. API Servis (Endpoint) İsmi: /payment/iyzipos/postauth
Method: HTTP POST Örnek Java İstek Çıktısı EcomPaymentServiceClient client = new EcomPaymentServiceClientImpl(configuration); PaymentPostAuthRequest request = new PaymentPostAuthRequest(); request.setlocale(requestlocaletype.tr.getvalue()); request.setconversationid("123456789"); request.setpaymentid("457932"); request.setip("85.34.78.112"); request.setpaidprice(new BigDecimal("110")); PaymentPostAuthResponse response = client.postauth(request); System.out.println("conversationId=" + response.getconversationid()); System.out.println("locale=" + response.getlocale()); System.out.println("status=" + response.getstatus()); System.out.println("errorCode=" + response.geterrorcode()); System.out.println("errorMessage=" + response.geterrormessage()); System.out.println("errorGroup=" + response.geterrorgroup()); System.out.println("systemTime=" + response.getsystemtime()); System.out.println("paymentId=" + response.getpaymentid()); System.out.println("price=" + response.getprice()); System.out.println("paidPrice=" + response.getpaidprice()); System.out.println("currency=" + response.getcurrency()); System.out.println("installment=" + response.getinstallment()); System.out.println("basketId=" + response.getbasketid()); System.out.println("binNumber=" + response.getbinnumber()); System.out.println("cardAssociation=" + response.getcardassociation()); System.out.println("cardFamily=" + response.getcardfamily()); System.out.println("cardType=" + response.getcardtype()); System.out.println("cardToken=" + response.getcardtoken()); System.out.println("cardUserKey=" + response.getcarduserkey()); System.out.println("fraudStatus=" + response.getfraudstatus()); System.out.println("iyziCommissionFee=" + response.getiyzicommissionfee()); System.out.println("iyziCommissionRateAmount=" + response.getiyzicommissionrateamount()); System.out.println("merchantCommissionRate=" + response.getmerchantcommissionrate()); System.out.println("merchantCommissionRateAmount=" + response.getmerchantcommissionrateamount()); List<EcomPaymentItemTransactionDto> itemtransactions = response.getitemtransactions();
if (itemtransactions!= null &&!itemtransactions.isempty()) { for (EcomPaymentItemTransactionDto itemtransaction : itemtransactions) { System.out.println("paymentTransactionId=" + itemtransaction.getpaymenttransactionid()); System.out.println("itemId=" + itemtransaction.getitemid()); System.out.println("paidPrice=" + itemtransaction.getpaidprice()); System.out.println("price=" + itemtransaction.getprice()); System.out.println("transactionStatus=" + itemtransaction.gettransactionstatus()); System.out.println("blockageRate=" + itemtransaction.getblockagerate()); System.out.println("blockageRateAmountMerchant=" + itemtransaction.getblockagerateamountmerchant()); System.out.println("blockageRateAmountSubMerchant=" + itemtransaction.getblockagerateamountsubmerchant()); System.out.println("blockageResolvedDate=" + itemtransaction.getblockageresolveddate()); System.out.println("iyziCommissionFee=" + itemtransaction.getiyzicommissionfee()); System.out.println("iyziCommissionRateAmount=" + itemtransaction.getiyzicommissionrateamount()); System.out.println("merchantCommissionRate=" + itemtransaction.getmerchantcommissionrate()); System.out.println("merchantCommissionRateAmount=" + itemtransaction.getmerchantcommissionrateamount()); System.out.println("merchantPayoutAmount=" + itemtransaction.getmerchantpayoutamount()); System.out.println("subMerchantKey=" + itemtransaction.getsubmerchantkey()); System.out.println("subMerchantPayoutAmount=" + itemtransaction.getsubmerchantpayoutamount()); System.out.println("subMerchantPayoutRate=" + itemtransaction.getsubmerchantpayoutrate()); System.out.println("subMerchantPrice=" + itemtransaction.getsubmerchantprice()); } } Örnek Java Sonuç Çıktısı: conversationid=123456789 locale=tr status=success errorcode=null errormessage=null errorgroup=null systemtime=1444142311338 paymentid=457932 price=100
paidprice=110 currency=try installment=3 basketid=b67832 binnumber=554960 cardassociation=master_card cardfamily=bonus cardtype=credit_card cardtoken=null carduserkey=null fraudstatus=1 iyzicommissionfee=0.25000000 iyzicommissionrateamount=4.51000000 merchantcommissionrate=10.00000000 merchantcommissionrateamount=10 paymenttransactionid=1307 itemid=bi101 paidprice=33.00000000 price=30 transactionstatus=1 blockagerate=7.00000000 blockagerateamountmerchant=2.31000000 blockagerateamountsubmerchant=0 blockageresolveddate=2015-10- 16 17:38:31 iyzicommissionfee=0.07500000 iyzicommissionrateamount=1.35300000 merchantcommissionrate=10.00000000 merchantcommissionrateamount=3.00000000 merchantpayoutamount=2.26200000 submerchantkey=l4fcfyciof0patp6687dooch9po= submerchantpayoutamount=27 submerchantpayoutrate=90.00000000 submerchantprice=27 paymenttransactionid=1308 itemid=bi102 paidprice=55.00000000 price=50 transactionstatus=1 blockagerate=7.00000000 blockagerateamountmerchant=3.85000000 blockagerateamountsubmerchant=0 blockageresolveddate=2015-10- 16 17:38:31 iyzicommissionfee=0.12500000
iyzicommissionrateamount=2.25500000 merchantcommissionrate=10.00000000 merchantcommissionrateamount=5.00000000 merchantpayoutamount=6.77000000 submerchantkey=lcb6ba9dwef5e8ygji0uiecw1kw= submerchantpayoutamount=42 submerchantpayoutrate=84.00000000 submerchantprice=42 paymenttransactionid=1309 itemid=bi103 paidprice=22.00000000 price=20 transactionstatus=1 blockagerate=7.00000000 blockagerateamountmerchant=1.54000000 blockagerateamountsubmerchant=0 blockageresolveddate=2015-10- 16 17:38:31 iyzicommissionfee=0.05000000 iyzicommissionrateamount=0.90200000 merchantcommissionrate=10.00000000 merchantcommissionrateamount=2.00000000 merchantpayoutamount=1.50800000 submerchantkey=d9v/mqirituza4dutl+ncbvnwfs= submerchantpayoutamount=18 submerchantpayoutrate=90.00000000 submerchantprice=18 Örnek Java İstek Koduna Ait JSON Çıktısı { "locale" : "tr", "conversationid" : "123456789", "paymentid" : "457932", "paidprice" : 110, "currency" : TRY, "ip" : "85.34.78.112" } Örnek Java Sonuç Koduna Ait JSON Çıktısı: { "status" : "success",
"locale" : "tr", "systemtime" : 1444142311338, "conversationid" : "123456789", "price" : 100, "paidprice" : 110, "currency" : TRY, "installment" : 3, "paymentid" : "457932", "fraudstatus" : 1, "merchantcommissionrate" : 10.00000000, "merchantcommissionrateamount" : 10, "iyzicommissionrateamount" : 4.51000000, "iyzicommissionfee" : 0.25000000, "cardtype" : "CREDIT_CARD", "cardassociation" : "MASTER_CARD", "cardfamily" : "Bonus", "binnumber" : "554960", "basketid" : "B67832", "itemtransactions" : [ { "itemid" : "BI101", "paymenttransactionid" : "1307", "transactionstatus" : 1, "price" : 30, "paidprice" : 33.00000000, "merchantcommissionrate" : 10.00000000, "merchantcommissionrateamount" : 3.00000000, "iyzicommissionrateamount" : 1.35300000, "iyzicommissionfee" : 0.07500000, "blockagerate" : 7.00000000, "blockagerateamountmerchant" : 2.31000000, "blockagerateamountsubmerchant" : 0, "blockageresolveddate" : "2015-10- 16 17:38:31", "submerchantkey" : "l4fcfyciof0patp6687dooch9po=", "submerchantprice" : 27, "submerchantpayoutrate" : 90.00000000, "submerchantpayoutamount" : 27, "merchantpayoutamount" : 2.26200000 }, { "itemid" : "BI102", "paymenttransactionid" : "1308", "transactionstatus" : 1, "price" : 50, "paidprice" : 55.00000000,
"merchantcommissionrate" : 10.00000000, "merchantcommissionrateamount" : 5.00000000, "iyzicommissionrateamount" : 2.25500000, "iyzicommissionfee" : 0.12500000, "blockagerate" : 7.00000000, "blockagerateamountmerchant" : 3.85000000, "blockagerateamountsubmerchant" : 0, "blockageresolveddate" : "2015-10- 16 17:38:31", "submerchantkey" : "lcb6ba9dwef5e8ygji0uiecw1kw=", "submerchantprice" : 42, "submerchantpayoutrate" : 84.00000000, "submerchantpayoutamount" : 42, "merchantpayoutamount" : 6.77000000 }, { "itemid" : "BI103", "paymenttransactionid" : "1309", "transactionstatus" : 1, "price" : 20, "paidprice" : 22.00000000, "merchantcommissionrate" : 10.00000000, "merchantcommissionrateamount" : 2.00000000, "iyzicommissionrateamount" : 0.90200000, "iyzicommissionfee" : 0.05000000, "blockagerate" : 7.00000000, "blockagerateamountmerchant" : 1.54000000, "blockagerateamountsubmerchant" : 0, "blockageresolveddate" : "2015-10- 16 17:38:31", "submerchantkey" : "D9V/MqIRitUzA4dutL+nCBvnWfs=", "submerchantprice" : 18, "submerchantpayoutrate" : 90.00000000, "submerchantpayoutamount" : 18, "merchantpayoutamount" : 1.50800000 } ] } 3.4 Para Transferi İçin Ürüne Onay Verme Pazaryeri çözümünde, ödeme iyzico dan geçtikten sonra, üye işyeri ödeme içinde yer alan kırılıma / ürüne onay verene dek para korumalı havuz hesapta bekletilir. Üye işyeri bu sürede ödemeyi iptal
edebilir, ödemenin kırılımını iade edebilir, ürün alıcıya ulaştı ve işlem sorunsuz tamamlandıysa para transferi için ürüne onay verebilir, veya verdiği ürün onayını geri çekebilir. 3.4.1 Ürüne Onay Verme Ürüne onay vermek için ödeme kırılımına ait id (paymenttransactionid) iletilmesi gerekmektedir. Onay verilen ödeme kırılımı id si (paymenttransactionid) servisten döner. API Servis (Endpoint) İsmi: /payment/iyzipos/item/approve Method: HTTP POST Örnek Java İstek Çıktısı EcomPaymentServiceClient client = new EcomPaymentServiceClientImpl(configuration); ApprovalRequest request = new ApprovalRequest(); request.setlocale(requestlocaletype.tr.getvalue()); request.setconversationid("123456789"); request.setpaymenttransactionid("1546"); ApprovalResponse response = client.approve(request); System.out.println("conversationId=" + response.getconversationid()); System.out.println("locale=" + response.getlocale()); System.out.println("status=" + response.getstatus()); System.out.println("errorCode=" + response.geterrorcode()); System.out.println("errorMessage=" + response.geterrormessage()); System.out.println("errorGroup=" + response.geterrorgroup()); System.out.println("systemTime=" + response.getsystemtime()); System.out.println("paymentTransactionId=" + response.getpaymenttransactionid()); Örnek Java Sonuç Çıktısı conversationid=123456789 locale=tr status=success errorcode=null errormessage=null errorgroup=null
systemtime=1445240902151 paymenttransactionid=1546 Örnek Java İstek Koduna Ait JSON Çıktısı { "locale" : "tr", "conversationid" : "123456789", "paymenttransactionid" : "1546" } Örnek Java Sonuç Koduna Ait JSON Çıktısı { "status" : "success", "locale" : "tr", "systemtime" : 1445240902151, "conversationid" : "123456789", "paymenttransactionid" : "1546" } 3.4.2 Verilen Onayı Geri Çekme Ürüne verilen onayı geri çekmek için ödeme kırılımına ait id (paymenttransactionid) iletilmesi gerekmektedir. Onayı geri çekilen ödeme kırılımı id si (paymenttransactionid) servisten döner. API Servis (Endpoint) İsmi: /payment/iyzipos/item/disapprove Method: HTTP POST Örnek Java İstek Çıktısı EcomPaymentServiceClient client = new EcomPaymentServiceClientImpl(configuration); ApprovalRequest request = new ApprovalRequest(); request.setlocale(requestlocaletype.tr.getvalue()); request.setconversationid("123456789"); request.setpaymenttransactionid("1546");
ApprovalResponse response = client.disapprove(request); System.out.println("conversationId=" + response.getconversationid()); System.out.println("locale=" + response.getlocale()); System.out.println("status=" + response.getstatus()); System.out.println("errorCode=" + response.geterrorcode()); System.out.println("errorMessage=" + response.geterrormessage()); System.out.println("errorGroup=" + response.geterrorgroup()); System.out.println("systemTime=" + response.getsystemtime()); System.out.println("paymentTransactionId=" + response.getpaymenttransactionid()); Örnek Java Sonuç Çıktısı conversationid=123456789 locale=tr status=success errorcode=null errormessage=null errorgroup=null systemtime=1445241016138 paymenttransactionid=1546 Örnek Java İstek Koduna Ait JSON Çıktısı { "locale" : "tr", "conversationid" : "123456789", "paymenttransactionid" : "1546" } Örnek Java Sonuç Koduna Ait JSON Çıktısı { "status" : "success", "locale" : "tr", "systemtime" : 1445241016138, "conversationid" : "123456789", "paymenttransactionid" : "1546" }