iyzico 3D Secure Ödeme Entegrasyonu

iyzico 3D Secure Ödeme Entegrasyonu’ nu Başlat, Göster, Öğren ile 3 adımda kolayca tamamlıyoruz.

Bildiğiniz gibi 3D Secure ödeme e-ticaret dünyasında özellikle geliştiriciler için önemli bir konu. Normal ödeme yönteminden farklı olarak kullanıcının cep telefonuna bankası tarafından yönlendirilen SMS/OTP’ yi girerek yaptığı doğrulama sonucu işlem gerçekleştirilmesi gerekiyor.

Başlarken iki noktayı belirtmek isterim; Bir önceki yazımda da ifade ettiğim gibi çok tercih edilmesi ve yaygın olması nedeniyle konuyu PHP üzerinden inceleyeceğim. Entegrasyonu local ortamda yapacağım için MAMP vb. PHP dosyalarını çalıştırmak için gerekli olan bir tool kullanacağım.

Sandbox(test) Hesabı Oluşturma

Entegrasyona başlarken sandbox 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 paneline giriş sırasında SMS şifresi olarak 123456 kullanabiliriz, cep telefonumuza SMS gelmesini beklememize gerek bulunmuyor.)

Sandbox (test) hesap oluşturma

PHP Kütüphanesi

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/iyzicobağ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.

ApiKey, SecretKey ve BaseUrl parametrelerini set ediyoruz.

Başlat

Config ayarlarımızı tamamladıktan sonra 3D Secure ödemeyi başlatıyoruz. initialize_threeds.php dosyasında yer alan callbackurl parametresine create_threeds_payment.php dosyasının yolunu göstermemiz/ayarlamamız gerekiyor. Ardından initialize_threeds.php’ yi çalıştırarak sorguyu gerçekleştiriyoruz.

callbackUrl parametresine create_threeds_payment.php dosyasının yolunu set ediyoruz.

Göster

3D Secure ödeme sorgusu yapıldığında, bize response olarak status (failure olması durumunda errorCode, errorMessage dönecek), systemTime, conversationId ve htmlContent parametreleri geliyor. Response içerisinde dönen htmlContent’i son kullanıcıya gösteriyoruz, son kullanıcı cep telefonuna bankası tarafından yönlendirilen SMS şifreyi girdiğinde ise bizim callbackUrl parametresinde belirlemiş olduğumuz adrese status, paymentId, conversationData, conversationId, mdStatus parametreleri dönecek.

Biz şu an sandbox (test) ortamda çalıştığımız için initialize_threeds.php’ yi tarayıcıda çalıştırarak iyzico’ nun sandbox (test) ortam için sağlamış olduğu 3D Secure sayfasını görüntülüyoruz. Sayfa içerisinde de görebileceğiniz gibi 3D Secure şifresi olarak 283126 kullanıyoruz.

3D Secure şifresi olarak 283126 kullanılıyor.

Bu işlem banka, iyzico ve üye iş yeri arasında 3' lü el sıkışma(handshake) sağlamaktadır. Bu sırada karttan henüz bir tahsilat yapılmamıştır. Kod içerisinde belirtmiş olduğunuz callbackUrl’ inize paymentId ve conversationData (optional) değerlerini aldığınızda, ödemeyi gerçekleştirmek için bir sorgu daha yapmanız gerekir.

Öğren

Başlattığımız 3D Secure ödemenin durumunu öğrenmek, ödeme işlemini tamamlamak için iyzico tarafından bize dönen paymentId ve varsa conversationData yı kullanarak bir sorgu daha gerçekleştiriyoruz. Bu sorgu için create_threeds_payment içerisinde paymentId ve conversationData parametrelerini aşağıdaki gibi set ediyoruz.

$request->setPaymentId($_POST["paymentId"]);
$request->setConversationData("");

Post işlemi sonrası success yanıtı aldık. Gördüğünüz gibi Başlat, Göster, Öğren şeklinde 3 adımda kolaylıkla iyzico 3D Secure entegrasyonunu tamamlayabilirsiniz.

Unutmayınız!

3D Secure entegrasyonu asenkron bir süreçtir. Son kullanıcı 3D Secure penceresini kapatabilir, yanlış şifre girebilir, “Vazgeç” butonuna basabilir ve işlem callBack aşamasında kalır.

CallbackUrl’ inize status=success döndüğünde mutlaka bitirme sorgunuzu yapın.