PAYTR Ödeme Alanı
Php Pdo ile script satış sitesi oluşturdum. Sepet alanımda kredi kartı ile ödeme seçiyorum. Paytr ödeme alanına aktarırken siparişi veritabanına kaydediyor ve ödemeyi yapmayınca bile üye panelinde ödeme yapılmış gibi kaydediyor. Bu sorunu nasıl çözeceğim ?
PAYTR Satın-alma sayfası Ürün kaydetme kodları burada.
$result=json_decode($result,1);
if ($result['status'] == 'success') {
// Ödeme başarılı ise, PayTR'den gelen token ile işlem yapılacak.
$token = $result['token'];
// Sipariş bilgilerini hazırlayalım
try {
date_default_timezone_set('Europe/Istanbul');
// Sipariş bilgileri
$siparis_urunid = htmlspecialchars(trim($urunid));
$siparis_userid = htmlspecialchars(trim($kullanici));
$siparis_tarih = htmlspecialchars(trim(date('d/m/Y H:i')));
$siparis_domain = htmlspecialchars(trim($_POST['siparis_domain']));
$siparis_hostingbilgileri = htmlspecialchars(trim($_POST['siparis_hostingbilgileri']));
$siparis_oid = htmlspecialchars(trim($id)); // Özel sipariş numarası
$siparis_turu = "Kredi Kartı"; // Ödeme türü
// Siparişi veritabanına kaydet
$sql = $conn->prepare("INSERT INTO siparisler SET
siparis_urunid = :siparis_urunid,
siparis_userid = :siparis_userid,
siparis_tarih = :siparis_tarih,
siparis_domain = :siparis_domain,
siparis_hostingbilgileri = :siparis_hostingbilgileri,
siparis_oid = :siparis_oid,
siparis_turu = :siparis_turu,
fiyat = :fiyat,
siparis_durum = :siparis_durum");
$ekle = $sql->execute(array(
"siparis_urunid" => $siparis_urunid,
"siparis_userid" => $siparis_userid,
"siparis_tarih" => $siparis_tarih,
"siparis_domain" => $siparis_domain,
"siparis_hostingbilgileri" => $siparis_hostingbilgileri,
"siparis_oid" => $siparis_oid,
"siparis_turu" => $siparis_turu,
"fiyat" => $topla2,
"siparis_durum" => "1" // Sipariş durumu başarılı
));
if ($ekle) {
// Sipariş ekle başarılıysa, müşteri bilgilerini kaydedelim
if (isset($_SESSION['musteri'])) {
$musteri = $_SESSION['musteri'];
// Müşteri bilgilerini kaydet
$stmt = $conn->prepare("INSERT INTO musteriler (urunad, fiyat, ad, soyad, email, telefon, il, ilce, adres, tc, vatandas, firmaadi, vergino, vergidairesi, firma_tel, firma_adres, urunid, siparisid, userid)
VALUES (:urunad, :fiyat, :ad, :soyad, :email, :telefon, :il, :ilce, :adres, :tc, :vatandas, :firmaadi, :vergino, :vergidairesi, :firma_tel, :firma_adres, :urunid, :siparisid, :userid)");
$stmt->execute([
':urunad' => $musteri['urunad'],
':fiyat' => $musteri['fiyat'],
':ad' => $musteri['ad'],
':soyad' => $musteri['soyad'],
':email' => $musteri['email'],
':telefon' => $musteri['telefon'],
':il' => $musteri['il'],
':ilce' => $musteri['ilce'],
':adres' => $musteri['adres'],
':tc' => $musteri['tc'],
':vatandas' => $musteri['vatandas'],
':firmaadi' => $musteri['firmaadi'],
':vergino' => $musteri['vergino'],
':vergidairesi' => $musteri['vergidairesi'],
':firma_tel' => $musteri['firma_tel'],
':firma_adres' => $musteri['firma_adres'],
':urunid' => $siparis_urunid,
':userid' => $siparis_userid,
':siparisid' => $pid
]);
// Müşteri için mail gönderme
$mesaj = "Merhaba sayın ".$musteri['ad']." ".$musteri['soyad']." <br> Web sitemiz üzerinden ".$pid." id'li siparişinizin ".$topla2." TL tutarındaki ödemesi kredi kartı ile başarılı bir şekilde alınmıştır. Bizi tercih ettiğiniz için teşekkür ederiz.";
$mesajyonetici = "Merhaba Yönetici;<br> ".$musteri['ad']." ".$musteri['soyad']." web sitemiz üzerinden ".$pid." id'li siparişinizin ".$topla2." TL tutarındaki ödemesi kredi kartı ile başarılı şekilde oluşturulmuştur.";
// Yöneticiye ve müşteri e-posta gönder
$baslik = "Sipariş Ödemesi Tamamlandı!";
$baslik2 = "[Yönetici] Sipariş Ödemesi Tamamlandı!";
mailsend($musteri['email'], $baslik, $mesaj);
mailsendyonetici($musteri['email'], $baslik2, $mesajyonetici);
unset($_SESSION['musteri']); // Müşteri bilgilerini kaydettikten sonra session'ı temizle
}
} else {
echo 'Sipariş kaydedilemedi!';
exit;
}
} catch (PDOException $exception) {
// Hata varsa sipariş ve müşteri session'larını temizle
unset($_SESSION['cart']);
echo "Hata: " . $exception->getMessage();
exit;
}
} else {
// Eğer ödeme başarılı değilse, kullanıcıya ödeme hatasını bildirin
die("PAYTR IFRAME failed. reason: ".$result['reason']);
}
Satın Al sayfasındaki kodlar da aşağıda.
if($_POST['siparis_yontem'] == "kredi-karti"){
include 'inc/odeme/paytr/satin-alma.php';
if ($result['status'] == 'success') {
unset($_SESSION['cart']);
}
Kaydetme kodlarını aşağıdaki sayfaya eklesem bile sonuç aynı. Paytr onayı alınmadan veritabanına kaydediyor.