Codeigniter framework’ü kullanarak Iyzico entegrasyonu yapmayı anlatacağım. Entegrasyona başlamadan önce bir sandbox hesabınız olması gerekiyor, yok ise https://sandbox-merchant.iyzipay.com/auth adresinde hesap açabilirsiniz.

Ödeme formunu göstermek için views  içinde payment.php adında dosya oluşturuyorum ve Iyzico dökümanındaki ödeme formu kodlarını ekliyorum.

Burada kodları çalışma mantığını anlatmak için paylaşıyorum, test etmek için ekteki dosyayı indirebilirsiniz.

https://github.com/iyzico/iyzipay-php buradan dosyayı indirip application/third_party içine atıyoruz.

Buradaki fiyat ve sipariş bilgilerini kendi sisteminize göre özelleştirmeniz gerekiyor.

<?php
$request = new \Iyzipay\Request\CreateCheckoutFormInitializeRequest();
$request->setLocale(\Iyzipay\Model\Locale::TR);
$request->setConversationId("123456789");
$request->setPrice("1");
$request->setPaidPrice("1.2");
$request->setCurrency(\Iyzipay\Model\Currency::TL);
$request->setBasketId("B67832");
$request->setPaymentGroup(\Iyzipay\Model\PaymentGroup::PRODUCT);
$request->setCallbackUrl("https://localhost/iyzico-ci/home/status");
$request->setEnabledInstallments(array(2, 3, 6, 9));

$buyer = new \Iyzipay\Model\Buyer();
$buyer->setId("BY789");
$buyer->setName("John");
$buyer->setSurname("Doe");
$buyer->setGsmNumber("+905350000000");
$buyer->setEmail("email@email.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, Merdivenköy Mah. Bora Sok. No:1");
$buyer->setIp("85.34.78.112");
$buyer->setCity("Istanbul");
$buyer->setCountry("Turkey");
$buyer->setZipCode("34732");

$request->setBuyer($buyer);
$shippingAddress = new \Iyzipay\Model\Address();
$shippingAddress->setContactName("Jane Doe");
$shippingAddress->setCity("Istanbul");
$shippingAddress->setCountry("Turkey");
$shippingAddress->setAddress("Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1");
$shippingAddress->setZipCode("34742");
$request->setShippingAddress($shippingAddress);

$billingAddress = new \Iyzipay\Model\Address();
$billingAddress->setContactName("Jane Doe");
$billingAddress->setCity("Istanbul");
$billingAddress->setCountry("Turkey");
$billingAddress->setAddress("Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1");
$billingAddress->setZipCode("34742");
$request->setBillingAddress($billingAddress);

$basketItems = array();
$firstBasketItem = new \Iyzipay\Model\BasketItem();
$firstBasketItem->setId("BI101");
$firstBasketItem->setName("Binocular");
$firstBasketItem->setCategory1("Collectibles");
$firstBasketItem->setCategory2("Accessories");
$firstBasketItem->setItemType(\Iyzipay\Model\BasketItemType::PHYSICAL);
$firstBasketItem->setPrice("0.3");
$basketItems[0] = $firstBasketItem;

$secondBasketItem = new \Iyzipay\Model\BasketItem();
$secondBasketItem->setId("BI102");
$secondBasketItem->setName("Game code");
$secondBasketItem->setCategory1("Game");
$secondBasketItem->setCategory2("Online Game Items");
$secondBasketItem->setItemType(\Iyzipay\Model\BasketItemType::VIRTUAL);
$secondBasketItem->setPrice("0.5");

$basketItems[1] = $secondBasketItem;
$thirdBasketItem = new \Iyzipay\Model\BasketItem();
$thirdBasketItem->setId("BI103");
$thirdBasketItem->setName("Usb");
$thirdBasketItem->setCategory1("Electronics");
$thirdBasketItem->setCategory2("Usb / Cable");
$thirdBasketItem->setItemType(\Iyzipay\Model\BasketItemType::PHYSICAL);
$thirdBasketItem->setPrice("0.2");
$basketItems[2] = $thirdBasketItem;
$request->setBasketItems($basketItems);

$checkoutFormInitialize = \Iyzipay\Model\CheckoutFormInitialize::create($request, $options);
//print_r($checkoutFormInitialize->getStatus()); 
//print_r($checkoutFormInitialize->getErrorMessage());
print_r($checkoutFormInitialize->getCheckoutFormContent());
?>
<!-- Begin page content -->
<main role="main" class="flex-shrink-0">
  <div class="container">
      <div class="pricing-header px-3 py-3 pb-md-4 mx-auto text-center">
        <h1 class="display-4">Ödeme</h1>
      </div>
      <!--ödeme formu burada-->
      <div id="iyzipay-checkout-form" class="responsive"></div>

  </div>
</main>

Daha sonra controllers içinde Home.php oluşturuyorum ve aşağıdaki fonksiyonları ekliyorum.

//iyzico kütüphanesi import ediliyor
public function initialize_iyzico()
{
	require_once(APPPATH . 'third_party/iyzipay/IyzipayBootstrap.php');
	IyzipayBootstrap::init();
	$options = new \Iyzipay\Options();
	$options->setApiKey('api keyiniz');
	$options->setSecretKey('secret keyiniz');
	$options->setBaseUrl("https://sandbox-api.iyzipay.com");
	return $options;
}

//ödeme formu çalışıyor
public function payment()
{
	$data['options'] = $this->initialize_iyzico();
	$this->load->view('partials/header', $data);
	$this->load->view('payment', $data);
	$this->load->view('partials/footer');
}

//ödeme formundan sonuç dönüyor
public function status()
{
	$options = $this->initialize_iyzico();
	# create request class
	$request = new \Iyzipay\Request\RetrieveCheckoutFormRequest();
	$request->setLocale(\Iyzipay\Model\Locale::TR);
	$request->setConversationId("123456789");
	$request->setToken($_POST["token"]);
	$checkoutForm = \Iyzipay\Model\CheckoutForm::retrieve($request, $options);
	//form sonucu(object)
	//print_r($checkoutForm);
	if($checkoutForm->getStatus() == "success")
	{
		$data['status'] = 'Ödeme başarıyla alındı.';
	}
	else{
		$data['status'] = 'Ödeme alınamadı, bir hata oluştu.';
	}

	$this->load->view('partials/header', $data);
	$this->load->view('index', $data);
	$this->load->view('partials/footer');
}

initialize_iyzico fonksiyonunda Iyzico’yu import ediyoruz ve apikey, secretkey, base url tanımlıyoruz.

payment fonskiyonunda views/payment.php’deki ödeme formuna options değişkeni iledeğerleri gönderiyoruz ve ödeme formu çalışıyor.

status fonksiyonunda ise ödeme formundan dönen değerleri alıyoruz. print_r($checkoutForm); yaptığımızda formdan dönen bütün değerleri görebilir ve istediğimiz değerleri çekebiliriz. Ben $checkoutForm->getStatus() kodu ile ödemenin başarılı olup olmadığını kontrol ederek bilgi mesajı gösterdim.


Daha sonra test etmek için siteadi.com/home/payment sayfasına gidiyoruz. Aşağıdaki gibi ödeme formumuz geliyor.

Iyzico Codeigniter entegrasyon

https://dev.iyzipay.com/tr/test-kartlari adresinden test kartlarına ulaşabilirsiniz. Onun dışındaki Kart Üzerindeki İsim, aa/yy ve cvc kodlarına test için istediğinizi yazabilirsiniz.

Codeigniter’da Iyzico entegrasyonu bu kadar. Sorularınızı yorum olarak iletebilirsiniz.

Kodları indirmek için tıklayınız.