- Katılım
- 7 Ocak 2026
- Mesajlar
- 290
- Tepkime puanı
- 2
- Puanları
- 18
Ödeme sistemleri entegrasyonu, PHP'de API kullanımının en hassas noktasıdır. Bu süreçte iki temel aşama vardır: İsteği Hazırlama (Sepet ve kullanıcı bilgilerini gönderme) ve Geri Dönüşü İşleme (Ödeme başarılı mı, değil mi kontrolü).
API isteklerini manuel cURL ile yazmak yerine, firmanın sunduğu resmi kütüphaneyi (SDK) kullanmak hata payını sıfıra indirir. Terminalinizde şu komutu çalıştırın:
Bu aşamada sepet tutarı, kullanıcı bilgileri ve IP adresi gibi verileri Iyzico'ya gönderip karşılığında bir HTML form kodu alırız.
Ödeme tamamlandığında kullanıcı belirlediğiniz CallbackUrl adresine yönlendirilir. Burada ödemenin gerçekten başarılı olup olmadığını tekrar API'ye sormanız gerekir.
API entegrasyonu, modern web dünyasının en güçlü yeteneğidir. Ödeme sistemleri özelinde ise güvenlik her şeyden önce gelir. Hazır SDK'ları kullanmak, her zaman HTTPS üzerinden çalışmak ve dönen veriyi sunucu tarafında doğrulamak profesyonel bir yazılımcının kırmızı çizgisidir.
1. Hazırlık ve Composer ile SDK Kurulumu
API isteklerini manuel cURL ile yazmak yerine, firmanın sunduğu resmi kütüphaneyi (SDK) kullanmak hata payını sıfıra indirir. Terminalinizde şu komutu çalıştırın:
Bash:
composer require iyzico/iyzipay-php
2. Ödeme Formunu Başlatma (Step 1)
Bu aşamada sepet tutarı, kullanıcı bilgileri ve IP adresi gibi verileri Iyzico'ya gönderip karşılığında bir HTML form kodu alırız.
PHP:
<?php
require_once('vendor/autoload.php');
// API Anahtarları (Iyzico Panelinden Alınır)
$options = new \Iyzipay\Options();
$options->setApiKey("sandbox-xxxxxx");
$options->setSecretKey("sandbox-yyyyyy");
$options->setBaseUrl("https://sandbox-api.iyzipay.com");
// Ödeme Formu İsteği Oluşturma
$request = new \Iyzipay\Request\CreateCheckoutFormInitializeRequest();
$request->setLocale(\Iyzipay\Model\Locale::TR);
$request->setConversationId("123456"); // Sipariş ID
$request->setPrice("100.0"); // İndirimsiz fiyat
$request->setPaidPrice("120.0"); // Tahsil edilecek son fiyat
$request->setCurrency(\Iyzipay\Model\Currency::TL);
$request->setBasketId("B67832");
$request->setPaymentGroup(\Iyzipay\Model\PaymentGroup::PRODUCT);
$request->setCallbackUrl("https://siteniz.com/callback.php"); // Dönüş adresi
// Kullanıcı Bilgileri
$buyer = new \Iyzipay\Model\Buyer();
$buyer->setId("BY789");
$buyer->setName("Ahmet");
$buyer->setSurname("Yılmaz");
$buyer->setEmail("[email protected]");
$buyer->setIdentityNumber("11111111111");
$buyer->setRegistrationAddress("Adalet Mah. No:1");
$buyer->setCity("Istanbul");
$buyer->setCountry("Turkey");
$request->setBuyer($buyer);
// Formu Oluştur
$checkoutFormInitialize = \Iyzipay\Model\CheckoutFormInitialize::create($request, $options);
// Formu Ekrana Bas
echo $checkoutFormInitialize->getCheckoutFormContent();
?>
3. Ödeme Sonucunu Yakalama (callback.php)
Ödeme tamamlandığında kullanıcı belirlediğiniz CallbackUrl adresine yönlendirilir. Burada ödemenin gerçekten başarılı olup olmadığını tekrar API'ye sormanız gerekir.
PHP:
<?php
// callback.php
require_once('vendor/autoload.php');
$token = $_POST['token']; // Iyzico'dan gelen güvenlik tokenı
$request = new \Iyzipay\Request\RetrieveCheckoutFormRequest();
$request->setLocale(\Iyzipay\Model\Locale::TR);
$request->setToken($token);
$checkoutForm = \Iyzipay\Model\CheckoutForm::retrieve($request, $options);
if ($checkoutForm->getPaymentStatus() == "SUCCESS") {
// ÖDEME BAŞARILI!
// Burada veritabanında siparişi onaylayın, stok düşürün.
echo "Ödemeniz başarıyla alındı. Teşekkürler!";
} else {
// ÖDEME BAŞARISIZ
echo "Hata: " . $checkoutForm->getErrorMessage();
}
?>
Ödeme Entegrasyonu Güvenlik Kuralları
| Kural | Neden Önemli? |
|---|---|
| SSL Sertifikası (HTTPS) | Verilerin şifreli taşınması zorunludur. Aksi halde ödeme API'leri çalışmaz. |
| Token Doğrulama | Geri dönüş sayfasının manipüle edilmesini (fake success) engeller. |
| Sandbox Modu | Gerçek para harcamadan test kartlarıyla sistemi denemenizi sağlar. |
| Log Tutma | Hatalı işlemleri takip etmek ve müşteri desteği vermek için gereklidir. |
Sonuç
API entegrasyonu, modern web dünyasının en güçlü yeteneğidir. Ödeme sistemleri özelinde ise güvenlik her şeyden önce gelir. Hazır SDK'ları kullanmak, her zaman HTTPS üzerinden çalışmak ve dönen veriyi sunucu tarafında doğrulamak profesyonel bir yazılımcının kırmızı çizgisidir.