iyzico Entegrasyonu (Ödeme Formu Entegrasyonu)

Ülkemizde web sayfası tasarlama/geliştirme konularında en yaygın ve en çok tercih edilen yazılım dillerinden biri PHP olduğu için iyzico entegrasyonu PHP üzerinden ele alacağız.

Entegrasyona Başlamak

iyzico entegrasyonu için önce local ortamda PHP dosyalarını çalıştırabilmemiz gerekir, bu nedenle bir web sunucuya ihtiyacımız var. Ben kullandığım environment nedeniyle MAMP ile çalışmayı tercih ettim. İnternette kısa bir arama ile MAMP ile aynı işlevi gerçekleştiren WAMP, XAMPP, EasyPHP gibi bir çok programa ulaşabilirsiniz.

Entegrasyona başlarken sandbox (test) ortamda bir hesap oluşturmamız gerekiyor. https://sandbox-merchant.iyzipay.com/auth/register adresi üzerinden entegrasyon sırasında kullanacağımız sandbox hesabımızı oluşturabiliriz. (Sandbox (test) paneline giriş sırasında SMS şifresi olarak 123456 kullanabiliriz, cep telefonumuza SMS gelmesini beklememize gerek yoktur.)

iyzico tarafından hazırlanmış olan PHP kütüphanesini https://github.com/iyzico/iyzipay-php bağlantısı üzerinden indirebilirsiniz. Farklı bir yazılım dili kullanmak isterseniz https://github.com/iyzico bağlantısına tıklayarak iyzico tarafından farklı yazılım dilleri için hazırlanan kütüphanelere de ulaşabilirsiniz. İndirdiğimiz PHP kütüphanesinde yer alan dosyaları MAMP’ ın kurulu olduğu dizinde htdocs klasörü içerisine kopyalıyoruz.

Kod Düzenlemeleri

Entegrasyonun kod seviyesindeki ilk adımı olarak config.php içerisinde yer alan ApiKey ve SecretKey parametrelerini set ediyoruz. Bu iki parametre için kullanacağımız değerlere iyzico sandbox panelimize https://sandbox-merchant.iyzipay.com/auth/login adresinden giriş yaparak sırasıyla Ayarlar > Firma Ayarları menüsünden ulaşabiliriz. BaseUrl parametresi kütüphane içerisinde set edilmiş olarak gelmekte, gelmemesi ihtimaline karşı https://sandbox-api.iyzipay.com değerini set edebilirsiniz.

config.php dosyasının düzenlenmesi

Config ayarlarımızı tamamladıktan sonra ödeme formu oluşturmak için initialize_checkout_form.php dosyasını client application olarak çalıştırıyoruz ve status parametresinde success yanıtı alıyoruz.

initialize_checkout_form.php dosyasının düzenlenmesi

TLS Kontrolü

Bu aşamada success yanıtı alamadığımız durumda öncelikle TLS versiyonumuzu kontrol etmeliyiz. iyzico ile kuracağımız tüm iletişim TLS 1.2 olmalı, bunun altındaki tüm versiyonlarda iyzico ile iletişim kuramamaktayız. Ardından src\Iyzipay\DefaultHttpClient.php dosyasının içinde post functionı altına CURLOPT_SSL_VERIFYPEER=>false, satırını eklememiz gerekiyor. Bu kontrolleri gerçekleştirdikten sonra tekrar initialize_checkout_form.php’ yi client application olarak çalıştırıyoruz ve status parametresinde success yanıtı alıyoruz.

Hata Kodu ve Mesajlarını Yazdırmak

PHP clientı dönüş parametleri için get fonksiyonları içermekte. status, errorMessage ve checkoutFormContent parametreleri için aşağıdaki satırları initialize_checkout_form.php içerisine ekliyoruz.

print_r($checkoutFormInitialize->getStatus());
print_r($checkoutFormInitialize->getErrorMessage());
print_r($checkoutFormInitialize->getCheckoutFormContent());

bu satırları ekledikten sonra initialize_checkout_form.php yi çalıştırıyoruz. Formun tarayıcıda görüntülenebilmesi için aşağıdaki div satırlarını initialize_checkout_form.php’ ye ekliyoruz. Tarayıcıyı yenilediğimizde artık iyzico ödeme formunu görüntüleyebiliyoruz.

Ödeme Formunu Açma İşlemi

<html>
<body>
<div id="iyzipay-checkout-form" class="popup"></div>
</body>
</html>

div satırlarının eklenmesi

Ödeme yapıldıktan sonra callbackUrl parametresine bir token değeri dönüyor. retrieve_checkout_form_result.php ödeme sonucunu alabilmemiz için bir örnek içeriyor. Tarayıcıda görünen retrieve_checkout_form_result.php dosyasının adresini initialize_checkout_form.php içerisinde callbackUrl olarak set ediyoruz.

callbackUrl’ in tanımlanması

Ödeme sonrası callbackUrl adresimize gelen token değerini “token” parametresine giriyoruz. Bunun için retrieve_checkout_form_result.php içerisine aşağıdaki kod parçasını yazıyoruz.

$token = $_POST["token"];
$request->setToken($token); //bu parametre 11. satırda mevcut, sadece editliyoruz, yeniden eklemiyoruz.

Token değerinin token parametresine set edilmesi

token ile yapılan sorgunun sonucunu “status” parametresi dönmekte. Ödeme işleminin sonucunu ise “paymentStatus” paremetresi dönmekte. paymentStatus = success ise tutar karttan çekilmiş, ödeme başarıyla yapılmış demektir. Aşağıdaki kod satırlarını retrieve_checkout_form_result.php içerisine ekliyoruz.

print_r($checkoutForm->getStatus());
print_r($checkoutForm->getPaymentStatus());
print_r($checkoutForm->getErrorMessage());

iyzico Entegrasyonu’ nu Tamamlamak

Son aşamada ise initialize_checkout_form.php’ yi çalıştırıyoruz. Açılan ödeme formunda https://dev.iyzipay.com/tr/test-kartlari adresinde bulunan kart bilgilerini kullanabiliriz. Test kartlarında son kullanma tarihi için girilecek değer ay/yıl şeklinde olacak, örneğin 10/20 şeklinde giriş yapabiliriz. Cvv için girilecek değeri ise 123 olarak kullanabilirsiniz. 3D ödemelerde ise 3D Secure şifresini 283126 olarak kullanabiliriz. Ödeme butonuna bastığımzıda iyzico servislerini tetikliyoruz, sandbox ortamda bir ödeme işlemi gerçekleşiyor. Açılan pencerede status = success ve paymentStatus = Success görüyoruz, bu iki ifade ilgili tutarın karttan başarıyla çekildiğini gösteriyor.

Sonuç olarak; Kolay iki sorgu ile iyzicoyu entegre edebilirsiniz. Unutmayınız sisteminizde ek kontroller, güvenlik önlemleri alıp her adımda loglama ve ek sorgular ile mutabık kalmalısınız.

iyzico 3D Secure Ödeme Entegarsyonu için bu yazımızı inceleyebilirsiniz.

Bir Cevap Yazın