TALHA KESKİN

Web Developer / UI Designer / Graphic & Web Designer

Kartal - İSTANBUL

Hoşgeldiniz. PHP, CSS, Javascript, jQuery, Bootstrap, PSD TO CSS, C#, .NET, Ajax, MsSQL, MySQL İşlerinizi yapabilirim.

Sosyal Profillerim
  • Yazı Detayı

PHP ile İyzico Entegresi Nasıl Yapılır

Bu Yazı PHP İçin Yazılmıştır.

Merhaba, bu yazımda internette kaynağını bulmakta çok zorlanılan bir konuyu ele almak istedim. Konunun adı : PHP ile İyzico Entegresi

 

Bildiğiniz gibi, Her bankanın kendine ait hemen hemen bir sanal pos apisi bulunmaktadır. Ancak, kodlayacağımız web sitesinde birden çok bankanın posunu kullanmamız gerekebilir. Bu durumda her posun yazımı aşırızı zahmetli ve zaman alan bir iş olacağından pekde mantıklı değil. İşte bu durumun önüne geçebilmek için günümüzde İyzico, PayTR, Payu gibi bankalaların sanal poslarını bir arada toplayan ödeme aracısı firmalar ortaya çıktı.

Bugün bu yazımda anlatacağım ödeme aracısı firmalardan bir tanesi olan İyzico’nun PHP web sitesine nasıl entege edileceğidir.

İyzico Nedir ?

Kendi  web sitelerindeki yazıdan anlaşılacağı üzere, İyzico 2010 yılında ortaya atılan bir fikir sonucunda şekillenen bir ödeme aracısı firmadır.  2012 yılından itibaren öncelikle E-Ticaret sitelerine daha sonrada her türlü web sitesine hizmet vermekte olan, kolay ve güvenli bir ödeme yönteminin adıdır.

 

İyzico Güvenli mi ?

Bugün Türkiye’de Developer’ların en fazla kullandığı ödeme apisi olduğuna göre bu sorunun cevabını evet olarak verebilirim.

php ile iyzico entegresi

 

PHP ile iyzico Entegresi

Konuyu fazla uzatmadan PHP ile iyzico entegresi kısmına geçmek istiyorum.
Öncelikle İyziconun 2 tür entegrasyon durumu bulunmaktadır.

  1. Basit Ödeme Formu
  2. Pazaryeri Apisi

Bu yazımızda anlatacağımız entegrasyon türü PHP ile İyzico Basit Ödeme Formu Entegrasyonu 

Öncelikle şunu bilmelisiniz. Web sitenizde üyeler birbirleri ile alışverişte bulunuyorlarsa (Gittigidiyor, N11 gibi) bu ödeme türü size göre değil demektir. Sizin entegrasyon yapacağınız tür Pazaryeri apisi olmalıdır. Bu api sadece sizin üyelere birşeyler satma durumunuzda geçerli olan bir türdür.

PHP ile İyzico Basit Ödeme Formu Entegrasyonu 

Entegrasyona başlarken  Bu Adresten  İyziconun Api kodlarını indirmeniz gerekiyor. Dosyaları olduğu gibi FTP’de ana dizine atmanız gerekmektedir.

 

Ödeme Formunu Başlatmak İçin Gerekli Olan Kodlar

Benim tercih ettiğim yöntem veritabanında gecici bir sipariş tablosu oluşturmak. Ödeme formu sayfasında bu tabloya siparişi kaydedip, Ödeme başarılı ise kaydedilen gecici siparişi normal siparişler tablosuna almak.

 

Gecici siparişler tablosuna kayıt için örnek kodlar ;

<?php
$siparisID = $db->veriEkleSayiAl("gecici_siparisler",
array("NULL","?","?"),
array($_SESSION["KullaniciID"],$_POST["SiparisTUTARI"]));
?>
Not : Kendi Yazdığım PDO Veritabanı Classını Kullandığım İçin Buradaki Kodlar Size Karışık Gelebilir. Yapılan İşlem Veritabanında Gecici Siparişlere Bir Kayıt Ekleyip Eklenen Kaydın ID’sini almaktan ibarettir.

Ödeme Formunu Getirme

<?php
include('iyzico/samples/config.php');

# create request class
        $request = new \Iyzipay\Request\CreateCheckoutFormInitializeRequest();
        $request->setLocale(\Iyzipay\Model\Locale::TR);
        $request->setConversationId($siparisID); // Her işlemde benzersiz bir sayı gitmelidir. 
        $request->setPrice($_POST[SiparisTUTARI]); // Siparişlerin Toplam Fiyatı
        $request->setPaidPrice($_POST[SiparisTUTARI]); // Siparişlerin Toplam Fiyatı
        $request->setCurrency(\Iyzipay\Model\Currency::TL);
        $request->setBasketId(rand(0,9999));
        $request->setPaymentGroup(\Iyzipay\Model\PaymentGroup::PRODUCT);
        $request->setCallbackUrl("$siteURL/odemesonucu.php?geici=$siparisID"); // Ödeme sonucunun alınacağı sayfaya gecici sipariş ID'yi yolluyorum
        $request->setEnabledInstallments(array(2, 3, 6, 9)); // Taksit Seçenekleri
        $buyer = new \Iyzipay\Model\Buyer();
        $buyer->setId($_SESSION["KullaniciID"]); // Alıcı Üyenin ID'si
        $buyer->setName('Ali'); // Alıcı Üyenin Adı (Kendi Verilerinizle Değişin)
        $buyer->setSurname('Örnek'); // Alıcı Üyenin Soyadı (Kendi Verilerinizle Değişin)
        $buyer->setGsmNumber('0531111111'); // Alıcı Üyenin GSM Numarası(Kendi Verilerinizle Değişin)
        $buyer->setEmail('Ornekmaik@gmail.com'); // Alıcı Üyenin Maili (Kendi Verilerinizle Değişin)
        $buyer->setIdentityNumber('111111111111'); // Alıcı Üyenin TC'si (Kendi Verilerinizle Değişin)
        $buyer->setLastLoginDate(date("Y-m-d H:i:s"));
        $buyer->setRegistrationDate(date("Y-m-d H:i:s"));
        $buyer->setRegistrationAddress($db->VeriOkuTek("il","IL_ADI","IL_ID",$db->bilgial[0]->UyeSEHIR)." ".$db->VeriOkuTek("ilce","ILCE_ADI","ILCE_ID",$db->bilgial[0]->UyeILCE)." ".$db->VeriOkuTek("mahalle_koy","MAHALLE_ADI","MAH_ID",$db->bilgial[0]->UyeMAHALLE));
        $shippingAddress->setZipCode("34742");
        $request->setShippingAddress($shippingAddress);
        
        $billingAddress = new \Iyzipay\Model\Address();
        $billingAddress->setContactName('Ali Örnek'); // Alıcı Üyenin Adı ve Soyadı (Kendi Verilerinizle Değişin)
        $billingAddress->setCity('İstanbul') // Alıcı Üyenin Şehri (Kendi Verilerinizle Değişin) 
        $billingAddress->setCountry("Turkey");
        $billingAddress->setAddress('Örnek Adres'); // Alıcı Üyenin Adresi(Kendi Verilerinizle Değişin)
        $billingAddress->setZipCode("34742");
        $request->setBillingAddress($billingAddress);
       
        
       $basketItems = array();
       $firstBasketItem = new \Iyzipay\Model\BasketItem();
       $firstBasketItem->setId("BI101"); // Alınan Ürünün Numarası (Kendi Verilerinizle Değişin)
       $firstBasketItem->setName("100lük parfüm"); // Alınan Ürünün Adı(Kendi Verilerinizle Değişin)
       $firstBasketItem->setCategory1("Parfüm"); // Alınan Ürünün Kategorisi (Kendi Verilerinizle Değişin)
       $firstBasketItem->setCategory2("Deodorant"); // Alınan Ürünün Alt Kategorisi (Kendi Verilerinizle Değişin)
       $firstBasketItem->setItemType(\Iyzipay\Model\BasketItemType::PHYSICAL);
       $firstBasketItem->setPrice($_POST["SiparisTUTARI"]); // Alınan Ürünün Fiyatı (Kendi Verilerinizle Değişin)
       $basketItems[0] = $firstBasketItem;
     
        $request->setBasketItems($basketItems);
        # make request
        $checkoutFormInitialize = \Iyzipay\Model\CheckoutFormInitialize::create($request, Config::options());
        # print result
        
        echo $checkoutFormInitialize->getcheckoutFormContent();
        //print_r($checkoutFormInitialize);

Yukarıdaki kodlarda zaten herşey açık. Ancak burada dikkat edilmesi gereken nokta bu kodlar tek ürün satışı için. Eğer birden fazla ürün satacaksanız yani sepet mantığı var ise. Basketitems yazan kısımları döngüye sokmalısınız. Ayrıca bu ürünlerin fiyatının toplamı en başta yazdığımız toıplam fiyata eşit olmalıdır.

 

Ödeme Onaylama Sayfası

Eğer kullanıcılar ödemeyi başarı ile yaptı ise. setCallbackUrl ile tanımladığımız sayfaya gitmemiz gerekiyor. O sayfanın kodlarıda şu şekilde olmalıdır;

        include('iyzico/samples/config.php');
        $request = new \Iyzipay\Request\RetrieveCheckoutFormRequest();
        $request->setLocale(\Iyzipay\Model\Locale::TR);
        $request->setConversationId("123456789");
        $request->setToken($_POST['token']);
        # make request
        $checkoutForm = \Iyzipay\Model\CheckoutForm::retrieve($request, Config::options());
        # print result
        
        if($checkoutForm->getPaymentStatus() == "SUCCESS")
        {
            
            $db->VeriOkuCoklu("gecicisiparisler",array("SiparisID"),array($_GET[gecici])); //Gecici Siparişlerdeki Kaydımı Okudum.  
            
            Burada Ben Siparişler Tablosuna Gecici Siparişlerdeki Kaydı Ekliyorum Siz Başka işlemlerde yapabilirsiniz.
            $db->Basarili("Ödemeniz başarı ile alınmıştır. Siparişlerinizi profilinizden görüntüleyebilirsiniz"); 
        }else
        {
            $db->Basarisiz("Bir sorun oluştu. Lütfen daha sonra tekrar deneyiniz");
        }

 


4 yorum

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*

*

*