PHP ile geliştirilen projelerde ödeme akışı iki yoldan kurulur: ödeme kuruluşunun REST uç noktalarına doğrudan istek göndererek ya da sağlanan SDK paketini Composer ile projeye ekleyerek. İzlenen sıra her iki yolda da aynıdır; anahtarlar tanımlanır, ödeme isteği sunucudan oluşturulur, kart sahibi 3D Secure doğrulamasına yönlendirilir ve sonuç sunucu tarafında doğrulanır. Aşağıdaki bölümler PHP tarafında bu akışın nasıl kurulduğunu özetler.
API anahtarları ve SDK erişimi, hesabınız açıldıktan sonra tanımlanır.
iEntegrasyon araçları ve API, hesabınızın açıldığı ödeme kuruluşunun çözümüne aittir; sanalpos.com başvuruyu koordine eder.
PHP entegrasyonunda neredesiniz?
Kod hazır olsa da anahtarlar hesapla gelir: test ve canlı anahtarlar, paket adı ve dokümantasyon hesabınız açılınca tanımlanır. Sıra: başvuru → test anahtarlarıyla kurulum → canlıya geçiş. Çatınızı (Laravel, Symfony…) ön görüşmede belirtin.
Başvuruyu ödemeyi alacak işletme yapar; hesap ve anahtarlar onun adına tanımlanır. Müşterinize iletin:
Müşterinize gönderin
Merhaba, sitede ya da uygulamada kartla ödeme alabilmek için sanal POS başvurusunun işletme adına yapılması gerekiyor. Başvuru ücretsiz, ilk adım kısa bir form; belgeler sonraki aşamada istenir: https://www.sanalpos.com/sanal-pos-basvuru?utm_source=gelistirici&utm_medium=mesaj&utm_campaign=php#basvuru-formu — Hesap açılınca test ve canlı anahtarlar tanımlanıyor; entegrasyonu oradan tamamlayabilirim.
En sık neden imzayı ayrıştırılmış veriden hesaplamak. Gövdeyi file_get_contents('php://input') ile ham okuyun, imzayı bu metinden hesaplayıp hash_equals() ile karşılaştırın. Sonra alan sırasına, karakter kodlamasına ve test/canlı anahtar karışmasına bakın. Genel anlatım: webhook imza doğrulaması.
Bankadan dönüş çoğu akışta başka siteden gelen POST isteğidir: dönüş adresi POST kabul etmeli; Laravel’de dönüş yolunu CSRF korumasından muaf tutun (yoksa 419 döner). Oturum çereziniz SameSite=Lax ise (Laravel’de varsayılan) bu POST’ta gönderilmez; siparişi oturumdan değil sipariş numarasından bulun. Durum değerleri: mdStatus kodları.
Gelmiyorsa adres HTTPS ve dışarıdan erişilebilir mi, güvenlik duvarı ya da bakım kipi engelliyor mu bakın. İki kez gelebilir: çoğu altyapı 200 almazsa yeniden gönderir; kural dokümantasyonunuzda yazar. Kaydı olay kimliğiyle bir kez işleyin.
Şirketiniz yoksa: bankalar bireysel sanal POS başvurusunu genellikle kabul etmez; ticari faaliyet belgesi (vergi levhası) istenir. Serbest meslek erbabı da başvurabilir: serbest meslek makbuzu kesiyorsanız «Değiştir»e basıp «Kendi işletmemin sitesi için kuruyorum»u seçin. Vergi kaydınız yoksa mükellefiyet için mali müşavirinize danışın.
Önce başvuru formunu doldurursunuz; ön değerlendirme sonrasında hesabınız açılır. Test ve canlı API anahtarlarınız ile dokümantasyon erişiminiz bu aşamada tanımlanır. Anahtarları kod deposuna yazmayın, sunucu ortam değişkeninde tutun.
02
Eklenti veya SDK kurulumu
PHP projenize bağımlılığı Composer ile eklersiniz ya da hazır bir eklenti dosyası kullanırsınız. Paket adı, eklenti veya modül dosyası ve kurulum komutu, hesabınız açıldığında iletilen dokümantasyonda belirtilir; sürüm desteği de seçilen çözüme göre değişir.
03
Ödeme akışı ve ayarlar
Anahtarlarınızı ortam değişkenlerine girer, ödeme başlatma isteğini sunucudan oluşturur, 3D Secure yönlendirmesini ve dönüş adresini tanımlarsınız. Sonucu kendi kaydınıza işlemek için callback ve webhook adreslerinizi de bu adımda belirtirsiniz.
04
Test ve canlıya geçiş
Akışı test anahtarlarıyla uçtan uca çalıştırırsınız: başarılı ödeme, başarısız ödeme ve 3D Secure adımı. Doğruladıktan sonra yalnız ortam ve anahtar değerleri canlıya çevrilir; kod yapısı genelde aynı kalır.
Entegrasyon süresi kendi yazılımınızın yapısına, ödeme akışınızın karmaşıklığına ve seçilen çözüme göre değişir.
Başvuru ücretsizdir. Teklifi inceleyip karar verin.
PHP entegrasyonu
PHP tarafında öne çıkan noktalar.
İster hazır bir pakete bağlanın ister doğrudan HTTP isteği gönderin, istek ve yanıt yapısı aynı kalır. Aşağıdaki üç başlık PHP entegrasyonunun ana parçalarını özetler.
Süre kendi yazılımınızın yapısına, ödeme akışınızın karmaşıklığına ve seçilen ödeme kuruluşunun çözümüne göre değişir. Hazır bir SDK paketi kullanan ekipler genellikle daha az kod yazar; REST uç noktalarına doğrudan istek gönderen ekipler istek imzalama ve yanıt ayrıştırmayı kendisi kurar. Adım adım sıra için entegrasyon kılavuzu sayfasına bakın.
PHP'nin hangi versiyonları destekleniyor?
Sürüm desteği ve bağımlılıklar seçilen ödeme kuruluşunun çözümüne göre değişir; kesin liste hesabınız açıldığında iletilen dokümantasyonda yer alır. Bu sayfadaki teknik gereksinimler tablosu genel çerçeveyi gösterir.
Framework bağımlılığı var mı?
Entegrasyon HTTP üzerinden yürüdüğü için belirli bir çatı zorunlu değildir. Laravel, Symfony, CodeIgniter gibi çatılarda da saf PHP projelerinde de aynı akış kurulabilir. Hazır paketin hangi çatılarla birlikte sınandığı dokümantasyonda belirtilir.
SDK kullanmadan doğrudan API ile entegre edebilir miyim?
Evet. REST yapısı sayesinde cURL ya da herhangi bir HTTP istemcisiyle doğrudan çağrı yapabilirsiniz. Uç nokta adresleri, alan adları ve kimlik doğrulama yöntemi için API dokümantasyonu sayfasına bakın.
Webhook bildirimleri nasıl çalışır?
İşlem durumu değiştiğinde, tanımladığınız adrese sunucudan HTTP isteği gönderilir; siz de bu bildirimi doğrulayıp kendi kaydınıza işlersiniz. Sipariş durumunun güncellenmesi ya da iade akışı gibi otomasyonlar seçilen çözüme göre sunulabilir. Olay tipleri, alan yapısı ve imza doğrulama yöntemi için webhook ve callback sayfasını kullanın.
Entegrasyona başlayın
Önce başvurunuzu tamamlayalım.
API anahtarları, SDK erişimi ve dokümantasyon hesap açılışıyla tanımlanır. Ön değerlendirme için başvuru formunu doldurun.
Web dünyasının en yaygın dillerinden biriyle ödeme entegrasyonu.
PHP, internet sitelerinin önemli bir bölümünü çalıştıran ve web geliştirme alanında en yaygın kullanılan programlama dillerinden biridir. WordPress, Laravel, Symfony, Magento ve WooCommerce gibi pek çok platform PHP üzerine inşa edilmiştir. Bu yaygınlık, PHP geliştiricilerinin ödeme entegrasyonu konusunda oturmuş bir ekosisteme ve geniş bir örnek birikimine sahip olduğu anlamına gelir.
Laravel ve Symfony gibi modern PHP çatılarıyla çalışan entegrasyon, Composer paket yöneticisi üzerinden bağımlılık olarak kurulabilir. MVC mimarisine ve PSR standartlarına uygun bir yapı, mevcut projelere eklenmeyi kolaylaştırır. Saf PHP projelerinde ise cURL ya da herhangi bir HTTP istemcisi ile doğrudan REST çağrıları yaparak aynı akışı kurabilirsiniz. Çatı bağımlılığı bulunmadığı için CodeIgniter, Yii, Slim veya kendi çatınızla geliştirdiğiniz özel projelerde de aynı yol izlenir.
Desteklenen PHP sürümleri ve bağımlılıklar, hesabınızın açıldığı ödeme kuruluşunun çözümüne göre belirlenir; kesin liste hesap açılışında iletilen dokümantasyonda belirtilir. Genel yetenekler için API ve SDK entegrasyonu sayfasına bakabilirsiniz.
SDK kullanmak zorunlu değildir; ancak istek imzalama, oturum ve token yönetimi, yanıt ayrıştırma gibi tekrar eden işleri üstlendiği için çoğu projede yazılacak kod miktarını azaltır. Paket, Composer ile bağımlılık olarak eklenir. Aşağıdaki paket adı yer tutucudur: gerçek paket adı, varsa eklenti veya modül dosyası ve kurulum komutu, hesabınız açıldığında iletilen dokümantasyonda belirtilir.
bash
# Paket adı hesabınız açıldığında iletilen dokümantasyonda yazılıdır.
# Tahmin ettiğiniz bir adla kurulum yapmayın (sahte paket riski).
composer require <saglayici>/<paket-adi>
API anahtarları kod dosyalarına ya da sürüm deposuna yazılmaz; sunucu ortam değişkenlerinde tutulur. Test ve canlı anahtarlar ayrı tutulmalı, canlı anahtarla test yapılmamalıdır. Kurulum sonrası sınıf adları, metot adları ve alan yapısı için PHP SDK sayfasını inceleyebilirsiniz.
PHP Kod Örneği
REST API ile ödeme başlatma örneği.
Aşağıdaki örnek, ödeme kuruluşunun REST uç noktasına PHP cURL ile ödeme başlatma isteği göndermeyi göstermektedir. Bu temel yapıyı kullanarak kendi ödeme akışınızı oluşturabilirsiniz. API anahtarınız istek başlığına eklenerek kimlik doğrulaması yapılır ve ödeme bilgileri JSON biçiminde gönderilir. Yanıt olarak işlem sonucu ve gerekiyorsa 3D Secure yönlendirme adresi döner.
Örnekteki adres ve alan adları yer tutucudur; karşılıkları hesabınız açıldığında iletilen dokümantasyonda yer alır. Daha gelişmiş kullanım ve hazır metotlar için PHP SDK dokümantasyonunu inceleyebilirsiniz.
Yönlendirme, dönüş adresi ve sonucun kesinleştirilmesi.
Tutar, para birimi ve sipariş numarası her zaman sunucuda belirlenir; tarayıcıdan gelen değere güvenilmez. Ödeme isteği oluşturulduktan sonra kart sahibi bankanın doğrulama adımına yönlendirilir. Bu adımın nasıl işlediğini 3D Secure güvenli ödeme sayfasında bulabilirsiniz. Doğrulama tamamlandığında kullanıcı, projenizde tanımladığınız dönüş adresine geri döner.
Kullanıcının döndüğü sayfa sonucu göstermek için yeterlidir, ancak ödemeyi kesinleştirmek için yeterli değildir. Sonuç yalnızca sunucunuza gelen bildirimle kesinleşir: bildirim uç noktasında önce imza doğrulanır, sonra sipariş durumu güncellenir ve 200 yanıtı döndürülür. Aynı olay iki kez gelebileceğinden kaydın idempotent biçimde işlenmesi gerekir. Alan yapısı ve yeniden deneme davranışı için webhook ve callback sayfasına bakın.
Hata durumlarında kullanıcıya sade bir mesaj gösterilir, teknik ayrıntı yalnız günlüğe yazılır; günlüklerde kart numarası, CVV ve API anahtarı bulunmamalıdır. Akışı canlıya almadan önce test anahtarlarıyla deneyebilirsiniz; ayrıntı için sandbox ortamı ve test ortamı (sandbox) sayfalarını kullanın. Anahtarların tanımlanması için önce başvuru formunu doldurmanız gerekir.
Teknik gereksinimler
PHP entegrasyonu için teknik gereksinimler
Gereksinim
Detay
PHP
Güvenlik desteği süren bir sürüm (php.net destek takvimi)
Composer
Önerilen
cURL Eklentisi
Gerekli
JSON Eklentisi
Gerekli
SSL Sertifikası
Gerekli (HTTPS)
Ödeme kuruluşu hesabı
Başvuru sonrası açılır (başvuru ücretsizdir)
Sürüm bilgileri genel çerçevedir; kesin gereksinimler ve desteklenen sürümler, hesabınız açıldığında iletilen dokümantasyonda belirtilir.