Iyzco şuan yeni alt yapsına geçiyor fakat benim uyguladığım eski sistem.Iyzico ile ödeme sistemlerini incelediğimizde bi 2 farklı seçenek sunmakta. Bunlardan biri ortak ödeme sayfası diğeri ise kendi formunuzu kullanıp değerleri iyzico sunucuna gönderiyoruz.Gelen response cevabına göre işlemlere devam ediyoruz.
Öncelikle iyziconun kendi sitesinden hesap oluşturup, hesap ayarları kısmında test app id ve secret keyi bi yere koyalım, live moduna geçene kadar bu keylerle işlem yapacağız ortak sayfasında form almak için aşağıdaki kodları ekrana basmanız yeterlidir , bu esnada curl kütüphanesi açık olmalıdır.
$data = array(); $data['api_id'] = 'im5242db25a2cbeid2z2hstlupwjaut9'; $data['secret'] = 'im5242db3422127sk5o9czq16imr79dv'; $data['customer_language'] = 'tr'; $data['mode'] = 'test'; // metod $data['external_id'] = rand(); // random id $data['amount'] = '199'; // fiyat * 100 $data['type'] = 'CC.DB'; $data['installment'] = true; // taksit $data['return_url'] = 'http://localhost/eCommerce/sonuc.php'; // Sonuç url $data['currency'] = 'TRY'; $rest = curl_init(); curl_setopt($rest,CURLOPT_URL,$url); curl_setopt($rest,CURLOPT_POST,1); curl_setopt($rest,CURLOPT_POSTFIELDS,$data); curl_setopt($rest,CURLOPT_SSL_VERIFYPEER, false); curl_setopt($rest,CURLOPT_RETURNTRANSFER, true); $response = curl_exec($rest); curl_close($rest); $resultJson = json_decode($response,true); echo $resultJson['code_snippet'];
Gönder butonuna bastıktan sonra gelen sonucu görmek için responseyi ekrana basabilirsiniz. Sonuç olumlu ise db,mail vs işlemlerinizi yapabilirsiniz.
$response = $_POST['json']; $result = json_decode(stripslashes($response), true); var_dump($result);
Bi diğer seçenek ise kendi formunuzu kullanmak bunun için iyzico apisi kullanarak bin ve kullanacaksınız taksit sorgularını post işleminden önce yapmanız gerekiyor.Ben bu sorguları ajax ile yaptım.Bin servisine kredi kartının ilk 6 hanesini yollamamız gerekiyor.Bin servisinde kart türünü belirleyip taksit sorgusuna yollayacağız.
$url = https://api.iyzico.com/bin-check; $params = 'api_id=123&secret=123&mode=test&bin=123456'; $rest = curl_init(); curl_setopt($rest,CURLOPT_URL,$url); curl_setopt($rest,CURLOPT_POST,1); curl_setopt($rest,CURLOPT_POSTFIELDS,$params); curl_setopt($rest,CURLOPT_SSL_VERIFYPEER, false); curl_setopt($rest,CURLOPT_RETURNTRANSFER, true); $response = curl_exec($rest); curl_close($rest);
Buradan gelen response cevap ise aşağıdaki gibidir.Biz eğer taksit servisi kullanacaksak bin numarasını ve tutarı taksit sorgusunda göndermemiz gerekiyor.İssuer ve brand paremetrelerini kart kart değişikliğine göre ekran css veya js ile süsyeyebilirsiniz.
code: 000.000.000; status: SUCCESS details: BIN: 450803 CARD_TYPE: CREDIT CARD ISSUER: MASTERCARD BRAND: Maximum BANK_CODE: 64
Taksit sorgusunda ise müşteri kart numaralarını girdiğinizi farzedersek, gidicek sorgu ise ;
$url = https://iyziconnect.com/installment/v1/; $params = 'api_id=123&secret=123&mode=test&amount=15000&bin_number=binnumarası; $rest = curl_init(); curl_setopt($rest,CURLOPT_URL,$url); curl_setopt($rest,CURLOPT_POST,1); curl_setopt($rest,CURLOPT_POSTFIELDS,$params); curl_setopt($rest,CURLOPT_SSL_VERIFYPEER, false); curl_setopt($rest,CURLOPT_RETURNTRANSFER, true); $response = curl_exec($rest); curl_close($rest); $resultJson = json_decode($response,true); var_dump($resultJson);
Gelen response cevabı şu şekilde olucaktır.
response: state: success mode:test; date_time: 15-07-05 10:40:4 installment_list: MAXIMUM: { 1: installment_count: installment_amount: 10000 total_amount: 10000 2: installment_count: installment_amount: 5163 total_amount: 10325 3: installment_count: installment_amount: 3458 total_amount: 10375 6: installment_count: installment_amount: 1766 total_amount: 10595 9: installment_count: installment_amount: 1209 total_amount: 10880 } account: { card_family: Maximum card_type: CREDIT_CARD card_association: MASTER_CARD issuer_bank_name: İş Bankası issuer_bank_code:64 }
Gelen cevapda status success ise bize taksit sayılarını vericektir, failed ise hata vardır gelen hata mesajına göre editleme işleminizi yapmanız gerekir.Taksit sorgularını istersenız js ile istersen php html elementlerine göre ayarlayıp, ajaxla ekrana bastırabilirsiniz.Bundan sonra aşamamız sipariş aşaması olucaktır.Debit kartlarında (hesap kartlarında) 3d ile ödeme zorunluluğu vardır.Hesap kartlarında taksit seçeneği mevcut olmağından gidicek installment değerini boş bırakabiliriz.Buda biraz js bilgisi gerektiriyor en başta bin servisinde gelen response’de kart türü debit kart ise 3D zorunluluğu kılmalısınız.Debit kartlarda 3Dsiz sorguda size hata vericektir.
$url = https://iyziconnect.com/post/v1/; $data['api_id'] = ''; // api id $data['secret'] = ''; // secret id $data['customer_language'] = 'tr'; $data['mode'] = 'test'; $data['response_mode'] = 'ASYNC'; // 3D kullanılcaksa AYSNC değeri, 3d kullanılmayakcsa SYCN olmalıdır $data['external_id'] = 'orderid1'; $data['amount'] = $15000; // tutar $data['card_number'] = ''; $data['card_expiry_year'] = ''; $data['card_expiry_month'] = ''; $data['card_brand'] = ''; // kart türü $data['card_holder_name'] = ''; // kart sahibi $data['card_verification'] = ''; // güvenlik koduı $data['installment_count'] = ''; // sçilen taksit sayısı $data['connector_type'] = ''; // banka ismi $data['type'] = 'CC.DB'; $data['currency'] = 'TRY'; $data['customer_first_name'] = ''; //müşteri adı $data['customer_last_name'] = ''; // müşteri soyadı $data['customer_contact_email'] = // müşteri email $data['type'] = 'DB'; $data['descriptor'] = ''; // açıklama $data['return_url'] = 3dsonuc.php'; // 3D formundan gelen cevap $rest = curl_init(); curl_setopt($rest,CURLOPT_URL,$url); curl_setopt($rest,CURLOPT_POST,1); curl_setopt($rest,CURLOPT_POSTFIELDS,$data); curl_setopt($rest,CURLOPT_SSL_VERIFYPEER, false); curl_setopt($rest,CURLOPT_RETURNTRANSFER, true); $response = curl_exec($rest); curl_close($rest);
Eğer 3D ile ödeme yapılcaksa ekrana echo $response; basarak 3d formuna göndermiş olucaksınız, 3D kullanılmayacaksa $resultJson = json_decode($response,true); resultJsonu ekrana basarak gelen sonuçları görebilirsiniz
3D’siz sorgudan gelen cevap;
$resultJson = json_decode($response,true); var_dump($resultJson);
3D formundan gelen cevap ;
$response = base64_decode($_GET['response']); $resultJson = json_decode($response,true);
İkisininde ortak response sonucu;
response: { state: success; date_time: 15-07-05 16:20:27; request_id: MTQzNjExMzIyNg3SEgmoCS6Y3NdRMWK7; } mode: test; transaction: { transaction_id: MTQzNjA5MzMyNgswuSDfA6tAOGiZTXcX external_id: 635513741478123123123; reference_id: 20150705104847.036951l2 state: reversed amount: 0 connector_type:Isbank installment_count: 6 connector_auth_code: T88131 } customer: { first_name: test_firstname : last_name: test_lastname email: test@test.com }
Eğer sonuç success ile kredi kartından çekim işlemi yapılmıştır, eğer failed ise response cevabında hata koduna göre düzenleme işlemi yapmanız gerekmektedir.Anlatım biraz bozuk olmuş olabilir kusura bakmayın.Iyzico destek konusunda kendileri destek veriyorlar.Tüm işlemlerden sonra gerekli evrakları iyzico’ya göndererek live app id ve secret keyinizi alarak alarak live metoduna geçebilirsiniz
Öncelikle teşekkür ederim. Yeni api versiyonu ile ilgilide bir yazı hazırlamanız mümkün mü ?
Ben teşekkür ederim.Zamanım olursa hazırlacağım yeni api sistemini incelemedim henüz.
teşekkürler cihan bey yeni api sistemi ile dökümanlarınızı bekliyoruz
abi ne apisi fln ya, opencart 1.5.6.4 ve 2.3x için bi taksit tabı yapda herkes dua etsin sana gözünü seveyim