PHP'de PayPal Entegrasyonu nasıl yapılır? (Adım Adım Eğitimi)
Bu, PHP'de PayPal entegrasyonu için bir eğitimdir.
PHP tabanlı bir e-Ticaret platformu kullanıyorsanız, mağazanızda PayPal ödemesini uygulamak için bu öğreticiyi takip edebilirsiniz.
- Paypal nedir?
- PayPal Nasıl Çalışır?
- Yalın Temel Terimler
- Adım Adım PHP'de PayPal Entegrasyonu
- Test yapmak
Paypal nedir?
PayPal, küresel olarak güvenli ve kullanımı kolay ödeme işlemleri sunan popüler bir ödeme ağ geçididir.
Bir müşteri banka hesabını, banka kartını veya kredi kartını ekleyebilir ve PayPal ile başlayabilir. Şu anda 286 Milyon kullanıcı kullanıyor ve çevrimiçi alıcıların yaklaşık %87,5'i ödemeyi PayPal ile yapıyor.
Bu yüzden sitenizde PayPal'ın olması müşterilerimize sunduğumuz önerilerden biridir.
PayPal'ın sunduğu en iyi özellikler şunları içerir:
- Kredi Kartları, Banka Kartları
- Çevrimiçi fatura oluşturun
- Alıcı ve satıcı hesapları
- Araba
- Mobil uygulama
- Uluslararası para transferi
PayPal Nasıl Çalışır?
İşlemler ve çevrimiçi alışveriş için PayPal'ı kullanmak güvenlidir. Kullanıcının PayPal'da zaten bir hesabı varsa, hızlı bir şekilde ödeme yapabilir.
Hesaba giriş yapması ve ardından tutarı onaylaması gerekiyor. Banka/kart seçimi yapıldıktan sonra ödeme tek tuşla yapılacaktır.

Müşteri için kolaydır.
Satıcı, mağazada PayPal'ı kurmak zorundadır. Ve bir yazılım ürünüyse ve tekrarlayan ödemeler gerektiriyorsa, PayPal entegrasyonunu PHP'de yapmanız gerekir.
Bu derste size PHP'de PayPal Entegrasyonunu nasıl yapacağınızı anlatacağım ve sonunda PayPal'ı mağazanıza entegre edebileceksiniz.
Temel kurallar
Öğreticiyi okumadan önce bilmeniz gereken birkaç temel terim.
Anında Bildirim Süreci: Anında Ödeme Bildirimi (IPN), PayPal işlemleriyle ilgili herhangi bir olayın bildirimini satıcılara otomatik olarak gönderen bir bildirim hizmetidir. e-Ticaret mağazası sahipleri, siparişleri otomatik olarak yerine getirmek ve müşterilere sipariş durumu sağlamak gibi birçok şekilde kullanabilir.
Ödeme Formu: Sitenizdeki bir form, müşteri adı/e-posta adresi gibi değerleri PayPal'a gönderecektir.
ödeme.php sayfası: Web sitenizdeki ödeme.php sayfası, PayPal'a giden tüm talepleri ve PayPal'dan gelen gelen talepleri ele alacak olan sayfadır.
Adım Adım PHP'de PayPal Entegrasyonu
ADIM 1 – PayPal Hesabı Kurulumu
İlk adım, bir PayPal hesabına kaydolmaktır. PayPal'a gidin ve Kaydol'a tıklayın.

IPN'ye erişebilmek için işletme hesabını açmalısınız. PayPal hesabını doğru şekilde kurduktan sonra IPN'ye erişebileceksiniz.
PayPal hesabınızın "profili düzenle" seçeneğine gidin ve aşağıdaki ayarları arayın:
"Satış Tercihlerim"e gidin ve Ödeme Alma ve Risk Yönetimi bölümünü bulun.
- Anında ödeme Bildirim Sürecini açın
- IPN Değerini AÇIN
- IPN'nin URL'sini, IPN kodunu içeren PHP sayfasına değiştirin (http://www.example.com/payment.php)
"Satış Tercihlerim"e gidin ve Ödeme Alma ve Risk Yönetimi bölümünü bulun.
- Blok Ödemeleri Açın
- eÇek ile ödeme yapan kullanıcılardan ödemeyi bloke ederek kapatınız.
'Hesap bilgileri'ne gidin ve 'e-posta'yı bulun
- Birincil e-posta adresinizi girin. Bu e-posta kullanıcılara görünür olacak, bu yüzden profesyonel olun.
ADIM 2 – HTML Formu Oluşturma
Alacaklıyla ilgili temel bilgileri PayPal'a göndermek için sitenizde bir form oluşturmanız gerekir.
HTML formunu oluşturmak için bu HTML kodunu kullanabilirsiniz.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Paypal Integration Test</title> </head> <body> <form class="paypal" action="payments.php" method="post"> <input type="hidden" name="cmd" value="_xclick" /> <input type="hidden" name="no_note" value="1" /> <input type="hidden" name="lc" value="UK" /> <input type="hidden" name="bn" value="PP-BuyNowBF:btn_buynow_LG.gif:NonHostedGuest" /> <input type="hidden" name="first_name" value="Customer's First Name" /> <input type="hidden" name="last_name" value="Customer's Last Name" /> <input type="hidden" name="payer_email" value="[email protected]" /> <input type="hidden" name="item_number" value="123456" / > <input type="submit" name="submit" value="Submit Payment"/> </form> </body> </html>
Fiyat, işletme adı vb. gibi daha hassas bilgiler bir sonraki adımda gönderilecektir.
ADIM 3 – İstek Gönderme
Bahsettiğim gibi, ödeme.php sayfası, PayPal'a giden talebi ve Ödemenin işlenmesinden sonra gelen yanıtı ele alacaktır.
Ancak, parametreleri oluşturmanız ve göndermeden önce bunları sorgu dizeleri aracılığıyla PayPal'dan geçirmeniz gerekir.
- Gönderilmesi gereken değerler:
- iş: PayPal hesabınızın e-posta adresi
- Öğe_adı: öğenin adı
- Tutar: ürünün fiyatı
- İade: ödeme başarılı olduktan sonra iade adresi
- Cancel_return: ödeme iptal edilirse iade adresi
- Notify_url: sitenizdeki ödeme.php sayfa URL'si
- Özel: PayPal isteği ile göndermek istediğiniz diğer veriler
// For test payments we want to enable the sandbox mode. If you want to put live // payments through then this setting needs changing to `false`. $enableSandbox = true; // Database settings. Change these for your database configuration. $dbConfig = [ 'host' => 'localhost', 'username' => 'user', 'password' => 'secret', 'name' => 'example_database' ]; // PayPal settings. Change these to your account details and the relevant URLs // for your site. $paypalConfig = [ 'email' => '[email protected]', 'return_url' => 'http://example.com/payment-successful.html', 'cancel_url' => 'http://example.com/payment-cancelled.html', 'notify_url' => 'http://example.com/payments.php' ]; $paypalUrl = $enableSandbox ? 'https://www.sandbox.paypal.com/cgi-bin/webscr' : 'https://www.paypal.com/cgi-bin/webscr'; // Product being purchased. $itemName = 'Test Item'; $itemAmount = 5.00; // Include Functions require 'functions.php'; // Check if paypal request or response if (!isset($_POST["txn_id"]) && !isset($_POST["txn_type"])) { // Grab the post data so that we can set up the query string for PayPal. // Ideally we'd use a whitelist here to check nothing is being injected into // our post data. $data = []; foreach ($_POST as $key => $value) { $data[$key] = stripslashes($value); } // Set the PayPal account. $data['business'] = $paypalConfig['email']; // Set the PayPal return addresses. $data['return'] = stripslashes($paypalConfig['return_url']); $data['cancel_return'] = stripslashes($paypalConfig['cancel_url']); $data['notify_url'] = stripslashes($paypalConfig['notify_url']); // Set the details about the product being purchased, including the amount // and currency so that these aren't overridden by the form data. $data['item_name'] = $itemName; $data['amount'] = $itemAmount; $data['currency_code'] = 'GBP'; // Add any custom fields for the query string. //$data['custom'] = USERID; // Build the query string from the data. $queryString = http_build_query($data); // Redirect to paypal IPN header('location:' . $paypalUrl . '?' . $queryString); exit(); } else { // Handle the PayPal response. }
ADIM 4 – Gelen Yanıt
Şimdi PayPal yanıtı gönderecek ve yaptığımız ödeme.php sayfası yanıtı okuyacak.
Bu kodu ödeme.php betiğimizin else ifadesine eklememiz gerekiyor. Ödemeyi veri tabanına eklemeden önce bu işlemi gerçekleştirip gerçekleştirmediğimizi kontrol edecektir.
// Handle the PayPal response. // Create a connection to the database. $db = new mysqli($dbConfig['host'], $dbConfig['username'], $dbConfig['password'], $dbConfig['name']); // Assign posted variables to local data array. $data = [ 'item_name' => $_POST['item_name'], 'item_number' => $_POST['item_number'], 'payment_status' => $_POST['payment_status'], 'payment_amount' => $_POST['mc_gross'], 'payment_currency' => $_POST['mc_currency'], 'txn_id' => $_POST['txn_id'], 'receiver_email' => $_POST['receiver_email'], 'payer_email' => $_POST['payer_email'], 'custom' => $_POST['custom'], ]; // We need to verify the transaction comes from PayPal and check we've not // already processed the transaction before adding the payment to our // database. if (verifyTransaction($_POST) && checkTxnid($data['txn_id'])) { if (addPayment($data) !== false) { // Payment successfully added. } }
doğrulamaTransaction işlevi, yanıtın gerçekliğini doğrulayacaktır. Çağırdıktan sonra, işlev PayPal'dan alınan verileri alacak ve alınan işlem verileriyle PayPal'a kıvrılma talebinde bulunarak bunu doğrulayacaktır.
Cevap aynı ise DOĞRULANDI mesajını alacağız ve her şeyin yolunda olduğunu bileceğiz. Daha sonra ödeme veritabanına eklenecektir.
doğrulamaTansaction işlevi:
function verifyTransaction($data) { global $paypalUrl; $req = 'cmd=_notify-validate'; foreach ($data as $key => $value) { $value = urlencode(stripslashes($value)); $value = preg_replace('/(.*[^%^0^D])(%0A)(.*)/i', '${1}%0D%0A${3}', $value); // IPN fix $req .= "&$key=$value"; } $ch = curl_init($paypalUrl); curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $req); curl_setopt($ch, CURLOPT_SSLVERSION, 6); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt($ch, CURLOPT_FORBID_REUSE, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Connection: Close')); $res = curl_exec($ch); if (!$res) { $errno = curl_errno($ch); $errstr = curl_error($ch); curl_close($ch); throw new Exception("cURL error: [$errno] $errstr"); } $info = curl_getinfo($ch); // Check the http response $httpCode = $info['http_code']; if ($httpCode != 200) { throw new Exception("PayPal responded with http code $httpCode"); } curl_close($ch); return $res === 'VERIFIED'; }
Ayrıca checkTxnid'i de arayabiliriz. Fonksiyonun amacı basittir; PayPal'dan gelen txn_id değerinin veritabanımızda zaten var olup olmadığını kontrol eder.
Ödemeyi doğruladıktan sonra, bu işlevi çağırmak ve işlemi veritabanına zaten ekleyip eklemediğinizi kontrol etmek iyi bir fikirdir.
Txn_id işlevi:
function checkTxnid($txnid) { global $db; $txnid = $db->real_escape_string($txnid); $results = $db->query('SELECT * FROM `payments` WHERE txnid = \'' . $txnid . '\''); return ! $results->num_rows; }
Burada istediğiniz kadar çek ekleyebilirsiniz. Bu, ödemenin çeşitli yönlerini doğrulama fırsatıdır.
ADIM 5 – Ödeme Ekleme
Ödemeyi doğruladıktan sonraki son adım, ek kontrollerin yapılması, ödemenin veritabanına eklenmesidir.
Ödeme detaylarını veritabanı sisteminde saklamak için bir ödeme tablosu oluşturacağız.
MySQL'de ödeme tablosunu oluşturmak için gereken kod:
CREATE TABLE IF NOT EXISTS `payments` ( `id` int(6) NOT NULL AUTO_INCREMENT, `txnid` varchar(20) NOT NULL, `payment_amount` decimal(7,2) NOT NULL, `payment_status` varchar(25) NOT NULL, `itemid` varchar(25) NOT NULL, `createdtime` datetime NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Ardından, addPayment'i çağırmak için işlevi ayarlamalıyız.
İşte bu görevi yapacak fonksiyon:
function addPayment($data) { global $db; if (is_array($data)) { $stmt = $db->prepare('INSERT INTO `payments` (txnid, payment_amount, payment_status, itemid, createdtime) VALUES(?, ?, ?, ?, ?)'); $stmt->bind_param( 'sdsss', $data['txn_id'], $data['payment_amount'], $data['payment_status'], $data['item_number'], date('Ymd H:i:s') ); $stmt->execute(); $stmt->close(); return $db->insert_id; } return false; }
Test yapmak
Son olarak entegrasyonun doğru yapılıp yapılmadığını ve doğru çalışıp çalışmadığını kontrol edeceğiz.
PayPal Sandbox, PayPal'a benzer ve PayPal'ın tüm işlevlerini sağlar. Ancak gerçek özellikleri kullanmak yerine, Sandbox'ta sahte özellikleri kullanabilirsiniz.
Alıcı ve satıcıların sahte hesaplarını oluşturabilirsiniz. Geliştirme sitesini ayarlayın ve aşama boyunca PayPal entegrasyonunu test edin.
Sandbox hesapları oluşturmak ücretsizdir ve PayPal Developer web sitesinden yapılabilir.
Gönderide sağlanan kod, Sandbox için optimize edilmiştir. İstekteki URL www.sandbox.paypal.com'dur.
$enableSandbox'ın değerini true'dan false'a değiştirmelisiniz. Bu, kodlamadaki PayPal URL'lerini güncelleyecektir.
Son sözler
Kodlama ve php bilmiyorsanız süreç biraz zor. Ancak geliştiriciler için o kadar karmaşık değil.
Ancak, WordPress veya Magento kullanıyorsanız, bir eklenti veya uzantı kullanmalısınız.
Bu eğitimde, adım adım PHP'de PayPal entegrasyonunu nasıl yapabileceğinizi öğrendiniz. Bu temel kılavuzdur.
Yine de, herhangi bir şüphe veya sorun varsa, yorumlar bölümünde bırakabilirsiniz.
*kaynak kodunu bu GitHub'da bulabilirsiniz
ev borcu WordPress sitesi