{"status":"failed","reason":"Zorunlu alan degeri gecersiz veya gonderilmedi (odeme): payment_type"}bu hatayı alıyoruz ödeme sayfasında yardımcı olabilecek var mı ?
PAYTR Hata Giderme Ücretli Yardım
13
●534
- 29-05-2023, 15:17:19
<!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> - 29-05-2023, 15:20:53SauRonn adlı üyeden alıntı: mesajı görüntüle
'payment_type'=>'card',
bu şekilde mi hocam - 29-05-2023, 15:25:53Evet o şekilde hocam. Başka eksik değişken var mı pek bakamadım direkt sorununuzu cevapladım ama tekrar hata alırsanız yazmaktan çekinmeyin.Khaaos adlı üyeden alıntı: mesajı görüntüle
- 29-05-2023, 15:29:09maalesef hata devam ediyorSauRonn adlı üyeden alıntı: mesajı görüntüle