<!doctype html>
<html lang="tr">
<head>
<meta charset="UTF-8">
<title>Su Arıtma Ödeme Sayfası</title>
</head>
<body>
<br><br>
<div style="width: 100%;margin: 0 auto;display: table;">
<?php
try {
$db = new PDO("mysql:host=localhost;dbname=xxxx;charset=utf8", "xxxx", "xxxx");
} catch ( PDOException $e ){
print $e->getMessage();
}
/*
if ($_POST) {
date_default_timezone_set('Europe/Istanbul');
$zaman=date('d.m.Y H:i:s');
$giris_sifre=$_POST['sifre'];
$mail=$_POST['mail'];
$telefon=$_POST['telefon'];
}
*/
## 1. ADIM için örnek kodlar ##
####################### DÜZENLEMESİ ZORUNLU ALANLAR #######################
#
## API Entegrasyon Bilgileri - Mağaza paneline giriş yaparak BİLGİ sayfasından alabilirsiniz.
$merchant_id = '';
$merchant_key = '';
$merchant_salt = '';
#
## Müşterinizin sitenizde kayıtlı veya form vasıtasıyla aldığınız eposta adresi
$email = $_POST['mail'];
#
## Tahsil edilecek tutar.
$payment_amount = $_POST['miktar']*100; //9.99 için 9.99 * 100 = 999 gönderilmelidir. $_POST['miktar']*100;
#
## Sipariş numarası: Her işlemde benzersiz olmalıdır!! Bu bilgi bildirim sayfanıza yapılacak bildirimde geri gönderilir.
$heh = $db->query("SELECT * FROM odemeler ORDER BY id DESC LIMIT 1")->fetch(PDO::FETCH_ASSOC);
$heh=$heh['id']+1;
$merchant_oid = $heh;
#
## Müşterinizin sitenizde kayıtlı veya form aracılığıyla aldığınız ad ve soyad bilgisi
$user_name = $_POST['ad_soyad'];
#
## Müşterinizin sitenizde kayıtlı veya form aracılığıyla aldığınız adres bilgisi
$user_address = "Istanbul Turkiye";
#
## Müşterinizin sitenizde kayıtlı veya form aracılığıyla aldığınız telefon bilgisi
$user_phone = $_POST['telefon'];
#
## Başarılı ödeme sonrası müşterinizin yönlendirileceği sayfa
## !!! Bu sayfa siparişi onaylayacağınız sayfa değildir! Yalnızca müşterinizi bilgilendireceğiniz sayfadır!
## !!! Siparişi onaylayacağız sayfa "Bildirim URL" sayfasıdır (Bakınız: 2.ADIM Klasörü).
$merchant_ok_url = "xxx/bayi/odeme_basarili.php";
#
## Ödeme sürecinde beklenmedik bir hata oluşması durumunda müşterinizin yönlendirileceği sayfa
## !!! Bu sayfa siparişi iptal edeceğiniz sayfa değildir! Yalnızca müşterinizi bilgilendireceğiniz sayfadır!
## !!! Siparişi iptal edeceğiniz sayfa "Bildirim URL" sayfasıdır (Bakınız: 2.ADIM Klasörü).
$merchant_fail_url = "xxx/bayi/odeme_hata.php";
#
$giris_id=$_POST['giris_id'];
date_default_timezone_set('Europe/Istanbul');
$zaman=date('d.m.Y H:i:s');
$bugun=date('d.m.Y');
$query = $db->prepare("INSERT INTO odemeler SET
id = ?,
odemeyi_yapan = ?,
miktar = ?,
zaman = ?,
newtime= ?,
durum = ?");
$insert = $query->execute(array(
$merchant_oid, $giris_id , $_POST['miktar'], $zaman, $bugun, "new"
));
$user_basket = base64_encode(json_encode(array(
array("Su Arıtma Cihazı", "0000", 1) // 3. ürün (Ürün Ad - Birim Fiyat - Adet )
)));
############################################################################################
## Kullanıcının IP adresi
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"];
}
## !!! Eğer bu örnek kodu sunucuda değil local makinanızda çalıştırıyorsanız
## buraya dış ip adresinizi (https://www.whatismyip.com/) yazmalısınız. Aksi halde geçersiz paytr_token hatası alırsınız.
$user_ip=$ip;
##
## İşlem zaman aşımı süresi - dakika cinsinden
$timeout_limit = "30";
## Hata mesajlarının ekrana basılması için entegrasyon ve test sürecinde 1 olarak bırakın. Daha sonra 0 yapabilirsiniz.
$debug_on = 1;
## Mağaza canlı modda iken test işlem yapmak için 1 olarak gönderilebilir.
$test_mode = 0;
$no_installment = 0; // Taksit yapılmasını istemiyorsanız, sadece tek çekim sunacaksanız 1 yapın
## Sayfada görüntülenecek taksit adedini sınırlamak istiyorsanız uygun şekilde değiştirin.
## Sıfır (0) gönderilmesi durumunda yürürlükteki en fazla izin verilen taksit geçerli olur.
$max_installment = 0;
$currency = "TL";
####### Bu kısımda herhangi bir değişiklik yapmanıza gerek yoktur. #######
$hash_str = $merchant_id .$user_ip .$merchant_oid .$email .$payment_amount .$user_basket.$no_installment.$max_installment.$currency.$payment_type.$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']);
#########################################################################
?>
<!-- Ödeme formunun açılması için gereken HTML kodlar / Başlangıç -->
<script src="https://www.paytr.com/js/iframeResizer.min.js"></script>
<iframe src="https://www.paytr.com/odeme/guvenli/<?php echo $token;?>" id="paytriframe" frameborder="0" scrolling="no" style="width: 100%;"></iframe>
<script>iFrameResize({},'#paytriframe');</script>
<!-- Ödeme formunun açılması için gereken HTML kodlar / Bitiş -->
</div>
<br><br>
</body>
</html>