v2.5.2
Giriş yap

PAYTR Ödeme Alanı

Anonim
111 defa görüntülendi ve 1 kişi tarafından değerlendirildi

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.

emmir2
21 gün önce

status değeri ekle paytr dönüşünde ki ok cevabına göre status değerini güncellettir