Bu yazımda sizlere Türkiye’de hazır ödeme sistemlerinden en çok aranan ödeme yöntemlerinden birisi olan Pay-TR entegrasyonunun nasıl yapıldığına dair bilgi vermek istedim. PHP – Paytr Entegrasyon Yapımı konusunda bilgi arıyorsanız bu yazıyı sonuna kadar okuyarak biraz yazılım bilgisi ile kolay bir şekilde halledebilirsiniz.
Günümüzde online alışverişlerin artması ile birlikte, güvenli ve hızlı ödeme işlemleri büyük önem kazanmıştır. Bu nedenle, online ödeme sistemlerinin geliştirilmesi zorunlu hale gelmiştir. Paytr, güvenli ve hızlı ödeme işlemleri sunan Türkiye’nin önde gelen online ödeme sistemlerinden birisidir. Bu makalede, Paytr ödeme yöntemi hakkında detaylı bilgi bulabilirsiniz.
Paytr Ödeme Yöntemi Nedir?
Paytr, kullanıcılara hızlı, kolay, güvenli ve uygun fiyatlı ödeme işlemleri sunan bir online ödeme sistemidir. Türkiye’de 2015 yılında kurulan Paytr, Türkiye’nin önde gelen e-ticaret siteleri, mobil uygulamaları ve satıcıları tarafından tercih edilmektedir. Paytr, kredi kartı, banka kartı ve banka transferi gibi birçok ödeme yöntemini destekleyerek kullanıcıların tercihine bağlı olarak ödeme işlemlerini gerçekleştirmelerine olanak tanır.
Daha önce İyzico Entegresini Şu Konuda anlatmıştım
Pay-TR’de iyzico gibi. Bizi tek tek bankaların sanal poslarının kodlarından kurtarıyor. Yani tek entegrasyonda tüm bankaların sistemlerini entegre etmiş oluyoruz. (Ha burada komisyon daha fazlamı az mı bilmiyorum.)
Öncelikle Pay-TR’nin dökümanını Pay-TR’nin bize vermiş olduğu kullanıcı bilgileri ile Pay-TR panelinegirerek indirmemiz gerekiyor.
Paytr entegrasyonu için ne gerekli ?
- merchant id (xxxx benzeri rakamlardan oluşur)
- merchant key (xxxxxX123 benzeri rakamlar ve harflerden oluşur)
- merchant salt key (xxxxxX123 benzeri rakamlar ve harflerden oluşur)
Yukarıda yazdığım keyleri ve id’i temin ettiysek artık entegasyonun nasıl yapılacağına geçelim.
Anlatımlarım 3 farklı kod sayfasından oluşacak. Bunlar ;
- Ödeme Classı
- Ödeme Sayfası
- Ödeme Sonuç Sayfası (kullanıcılara Görünen)
- Pay-TR Bildirim Sayfası (kullanıcılara görünmeden arkaplanda çalışan)
Şimdi öncelikle odeme.php isimli bir class dosyası hazırlayalım.
<?php
Class Odeme
{
public $merchant_id = '133917';
public $merchant_key = 'qncyNjgT3bTF1w54';
public $merchant_salt = 'doJ57w7CmoWUkpZa';
function siparisEkle()
{
}
function formGetir($mail,$siparisid,$adsoyad,$adres,$telefon,$siparisler=array(),$fiyat)
{
-
}
function paytrSonuc()
{
}
}
Yukarıda ödeme.php isimli ödeme classımızı oluşturduk. Bu classın başına en başta edindiğimiz keyleri ve id’yi ekledik.
1. Paytr PHP Entegrasyonu – Siparişi Ekleme
Pay-TR’nin ödeme formunu size getirebilmesi için bazı bilgilere ihtiyacı vardır. Bu nedenle öncelikli olarak siparişimizi veritabanına kaydedip durumunu pasif olarak ayarlamamız gerekiyor. Aynı zamanda veritabanına kaydettikten sonra yukarıdaki classımızda formgetir fonksiyonunun ihtiyacı olan parametreleri ödemeyi ekledikten sonra almamız gerekecek. PHP – Pay-TR Entegrasyon Yapımı konusunda detaylar devam etmektedir.
function siparisEkle()
{
global $db;
$dondur = array();
$siparisler = array();
$uyeID = $_SESSION["KullaniciID"];
$fiyat =$_POST["Fiyat"];
$siparisID = $db->veriEkleSayiAl
(
"siparisler",
array("NULL","?","?","?","?","?","?","?"),
array(
$_POST["Gonderen"],
$_POST["GonderenMAIL"],
$_POST["GonderenTELEFON"],
$_POST["FaturaADRESI"],
$fiyat,
$uyeID,
0)
);
$siparisler[]=array("Ürün İsmi",fiyat,1);
$dondur[]=$_POST["GonderenMAIL"];
$dondur[]=$siparisID;
$dondur[]=$_POST["Gonderen"];
$dondur[]=$_POST["FaturaADRESI"];
$dondur[]=$_POST["GonderenTELEFON"];
$dondur[]=$siparisler;
$dondur[]=$fiyat;
return $dondur;
}
Yukarıdaki gibi classımızdaki siparisEkle fonksiyonunu güncelliyoruz. Yukarıdaki kodlarımızda ne yaptığımızı açıklayalım. İşlem yapan kullanıcı sitemize üye ise sessiondan gelen kullanıcı id’sini UyeID olarak aldık. Siparişimizin tutarını fiyat olarak aldık. Kullanıcının isminin ve diğer bilgilerinin bir formdan POST olarak geldiğini var sayarak onları aldık. Daha sonra aldığımız tüm bilgileri veritabanımızdaki siparisler tablomuza ekledik. Daha sonra bu bilgileri sonraki fonksiyonumuz olan formGetir fonksiyonumuzda kullanılmak üzere return ettik (döndürdük.)
Bir sonraki aşamada PHP – Paytr Entegrasyon Yapımı konusunun ödeme sayfasını hazırlamalıyız.
2. Paytr PHP Entegrasyonu – Odeme Sayfasını Hazırlama
Şimdi projemize odemesayfasi.php isimli bir dosya ekliyoruz. Bu dosyaya classımızı dahil ediyoruz. Bu kodları herhangi HTML kodlarının arasına koyabilirsiniz.
<?php
include "class/odeme/odeme.php";
$odeme = new Odeme();
$siparis = $odeme->siparisEkle ();
?>
Yukarıda odemesayfasi.php dosyamıza classımızı dahil ettik ve classın içindeki siparisEkle fonksiyonunu çalıştırdık. Şimdi Pay-TR’nin formunu getirmek için formGetir fonksiyonunu çağırabiliriz
<?php echo $odeme->formGetir ($siparis[0],$siparis[1],$siparis[2],$siparis[3],$siparis[4],$siparis[5],$siparis[6]); ?>
Classımızdaki siparisEkle fonksiyonundan dönen parametreleri formGetir fonksiyonuna gönderdik. Şimdi classın içindeki formGetir fonksiyonunu güncelleyelim ki form odemesayfasi.php’ye düzgün şekilde gelsin.
3. Paytr PHP Entegrasyonu – Ödeme Formunu Getirme
function formGetir($mail,$siparisid,$adsoyad,$adres,$telefon,$siparisler=array(),$fiyat)
{
$siteURL ="siteismi.com";
$merchant_id = $this->merchant_id;
$merchant_key = $this->merchant_key;
$merchant_salt = $this->merchant_salt;
$email = $mail;
$payment_amount = $fiyat * 100;
$merchant_oid = $siparisid;
$user_name = $adsoyad;
$user_address = $adres;
$user_phone = $telefon;
$merchant_ok_url = $siteURL."/siparissonucu.php?siparisid=$siparisid&durum=ok";
$merchant_fail_url = $siteURL."/siparissonucu.php?siparisid=$siparisid&durum=fail";
$user_basket = base64_encode(json_encode($siparisler));
if( isset( $_SERVER["HTTP_CLIENT_IP"] ) ) {
$ip = $_SERVER["HTTP_CLIENT_IP"];
} elseif( isset( $_SERVER["HTTP_X_FORWARDED_FOR"] ) ) {
$ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
} else {
$ip = $_SERVER["REMOTE_ADDR"];
}
$user_ip=$ip;
$timeout_limit = "30";
$debug_on = 0;
$test_mode = 0;
$no_installment = 0;
$max_installment = 0;
$currency = "TL";
$hash_str = $merchant_id .$user_ip .$merchant_oid .$email .$payment_amount .$user_basket.$no_installment.$max_installment.$currency.$test_mode;
$paytr_token=base64_encode(hash_hmac('sha256',$hash_str.$merchant_salt,$merchant_key,true));
$post_vals=array(
'merchant_id'=>$merchant_id,
'user_ip'=>$user_ip,
'merchant_oid'=>$merchant_oid,
'email'=>$email,
'payment_amount'=>$payment_amount,
'paytr_token'=>$paytr_token,
'user_basket'=>$user_basket,
'debug_on'=>$debug_on,
'no_installment'=>$no_installment,
'max_installment'=>$max_installment,
'user_name'=>$user_name,
'user_address'=>$user_address,
'user_phone'=>$user_phone,
'merchant_ok_url'=>$merchant_ok_url,
'merchant_fail_url'=>$merchant_fail_url,
'timeout_limit'=>$timeout_limit,
'currency'=>$currency,
'test_mode'=>$test_mode
);
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, "https://www.paytr.com/odeme/api/get-token");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1) ;
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_vals);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 20);
$result = @curl_exec($ch);
if(curl_errno($ch))
die("PAYTR IFRAME connection error. err:".curl_error($ch));
curl_close($ch);
$result=json_decode($result,1);
if($result['status']=='success')
$token=$result['token'];
else
die("PAYTR IFRAME failed. reason:".$result['reason']);
?>
<script src="https://www.paytr.com/js/iframeResizer.min.js"></script>
<iframe src="https://www.paytr.com/odeme/guvenli/<?=$token?>" id="paytriframe" frameborder="0" scrolling="no" style="width: 100%;"></iframe>
<script>iFrameResize({},'#paytriframe');</script>
<?php
}
Pay-TR getirmek için parametrelerimizi başarılı bir şekilde kullandık. Şimdi kullanıcı ödemeyi yaptıktan sonra gideceği sayfa olan siparissonucu.php sayfasını hazırlayalım
4. Paytr PHP Entegrasyonu – Ödeme Sonucunu Kullanıcılara Gösterme
Hemen belirtmek isterim ki bu sayfa siparişin onaylandığı sayfa değildir. Bu sayfa kullanıcıya önden bilgilendirme yapılan sayfadır.
<?php
include "class/odeme/odeme.php";
$odeme = new Odeme();
if($_GET["durum"]=="ok")
{
$db->Basarili ("Ödemeniz alınmıştır. Kontrol edildikten sonra sipariş aşamaları başlayacaktır. Siparişinizi <span style='color:red;'><strong>$_GET[siparisid]</strong></span> numarasını yazarak takip edebilirsiniz.");
}elseif($_GET["durum"]=="fail")
{
$db->Basarisiz ("Ödemeniz alınırken bir sorun oluştu. Lütfen daha sonra tekrar deneyiniz");
}
?>
5. Paytr PHP Entegrasyonu – Pay-TR Bildirim Sayfasını Yapma
İşte bu sayfa bizin asıl sonuç sayfamız olarak Pay-TR’nin döndüğü sayfamız. Bunu kullanıcılar görmeyecek. odemesonucu.php dosyasını yapıyoruz ve classımızı dahil ederek sonuç fonksiyonunu çalıştırıyoruz. Herhangi HTML kodunun olmaması gerekmektedir.
<?php
include "class/odeme/odeme.php";
$odeme = new Odeme();
$odeme->paytrSonuc ();
?>
Şimdi ödeme classımızdaki paytrSonuc fonksiyonumuzu güncelliyoruz
function paytrSonuc()
{
global $db;
global $sistem;
$post = $_POST;
$siparisID =$post['merchant_oid'];
$merchant_key = $this->merchant_key;
$merchant_salt = $this->merchant_salt;
$hash = base64_encode( hash_hmac('sha256', $post['merchant_oid'].$merchant_salt.$post['status'].$post['total_amount'], $merchant_key, true) );
if( $hash != $post['hash'] )
die('PAYTR notification failed: bad hash');
if($post['status'] == 'success' )
{
$db->veriGuncelle ("siparisler",array("Durum"),array(1,$siparisID),"SiparisID");
}else
{
## $post['failed_reason_code'] - başarısız hata kodu
## $post['failed_reason_msg'] - başarısız hata mesajı
$db->veriEkle ("odemehatalari",array("NULL","?"),array($post['merchant_oid']." - ".$post['failed_reason_code']." - ".$post['failed_reason_msg']));
}
echo "OK";
exit;
}
Paytr bize siparişid numaramızı tekrar merchant_oid olarak gönderdi. Ve bizde bunu kullanarak siparişin durumunu güncelledik. Eğer Pay-TR Bize hata döndü ise failed_reason_code – failed_reason_msg parametreleri ile daha sonra ne hatası döndürdüğünü veritabanımıza işledik.
Paytr Güvenli mi ?
Paytr, güvenli bir ödeme yöntemi olarak kabul edilir. Paytr, PCI DSS sertifikasına sahip bir ödeme hizmet sağlayıcısıdır ve ödemelerde SSL gibi protokolleri kullanarak kullanıcıların kart bilgilerinin güvenliği sağlanır. Ayrıca, Paytr, kullanıcıların kart bilgilerini saklama yazılımı kullanmaz, böylece kullanıcının kart bilgileri her zaman korunur. Paytr’nin güvenlik önlemleri sayesinde kullanıcıların ödemeleri güvence altına alınır. Ancak, herhangi bir ödeme işlemi yapmadan önce, kullanıcıların ödeme sayfasının güvenli olduğundan emin olmaları ve kart bilgilerini paylaşmadan önce ödeme sayfasının SSL sertifikasına sahip olduğundan emin olmaları önerilir.
Paytr Hesabı Açma Adımları
- Paytr web sitesine gidin ve “Hemen Başla” butonuna tıklayın.
- Kayıt formunu doldurun ve hesap bilgilerinizi girin.
- Hesabınızı doğrulamak için e-posta adresinize gönderilen doğrulama kodunu girin.
- Hesabınızı tamamlamak için gerekli belgeleri yükleyin.
- Hesabınız onaylandıktan sonra, Paytr hesabınıza giriş yapabilirsiniz.
Paytr ile Ödeme Yapma Adımları
- Ödeme yapmak istediğiniz e-ticaret sitesinde Paytr’ı seçin.
- Ödeme sayfasında Paytr’ı seçin ve ödeme tutarını girin.
- Ödeme yapmak için gerekli olan kart bilgilerinizi girin.
- Ödeme işlemini onaylayın.
- Ödeme işlemi tamamlandığında, ödeme onay sayfasına yönlendirileceksiniz.
Paytr Ödeme Onay Süreci
- Ödeme onay sayfasında, ödeme tutarını ve ödeme yöntemini kontrol edin.
- Ödeme tutarını onaylayın ve “Ödeme Yap” butonuna tıklayın.
- Ödeme işlemi tamamlandığında, ödeme onay sayfasında bir onay mesajı görüntülenecektir.
- Ödeme işlemi tamamlandıktan sonra, e-ticaret sitesi tarafından size bir sipariş onayı gönderilecektir.
Paytr’nin Avantajları
Paytr’nin birçok avantajı bulunmaktadır.
Hızlı Ödeme İşlemi
Paytr ile ödeme yapmak oldukça hızlıdır. Paytr, ödeme işlemini saniyeler içinde gerçekleştirir ve müşterilerin herhangi bir sorun yaşamamasını sağlar.
Kolay Entegrasyon
Paytr, birçok platformda kullanılabilmekte ve entegrasyon işlemleri oldukça kolaydır. Paytr sayesinde, online mağazanızda veya mobil uygulamanızda kolayca ödeme alabilirsiniz.
Uygun Fiyatlar
Paytr’nin fiyatları, Türkiye’deki diğer ödeme sağlayıcılarına göre oldukça uygun seviyededir.
Başarılı Ödeme Geçmişi Yüksek
Paytr, Türkiye’de birçok şirketin ödeme sistemini yönetmektedir ve yüksek bir başarı oranına sahiptir.
Bu yazıda anlatılan paytr entegre hizmetini satın almak için benimle WhatsApp üzerinden iletişime geçebilir veya telefon üzerinden direk görüşme sağlayabilirsiniz.
WhatsApp için tıkla
Telefonla iletişim için : 0531 324 16 16
Hocam merhaba. Bir ücret karşılığında kurulum yapmanız mümkün mü? paytr php
Tabiki.
Paytr kullanıyorum.
Ve mevcut İnternet sitemde alış verissiz ödeme almak istiyorum.
Yani müşteri bana olan borcunu internet üzerinden online olarak ödesin.
Siz uygulayabilirmisiniz