• 19-10-2024, 20:49:08
    #1
    Kodlarım bunlar ne yaptıysam sorunu çözemedim. https://www.paytr.com/odeme adresine yönlendiriyor ve

    {"status":"failed","reason":"paytr_token gonderilmedi veya gecersiz"}

    hatasını alıyorum. Yardımcı olur musunuz?

    <?php
    session_start(); // Oturum başlatma
    // Hataları göster
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    error_reporting(E_ALL);
    $title = "Ödeme Sayfası";
    include('../include/header.php'); // Header dosyasını dahil et
    include('../include/db.php'); // Veritabanı bağlantısı
    // Kullanıcı giriş kontrolü
    if (!isset($_SESSION['kullanici_id'])) {
        header("Location: /giris-yap");
        exit;
    }
    $cv_id = $_GET['cv_id'] ?? null;
    $kullanici_id = $_SESSION['kullanici_id'];
    if ($cv_id) {
        // CV bilgilerini al
        $sorgu = $conn->prepare("SELECT * FROM cv_liste WHERE id = ? AND kullanici_id = ?");
        $sorgu->execute([$cv_id, $kullanici_id]);
        $cv = $sorgu->fetch(PDO::FETCH_ASSOC);
        if ($cv) {
            // Kullanıcı bilgilerini al
            $kullanici_sorgu = $conn->prepare("SELECT * FROM kullanicilar WHERE id = ?");
            $kullanici_sorgu->execute([$kullanici_id]);
            $kullanici = $kullanici_sorgu->fetch(PDO::FETCH_ASSOC);
            if ($kullanici) {
                // Ödeme için gerekli bilgiler
                $merchant_id = '480';  // bilgilerim
                $merchant_key = 'EySp4NBzPF3A';  // bilgilerim
                $merchant_salt = 'pcr6ffAdr2n';  // bilgilerim
                $email = $kullanici['email'] ?? null; // Kullanıcının email adresi
                $payment_amount = 5000; // Ödeme tutarı (kuruş cinsinden)
                $user_basket = base64_encode(json_encode([
                    ["CV " . ($cv['cv_adi'] ?? 'Bilinmeyen'), "50.00", 1]
                ]));
                $merchant_oid = uniqid(); // Ödeme işlemi için benzersiz bir ID
                $merchant_ok_url = "http://site-ismi/basarili";
                $merchant_fail_url = "http://site-ismi/basarisiz";
                $test_mode = "1"; // Test modu aktif
                $non_3d = "0";
                $client_lang = "tr";
                $installment_count = "1"; // Varsayılan taksit sayısı
                $user_name = $kullanici['ad'] . ' ' . $kullanici['soyad'];
                $user_address = $kullanici['adres'] ?? 'Adres bilgisi girilmemiş';
                $user_phone = $kullanici['telefon'] ?? 'Telefon bilgisi girilmemiş';
                // Kullanıcı email kontrolü
                if (empty($email)) {
                    echo "<p class='text-danger'>Kullanıcı email bilgisi bulunamadı. Lütfen tekrar deneyin.</p>";
                    exit;
                }
                // IP adresini al
                if (isset($_SERVER["HTTP_CLIENT_IP"])) {
                    $user_ip = $_SERVER["HTTP_CLIENT_IP"];
                } elseif (isset($_SERVER["HTTP_X_FORWARDED_FOR"])) {
                    $user_ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
                } else {
                    $user_ip = $_SERVER["REMOTE_ADDR"];
                }
                // Güvenlik imzası oluşturma
                $payment_type = 'card';
    $currency = 'TL';
    $hash_str = $merchant_id . $user_ip . $merchant_oid . $email . $payment_amount . $payment_type . $installment_count . $currency . $test_mode . $non_3d . $merchant_salt;
                $paytr_token = base64_encode(hash_hmac('sha256', $hash_str, $merchant_key, true));
                $paytr_token      = base64_encode(hash_hmac('sha256',$hash_str.$merchant_salt,$merchant_key,true));
                
                
    
                // Ödeme formu
                ?>
                <section class="container my-5">
                    <h2>Ödeme Yap</h2>
                    <p class="lead"> ödeme yapmanız gerekmektedir.</p>
                    <form action="https://www.paytr.com/odeme" method="post">
                        Kart Sahibi Adı: <input type="text" name="cc_owner" value="TEST KARTI"><br>
                        Kart Numarası: <input type="text" name="card_number" value="9792030394440796"><br>
                        Kart Son Kullanma Ay: <input type="text" name="expiry_month" value="12"><br>
                        Kart Son Kullanma Yıl: <input type="text" name="expiry_year" value="30"><br>
                        Kart Güvenlik Kodu: <input type="text" name="cvv" value="000"><br>
                        <input type="hidden" name="merchant_id" value="<?php echo $merchant_id; ?>">
                        <input type="hidden" name="user_ip" value="<?php echo $user_ip; ?>">
                        <input type="hidden" name="merchant_oid" value="<?php echo $merchant_oid; ?>">
                        <input type="hidden" name="email" value="<?php echo $email; ?>">
                        <input type="hidden" name="payment_type" value="card">
                        <input type="hidden" name="payment_amount" value="<?php echo $payment_amount; ?>">
                        <input type="hidden" name="currency" value="TL">
                        <input type="hidden" name="test_mode" value="<?php echo $test_mode; ?>">
                        <input type="hidden" name="non_3d" value="<?php echo $non_3d; ?>">
                        <input type="hidden" name="merchant_ok_url" value="<?php echo $merchant_ok_url; ?>">
                        <input type="hidden" name="merchant_fail_url" value="<?php echo $merchant_fail_url; ?>">
                        <input type="hidden" name="user_basket" value="<?php echo $user_basket; ?>">
                        <input type="hidden" name="client_lang" value="<?php echo $client_lang; ?>">
                        <input type="hidden" name="paytr_token" value="<?php echo $paytr_token; ?>">
                        <input type="hidden" name="installment_count" value="0">
                        <input type="hidden" name="no_installment" value="0">
                        
                        
                        <input type="hidden" name="max_installment" value="1">
                        <input type="hidden" name="user_name" value="<?php echo $user_name; ?>">
                        <input type="hidden" name="user_address" value="<?php echo $user_address; ?>">
                        <input type="hidden" name="user_phone" value="<?php echo $user_phone; ?>">
                        <input type="hidden" name="client_lang" value="<?php echo $client_lang; ?>">
    <input type="hidden" name="lang" value="<?php echo $client_lang; ?>">
                        <input type="submit" value="Ödeme Yap">
                    </form>
                </section>
                <?php
            } else {
                echo "<p class='text-danger'>Kullanıcı bilgileri bulunamadı. Lütfen tekrar deneyin.</p>";
            }
        } else {
            echo "<p class='text-danger'>CV bilgileri bulunamadı. Lütfen tekrar deneyin.</p>";
        }
    } else {
        echo "<p class='text-danger'>CV ID bulunamadı. Lütfen tekrar deneyin.</p>";
    }
    include('../include/footer.php'); // Footer dosyasını dahil et
    ?>
  • 19-10-2024, 20:50:34
    #2
    Merhaba, problem devam ediyorsa ücretli destek sağlayabilirim.
  • 19-10-2024, 20:51:40
    #3
    <?php
    session_start(); // Oturum başlatma
    // Hataları göster
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    error_reporting(E_ALL);
    
    $title = "Ödeme Sayfası";
    include('../include/header.php'); // Header dosyasını dahil et
    include('../include/db.php'); // Veritabanı bağlantısı
    
    // Kullanıcı giriş kontrolü
    if (!isset($_SESSION['kullanici_id'])) {
        header("Location: /giris-yap");
        exit;
    }
    
    $cv_id = $_GET['cv_id'] ?? null;
    $kullanici_id = $_SESSION['kullanici_id'];
    
    if ($cv_id) {
        // CV bilgilerini al
        $sorgu = $conn->prepare("SELECT * FROM cv_liste WHERE id = ? AND kullanici_id = ?");
        $sorgu->execute([$cv_id, $kullanici_id]);
        $cv = $sorgu->fetch(PDO::FETCH_ASSOC);
    
        if ($cv) {
            // Kullanıcı bilgilerini al
            $kullanici_sorgu = $conn->prepare("SELECT * FROM kullanicilar WHERE id = ?");
            $kullanici_sorgu->execute([$kullanici_id]);
            $kullanici = $kullanici_sorgu->fetch(PDO::FETCH_ASSOC);
    
            if ($kullanici) {
                // Ödeme için gerekli bilgiler
                $merchant_id = '487290';
                $merchant_key = 'EySp4NBzPFbhM73A';
                $merchant_salt = 'pcr6ASMogHCAFr2n';
                $email = $kullanici['email'] ?? null; // Kullanıcının email adresi
                $payment_amount = 5000; // Ödeme tutarı (kuruş cinsinden)
                $user_basket = base64_encode(json_encode([
                    ["CV " . ($cv['cv_adi'] ?? 'Bilinmeyen'), "50.00", 1]
                ]));
                $merchant_oid = uniqid(); // Ödeme işlemi için benzersiz bir ID
                $merchant_ok_url = "http://site-ismi/basarili";
                $merchant_fail_url = "http://site-ismi/basarisiz";
                $test_mode = "1"; // Test modu aktif
                $non_3d = "0";
                $client_lang = "tr";
                $installment_count = "1"; // Varsayılan taksit sayısı
                $user_name = $kullanici['ad'] . ' ' . $kullanici['soyad'];
                $user_address = $kullanici['adres'] ?? 'Adres bilgisi girilmemiş';
                $user_phone = $kullanici['telefon'] ?? 'Telefon bilgisi girilmemiş';
    
                // Kullanıcı email kontrolü
                if (empty($email)) {
                    echo "<p class='text-danger'>Kullanıcı email bilgisi bulunamadı. Lütfen tekrar deneyin.</p>";
                    exit;
                }
    
                // IP adresini al
                if (isset($_SERVER["HTTP_CLIENT_IP"])) {
                    $user_ip = $_SERVER["HTTP_CLIENT_IP"];
                } elseif (isset($_SERVER["HTTP_X_FORWARDED_FOR"])) {
                    $user_ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
                } else {
                    $user_ip = $_SERVER["REMOTE_ADDR"];
                }
    
                // Güvenlik imzası oluşturma
                $payment_type = 'card';
                $currency = 'TL';
                $hash_str = $merchant_id . $user_ip . $merchant_oid . $email . $payment_amount . $payment_type . $installment_count . $currency . $test_mode . $non_3d . $merchant_salt;
                $paytr_token = base64_encode(hash_hmac('sha256', $hash_str, $merchant_key, true));
    
                // Ödeme formu
                ?>
                <section class="container my-5">
                    <h2>Ödeme Yap</h2>
                    <p class="lead">CV'nizi indirip görüntüleyebilmek için ödeme yapmanız gerekmektedir.</p>
                    <form action="https://www.paytr.com/odeme" method="post">
                        Kart Sahibi Adı: <input type="text" name="cc_owner" value="TEST KARTI"><br>
                        Kart Numarası: <input type="text" name="card_number" value="9792030394440796"><br>
                        Kart Son Kullanma Ay: <input type="text" name="expiry_month" value="12"><br>
                        Kart Son Kullanma Yıl: <input type="text" name="expiry_year" value="30"><br>
                        Kart Güvenlik Kodu: <input type="text" name="cvv" value="000"><br>
                        <input type="hidden" name="merchant_id" value="<?php echo $merchant_id; ?>">
                        <input type="hidden" name="user_ip" value="<?php echo $user_ip; ?>">
                        <input type="hidden" name="merchant_oid" value="<?php echo $merchant_oid; ?>">
                        <input type="hidden" name="email" value="<?php echo $email; ?>">
                        <input type="hidden" name="payment_type" value="card">
                        <input type="hidden" name="payment_amount" value="<?php echo $payment_amount; ?>">
                        <input type="hidden" name="currency" value="TL">
                        <input type="hidden" name="test_mode" value="<?php echo $test_mode; ?>">
                        <input type="hidden" name="non_3d" value="<?php echo $non_3d; ?>">
                        <input type="hidden" name="merchant_ok_url" value="<?php echo $merchant_ok_url; ?>">
                        <input type="hidden" name="merchant_fail_url" value="<?php echo $merchant_fail_url; ?>">
                        <input type="hidden" name="user_basket" value="<?php echo $user_basket; ?>">
                        <input type="hidden" name="client_lang" value="<?php echo $client_lang; ?>">
                        <input type="hidden" name="paytr_token" value="<?php echo $paytr_token; ?>">
                        <input type="hidden" name="installment_count" value="0">
                        <input type="hidden" name="no_installment" value="0">
                        <input type="hidden" name="max_installment" value="1">
                        <input type="hidden" name="user_name" value="<?php echo $user_name; ?>">
                        <input type="hidden" name="user_address" value="<?php echo $user_address; ?>">
                        <input type="hidden" name="user_phone" value="<?php echo $user_phone; ?>">
                        <input type="hidden" name="client_lang" value="<?php echo $client_lang; ?>">
                        <input type="hidden" name="lang" value="<?php echo $client_lang; ?>">
                        <input type="submit" value="Ödeme Yap">
                    </form>
                </section>
                <?php
            } else {
                echo "<p class='text-danger'>Kullanıcı bilgileri bulunamadı. Lütfen tekrar deneyin.</p>";
            }
        } else {
            echo "<p class='text-danger'>CV bilgileri bulunamadı. Lütfen tekrar deneyin.</p>";
        }
    } else {
        echo "<p class='text-danger'>CV ID bulunamadı. Lütfen tekrar deneyin.</p>";
    }
    
    include('../include/footer.php'); // Footer dosyasını dahil et
    ?>
    Deeneyebilir misiniz?
  • 19-10-2024, 20:52:40
    #4
    $paytr_token iki kere yazmışsınız hocam
  • 19-10-2024, 20:55:46
    #5
    MODLOFF adlı üyeden alıntı: mesajı görüntüle
    <?php
    session_start(); // Oturum başlatma
    // Hataları göster
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    error_reporting(E_ALL);
    
    $title = "Ödeme Sayfası";
    include('../include/header.php'); // Header dosyasını dahil et
    include('../include/db.php'); // Veritabanı bağlantısı
    
    // Kullanıcı giriş kontrolü
    if (!isset($_SESSION['kullanici_id'])) {
        header("Location: /giris-yap");
        exit;
    }
    
    $cv_id = $_GET['cv_id'] ?? null;
    $kullanici_id = $_SESSION['kullanici_id'];
    
    if ($cv_id) {
        // CV bilgilerini al
        $sorgu = $conn->prepare("SELECT * FROM cv_liste WHERE id = ? AND kullanici_id = ?");
        $sorgu->execute([$cv_id, $kullanici_id]);
        $cv = $sorgu->fetch(PDO::FETCH_ASSOC);
    
        if ($cv) {
            // Kullanıcı bilgilerini al
            $kullanici_sorgu = $conn->prepare("SELECT * FROM kullanicilar WHERE id = ?");
            $kullanici_sorgu->execute([$kullanici_id]);
            $kullanici = $kullanici_sorgu->fetch(PDO::FETCH_ASSOC);
    
            if ($kullanici) {
                // Ödeme için gerekli bilgiler
                $merchant_id = '4890';
                $merchant_key = 'EySM73A';
                $merchant_salt = 'pcr6ASr2n';
                $email = $kullanici['email'] ?? null; // Kullanıcının email adresi
                $payment_amount = 5000; // Ödeme tutarı (kuruş cinsinden)
                $user_basket = base64_encode(json_encode([
                    ["CV " . ($cv['cv_adi'] ?? 'Bilinmeyen'), "50.00", 1]
                ]));
                $merchant_oid = uniqid(); // Ödeme işlemi için benzersiz bir ID
                $merchant_ok_url = "http://site-ismi/basarili";
                $merchant_fail_url = "http://site-ismi/basarisiz";
                $test_mode = "1"; // Test modu aktif
                $non_3d = "0";
                $client_lang = "tr";
                $installment_count = "1"; // Varsayılan taksit sayısı
                $user_name = $kullanici['ad'] . ' ' . $kullanici['soyad'];
                $user_address = $kullanici['adres'] ?? 'Adres bilgisi girilmemiş';
                $user_phone = $kullanici['telefon'] ?? 'Telefon bilgisi girilmemiş';
    
                // Kullanıcı email kontrolü
                if (empty($email)) {
                    echo "<p class='text-danger'>Kullanıcı email bilgisi bulunamadı. Lütfen tekrar deneyin.</p>";
                    exit;
                }
    
                // IP adresini al
                if (isset($_SERVER["HTTP_CLIENT_IP"])) {
                    $user_ip = $_SERVER["HTTP_CLIENT_IP"];
                } elseif (isset($_SERVER["HTTP_X_FORWARDED_FOR"])) {
                    $user_ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
                } else {
                    $user_ip = $_SERVER["REMOTE_ADDR"];
                }
    
                // Güvenlik imzası oluşturma
                $payment_type = 'card';
                $currency = 'TL';
                $hash_str = $merchant_id . $user_ip . $merchant_oid . $email . $payment_amount . $payment_type . $installment_count . $currency . $test_mode . $non_3d . $merchant_salt;
                $paytr_token = base64_encode(hash_hmac('sha256', $hash_str, $merchant_key, true));
    
                // Ödeme formu
                ?>
                <section class="container my-5">
                    <h2>Ödeme Yap</h2>
                    <p class="lead">CV'nizi indirip görüntüleyebilmek için ödeme yapmanız gerekmektedir.</p>
                    <form action="https://www.paytr.com/odeme" method="post">
                        Kart Sahibi Adı: <input type="text" name="cc_owner" value="TEST KARTI"><br>
                        Kart Numarası: <input type="text" name="card_number" value="9792030394440796"><br>
                        Kart Son Kullanma Ay: <input type="text" name="expiry_month" value="12"><br>
                        Kart Son Kullanma Yıl: <input type="text" name="expiry_year" value="30"><br>
                        Kart Güvenlik Kodu: <input type="text" name="cvv" value="000"><br>
                        <input type="hidden" name="merchant_id" value="<?php echo $merchant_id; ?>">
                        <input type="hidden" name="user_ip" value="<?php echo $user_ip; ?>">
                        <input type="hidden" name="merchant_oid" value="<?php echo $merchant_oid; ?>">
                        <input type="hidden" name="email" value="<?php echo $email; ?>">
                        <input type="hidden" name="payment_type" value="card">
                        <input type="hidden" name="payment_amount" value="<?php echo $payment_amount; ?>">
                        <input type="hidden" name="currency" value="TL">
                        <input type="hidden" name="test_mode" value="<?php echo $test_mode; ?>">
                        <input type="hidden" name="non_3d" value="<?php echo $non_3d; ?>">
                        <input type="hidden" name="merchant_ok_url" value="<?php echo $merchant_ok_url; ?>">
                        <input type="hidden" name="merchant_fail_url" value="<?php echo $merchant_fail_url; ?>">
                        <input type="hidden" name="user_basket" value="<?php echo $user_basket; ?>">
                        <input type="hidden" name="client_lang" value="<?php echo $client_lang; ?>">
                        <input type="hidden" name="paytr_token" value="<?php echo $paytr_token; ?>">
                        <input type="hidden" name="installment_count" value="0">
                        <input type="hidden" name="no_installment" value="0">
                        <input type="hidden" name="max_installment" value="1">
                        <input type="hidden" name="user_name" value="<?php echo $user_name; ?>">
                        <input type="hidden" name="user_address" value="<?php echo $user_address; ?>">
                        <input type="hidden" name="user_phone" value="<?php echo $user_phone; ?>">
                        <input type="hidden" name="client_lang" value="<?php echo $client_lang; ?>">
                        <input type="hidden" name="lang" value="<?php echo $client_lang; ?>">
                        <input type="submit" value="Ödeme Yap">
                    </form>
                </section>
                <?php
            } else {
                echo "<p class='text-danger'>Kullanıcı bilgileri bulunamadı. Lütfen tekrar deneyin.</p>";
            }
        } else {
            echo "<p class='text-danger'>CV bilgileri bulunamadı. Lütfen tekrar deneyin.</p>";
        }
    } else {
        echo "<p class='text-danger'>CV ID bulunamadı. Lütfen tekrar deneyin.</p>";
    }
    
    include('../include/footer.php'); // Footer dosyasını dahil et
    ?>
    Deeneyebilir misiniz?
    olmadı hocam yine {"status":"failed","reason":"paytr_token gonderilmedi veya gecersiz"} diyor.

    Decentralized adlı üyeden alıntı: mesajı görüntüle
    $paytr_token iki kere yazmışsınız hocam
    anlamadım hocam 1 kere yazılı ama
  • 19-10-2024, 20:58:05
    #6
    karakaya26 adlı üyeden alıntı: mesajı görüntüle
    olmadı hocam yine {"status":"failed","reason":"paytr_token gonderilmedi veya gecersiz"} diyor.



    anlamadım hocam 1 kere yazılı ama
    <?php
    session_start(); // Oturum başlatma
    // Hataları göster
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    error_reporting(E_ALL);
    
    $title = "Ödeme Sayfası";
    include('../include/header.php'); // Header dosyasını dahil et
    include('../include/db.php'); // Veritabanı bağlantısı
    
    // Kullanıcı giriş kontrolü
    if (!isset($_SESSION['kullanici_id'])) {
        header("Location: /giris-yap");
        exit;
    }
    
    $cv_id = $_GET['cv_id'] ?? null;
    $kullanici_id = $_SESSION['kullanici_id'];
    
    if ($cv_id) {
        // CV bilgilerini al
        $sorgu = $conn->prepare("SELECT * FROM cv_liste WHERE id = ? AND kullanici_id = ?");
        $sorgu->execute([$cv_id, $kullanici_id]);
        $cv = $sorgu->fetch(PDO::FETCH_ASSOC);
    
        if ($cv) {
            // Kullanıcı bilgilerini al
            $kullanici_sorgu = $conn->prepare("SELECT * FROM kullanicilar WHERE id = ?");
            $kullanici_sorgu->execute([$kullanici_id]);
            $kullanici = $kullanici_sorgu->fetch(PDO::FETCH_ASSOC);
    
            if ($kullanici) {
                // Ödeme için gerekli bilgiler
                $merchant_id = '487290'; // Merchant ID
                $merchant_key = 'EySp4NBzPFbhM73A'; // Merchant Key
                $merchant_salt = 'pcr6ASMogHCAFr2n'; // Merchant Salt
                $email = $kullanici['email'] ?? null; // Kullanıcının email adresi
                $payment_amount = 5000; // Ödeme tutarı (kuruş cinsinden)
                $user_basket = base64_encode(json_encode([
                    ["CV " . ($cv['cv_adi'] ?? 'Bilinmeyen'), "50.00", 1]
                ]));
                $merchant_oid = uniqid(); // Ödeme işlemi için benzersiz bir ID
                $merchant_ok_url = "http://site-ismi/basarili";
                $merchant_fail_url = "http://site-ismi/basarisiz";
                $test_mode = "1"; // Test modu aktif
                $non_3d = "0";
                $client_lang = "tr";
                $installment_count = "1"; // Varsayılan taksit sayısı
                $user_name = $kullanici['ad'] . ' ' . $kullanici['soyad'];
                $user_address = $kullanici['adres'] ?? 'Adres bilgisi girilmemiş';
                $user_phone = $kullanici['telefon'] ?? 'Telefon bilgisi girilmemiş';
    
                // Kullanıcı email kontrolü
                if (empty($email)) {
                    echo "<p class='text-danger'>Kullanıcı email bilgisi bulunamadı. Lütfen tekrar deneyin.</p>";
                    exit;
                }
    
                // IP adresini al
                if (isset($_SERVER["HTTP_CLIENT_IP"])) {
                    $user_ip = $_SERVER["HTTP_CLIENT_IP"];
                } elseif (isset($_SERVER["HTTP_X_FORWARDED_FOR"])) {
                    $user_ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
                } else {
                    $user_ip = $_SERVER["REMOTE_ADDR"];
                }
    
                // Güvenlik imzası oluşturma
                $payment_type = 'card';
                $currency = 'TL';
    
                // Hash stringi oluşturma
                $hash_str = $merchant_id . $user_ip . $merchant_oid . $email . $payment_amount . $payment_type . $installment_count . $currency . $test_mode . $non_3d . $merchant_salt;
    
                // paytr_token hesaplama
                $paytr_token = base64_encode(hash_hmac('sha256', $hash_str, $merchant_key, true));
    
                // Ödeme formu
                ?>
                <section class="container my-5">
                    <h2>Ödeme Yap</h2>
                    <p class="lead">CV'nizi indirip görüntüleyebilmek için ödeme yapmanız gerekmektedir.</p>
                    <form action="https://www.paytr.com/odeme" method="post">
                        Kart Sahibi Adı: <input type="text" name="cc_owner" value="TEST KARTI"><br>
                        Kart Numarası: <input type="text" name="card_number" value="9792030394440796"><br>
                        Kart Son Kullanma Ay: <input type="text" name="expiry_month" value="12"><br>
                        Kart Son Kullanma Yıl: <input type="text" name="expiry_year" value="30"><br>
                        Kart Güvenlik Kodu: <input type="text" name="cvv" value="000"><br>
                        <input type="hidden" name="merchant_id" value="<?php echo $merchant_id; ?>">
                        <input type="hidden" name="user_ip" value="<?php echo $user_ip; ?>">
                        <input type="hidden" name="merchant_oid" value="<?php echo $merchant_oid; ?>">
                        <input type="hidden" name="email" value="<?php echo $email; ?>">
                        <input type="hidden" name="payment_type" value="card">
                        <input type="hidden" name="payment_amount" value="<?php echo $payment_amount; ?>">
                        <input type="hidden" name="currency" value="TL">
                        <input type="hidden" name="test_mode" value="<?php echo $test_mode; ?>">
                        <input type="hidden" name="non_3d" value="<?php echo $non_3d; ?>">
                        <input type="hidden" name="merchant_ok_url" value="<?php echo $merchant_ok_url; ?>">
                        <input type="hidden" name="merchant_fail_url" value="<?php echo $merchant_fail_url; ?>">
                        <input type="hidden" name="user_basket" value="<?php echo $user_basket; ?>">
                        <input type="hidden" name="client_lang" value="<?php echo $client_lang; ?>">
                        <input type="hidden" name="paytr_token" value="<?php echo $paytr_token; ?>">
                        <input type="hidden" name="installment_count" value="0">
                        <input type="hidden" name="no_installment" value="0">
                        <input type="hidden" name="max_installment" value="1">
                        <input type="hidden" name="user_name" value="<?php echo $user_name; ?>">
                        <input type="hidden" name="user_address" value="<?php echo $user_address; ?>">
                        <input type="hidden" name="user_phone" value="<?php echo $user_phone; ?>">
                        <input type="hidden" name="client_lang" value="<?php echo $client_lang; ?>">
                        <input type="hidden" name="lang" value="<?php echo $client_lang; ?>">
                        <input type="submit" value="Ödeme Yap">
                    </form>
                </section>
                <?php
            } else {
                echo "<p class='text-danger'>Kullanıcı bilgileri bulunamadı. Lütfen tekrar deneyin.</p>";
            }
        } else {
            echo "<p class='text-danger'>CV bilgileri bulunamadı. Lütfen tekrar deneyin.</p>";
        }
    } else {
        echo "<p class='text-danger'>CV ID bulunamadı. Lütfen tekrar deneyin.</p>";
    }
    
    include('../include/footer.php'); // Footer dosyasını dahil et
    ?>
    tekrar deneyebilir misiniz
  • 19-10-2024, 21:00:40
    #7
    karakaya26 adlı üyeden alıntı: mesajı görüntüle
    Kodlarım bunlar ne yaptıysam sorunu çözemedim. https://www.paytr.com/odeme adresine yönlendiriyor ve

    {"status":"failed","reason":"paytr_token gonderilmedi veya gecersiz"}

    hatasını alıyorum. Yardımcı olur musunuz?

    <?php
    session_start(); // Oturum başlatma
    // Hataları göster
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    error_reporting(E_ALL);
    $title = "Ödeme Sayfası";
    include('../include/header.php'); // Header dosyasını dahil et
    include('../include/db.php'); // Veritabanı bağlantısı
    // Kullanıcı giriş kontrolü
    if (!isset($_SESSION['kullanici_id'])) {
        header("Location: /giris-yap");
        exit;
    }
    $cv_id = $_GET['cv_id'] ?? null;
    $kullanici_id = $_SESSION['kullanici_id'];
    if ($cv_id) {
        // CV bilgilerini al
        $sorgu = $conn->prepare("SELECT * FROM cv_liste WHERE id = ? AND kullanici_id = ?");
        $sorgu->execute([$cv_id, $kullanici_id]);
        $cv = $sorgu->fetch(PDO::FETCH_ASSOC);
        if ($cv) {
            // Kullanıcı bilgilerini al
            $kullanici_sorgu = $conn->prepare("SELECT * FROM kullanicilar WHERE id = ?");
            $kullanici_sorgu->execute([$kullanici_id]);
            $kullanici = $kullanici_sorgu->fetch(PDO::FETCH_ASSOC);
            if ($kullanici) {
                // Ödeme için gerekli bilgiler
                $merchant_id = '480';  // bilgilerim
                $merchant_key = 'EySp4NBzPF3A';  // bilgilerim
                $merchant_salt = 'pcr6ffAdr2n';  // bilgilerim
                $email = $kullanici['email'] ?? null; // Kullanıcının email adresi
                $payment_amount = 5000; // Ödeme tutarı (kuruş cinsinden)
                $user_basket = base64_encode(json_encode([
                    ["CV " . ($cv['cv_adi'] ?? 'Bilinmeyen'), "50.00", 1]
                ]));
                $merchant_oid = uniqid(); // Ödeme işlemi için benzersiz bir ID
                $merchant_ok_url = "http://site-ismi/basarili";
                $merchant_fail_url = "http://site-ismi/basarisiz";
                $test_mode = "1"; // Test modu aktif
                $non_3d = "0";
                $client_lang = "tr";
                $installment_count = "1"; // Varsayılan taksit sayısı
                $user_name = $kullanici['ad'] . ' ' . $kullanici['soyad'];
                $user_address = $kullanici['adres'] ?? 'Adres bilgisi girilmemiş';
                $user_phone = $kullanici['telefon'] ?? 'Telefon bilgisi girilmemiş';
                // Kullanıcı email kontrolü
                if (empty($email)) {
                    echo "<p class='text-danger'>Kullanıcı email bilgisi bulunamadı. Lütfen tekrar deneyin.</p>";
                    exit;
                }
                // IP adresini al
                if (isset($_SERVER["HTTP_CLIENT_IP"])) {
                    $user_ip = $_SERVER["HTTP_CLIENT_IP"];
                } elseif (isset($_SERVER["HTTP_X_FORWARDED_FOR"])) {
                    $user_ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
                } else {
                    $user_ip = $_SERVER["REMOTE_ADDR"];
                }
                // Güvenlik imzası oluşturma
                $payment_type = 'card';
    $currency = 'TL';
    $hash_str = $merchant_id . $user_ip . $merchant_oid . $email . $payment_amount . $payment_type . $installment_count . $currency . $test_mode . $non_3d . $merchant_salt;
                $paytr_token = base64_encode(hash_hmac('sha256', $hash_str, $merchant_key, true));
                $paytr_token      = base64_encode(hash_hmac('sha256',$hash_str.$merchant_salt,$merchant_key,true));
                
                
    
                // Ödeme formu
                ?>
                <section class="container my-5">
                    <h2>Ödeme Yap</h2>
                    <p class="lead"> ödeme yapmanız gerekmektedir.</p>
                    <form action="https://www.paytr.com/odeme" method="post">
                        Kart Sahibi Adı: <input type="text" name="cc_owner" value="TEST KARTI"><br>
                        Kart Numarası: <input type="text" name="card_number" value="9792030394440796"><br>
                        Kart Son Kullanma Ay: <input type="text" name="expiry_month" value="12"><br>
                        Kart Son Kullanma Yıl: <input type="text" name="expiry_year" value="30"><br>
                        Kart Güvenlik Kodu: <input type="text" name="cvv" value="000"><br>
                        <input type="hidden" name="merchant_id" value="<?php echo $merchant_id; ?>">
                        <input type="hidden" name="user_ip" value="<?php echo $user_ip; ?>">
                        <input type="hidden" name="merchant_oid" value="<?php echo $merchant_oid; ?>">
                        <input type="hidden" name="email" value="<?php echo $email; ?>">
                        <input type="hidden" name="payment_type" value="card">
                        <input type="hidden" name="payment_amount" value="<?php echo $payment_amount; ?>">
                        <input type="hidden" name="currency" value="TL">
                        <input type="hidden" name="test_mode" value="<?php echo $test_mode; ?>">
                        <input type="hidden" name="non_3d" value="<?php echo $non_3d; ?>">
                        <input type="hidden" name="merchant_ok_url" value="<?php echo $merchant_ok_url; ?>">
                        <input type="hidden" name="merchant_fail_url" value="<?php echo $merchant_fail_url; ?>">
                        <input type="hidden" name="user_basket" value="<?php echo $user_basket; ?>">
                        <input type="hidden" name="client_lang" value="<?php echo $client_lang; ?>">
                        <input type="hidden" name="paytr_token" value="<?php echo $paytr_token; ?>">
                        <input type="hidden" name="installment_count" value="0">
                        <input type="hidden" name="no_installment" value="0">
                        
                        
                        <input type="hidden" name="max_installment" value="1">
                        <input type="hidden" name="user_name" value="<?php echo $user_name; ?>">
                        <input type="hidden" name="user_address" value="<?php echo $user_address; ?>">
                        <input type="hidden" name="user_phone" value="<?php echo $user_phone; ?>">
                        <input type="hidden" name="client_lang" value="<?php echo $client_lang; ?>">
    <input type="hidden" name="lang" value="<?php echo $client_lang; ?>">
                        <input type="submit" value="Ödeme Yap">
                    </form>
                </section>
                <?php
            } else {
                echo "<p class='text-danger'>Kullanıcı bilgileri bulunamadı. Lütfen tekrar deneyin.</p>";
            }
        } else {
            echo "<p class='text-danger'>CV bilgileri bulunamadı. Lütfen tekrar deneyin.</p>";
        }
    } else {
        echo "<p class='text-danger'>CV ID bulunamadı. Lütfen tekrar deneyin.</p>";
    }
    include('../include/footer.php'); // Footer dosyasını dahil et
    ?>
    Bu hata, paytr_token değeriyle ilgili bir sorun olduğunu gösteriyor. paytr_token, PayTR API'sine gönderilmesi gereken güvenlik imzasıdır ve doğru şekilde oluşturulması gerekir. Aşağıdaki adımları kontrol ederek hatayı çözebilirsiniz:

    1. Hash oluşturma işlemini düzeltin:

    Kodun içinde iki kez paytr_token oluşturulmuş, bu gereksiz ve kafa karıştırıcı olabilir. Şu satırları birleştirin ve doğru sırada hash oluşturduğunuzdan emin olun:

    $hash_str = $merchant_id . $user_ip . $merchant_oid . $email . $payment_amount . $payment_type . $installment_count . $currency . $test_mode . $non_3d . $merchant_salt;
    $paytr_token = base64_encode(hash_hmac('sha256', $hash_str, $merchant_key, true));

    Bu satırları bir kez çalıştırdıktan sonra doğru paytr_token oluşturulacak.

    2. Kodun düzenlenmiş hali:

    <?php
    include('../include/header.php');
    include('../include/db.php');

    if (!isset($_SESSION['kullanici_id'])) {
    header("Location: /giris-yap");
    exit;
    }

    $cv_id = $_GET['cv_id'] ?? null;
    $kullanici_id = $_SESSION['kullanici_id'];

    if ($cv_id) {
    $sorgu = $conn->prepare("SELECT * FROM cv_liste WHERE id = ? AND kullanici_id = ?");
    $sorgu->execute([$cv_id, $kullanici_id]);
    $cv = $sorgu->fetch(PDO::FETCH_ASSOC);

    if ($cv) {
    $kullanici_sorgu = $conn->prepare("SELECT * FROM kullanicilar WHERE id = ?");
    $kullanici_sorgu->execute([$kullanici_id]);
    $kullanici = $kullanici_sorgu->fetch(PDO::FETCH_ASSOC);

    if ($kullanici) {
    $merchant_id = '480';
    $merchant_key = 'EySp4NBzPF3A';
    $merchant_salt = 'pcr6ffAdr2n';
    $email = $kullanici['email'] ?? null;
    $payment_amount = 5000;
    $user_basket = base64_encode(json_encode([["CV " . ($cv['cv_adi'] ?? 'Bilinmeyen'), "50.00", 1]]));
    $merchant_oid = uniqid();
    $merchant_ok_url = "http://site-ismi/basarili";
    $merchant_fail_url = "http://site-ismi/basarisiz";
    $test_mode = "1";
    $non_3d = "0";
    $client_lang = "tr";
    $installment_count = "1";
    $user_name = $kullanici['ad'] . ' ' . $kullanici['soyad'];
    $user_address = $kullanici['adres'] ?? 'Adres bilgisi girilmemiş';
    $user_phone = $kullanici['telefon'] ?? 'Telefon bilgisi girilmemiş';

    if (empty($email)) {
    echo "<p class='text-danger'>Kullanıcı email bilgisi bulunamadı. Lütfen tekrar deneyin.</p>";
    exit;
    }

    if (isset($_SERVER["HTTP_CLIENT_IP"])) {
    $user_ip = $_SERVER["HTTP_CLIENT_IP"];
    } elseif (isset($_SERVER["HTTP_X_FORWARDED_FOR"])) {
    $user_ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
    } else {
    $user_ip = $_SERVER["REMOTE_ADDR"];
    }

    $payment_type = 'card';
    $currency = 'TL';
    $hash_str = $merchant_id . $user_ip . $merchant_oid . $email . $payment_amount . $payment_type . $installment_count . $currency . $test_mode . $non_3d . $merchant_salt;

    $paytr_token = base64_encode(hash_hmac('sha256', $hash_str, $merchant_key, true));

    ?>
    <section class="container my-5">
    <h2>Ödeme Yap</h2>
    <p class="lead"> ödeme yapmanız gerekmektedir.</p>
    <form action="https://www.paytr.com/odeme" method="post">
    Kart Sahibi Adı: <input type="text" name="cc_owner" value="TEST KARTI"><br>
    Kart Numarası: <input type="text" name="card_number" value="9792030394440796"><br>
    Kart Son Kullanma Ay: <input type="text" name="expiry_month" value="12"><br>
    Kart Son Kullanma Yıl: <input type="text" name="expiry_year" value="30"><br>
    Kart Güvenlik Kodu: <input type="text" name="cvv" value="000"><br>
    <input type="hidden" name="merchant_id" value="<?php echo $merchant_id; ?>">
    <input type="hidden" name="user_ip" value="<?php echo $user_ip; ?>">
    <input type="hidden" name="merchant_oid" value="<?php echo $merchant_oid; ?>">
    <input type="hidden" name="email" value="<?php echo $email; ?>">
    <input type="hidden" name="payment_type" value="card">
    <input type="hidden" name="payment_amount" value="<?php echo $payment_amount; ?>">
    <input type="hidden" name="currency" value="TL">
    <input type="hidden" name="test_mode" value="<?php echo $test_mode; ?>">
    <input type="hidden" name="non_3d" value="<?php echo $non_3d; ?>">
    <input type="hidden" name="merchant_ok_url" value="<?php echo $merchant_ok_url; ?>">
    <input type="hidden" name="merchant_fail_url" value="<?php echo $merchant_fail_url; ?>">
    <input type="hidden" name="user_basket" value="<?php echo $user_basket; ?>">
    <input type="hidden" name="client_lang" value="<?php echo $client_lang; ?>">
    <input type="hidden" name="paytr_token" value="<?php echo $paytr_token; ?>">
    <input type="hidden" name="installment_count" value="0">
    <input type="hidden" name="no_installment" value="0">
    <input type="hidden" name="max_installment" value="1">
    <input type="hidden" name="user_name" value="<?php echo $user_name; ?>">
    <input type="hidden" name="user_address" value="<?php echo $user_address; ?>">
    <input type="hidden" name="user_phone" value="<?php echo $user_phone; ?>">
    <input type="hidden" name="client_lang" value="<?php echo $client_lang; ?>">
    <input type="hidden" name="lang" value="<?php echo $client_lang; ?>">
    <input type="submit" value="Ödeme Yap">
    </form>
    </section>
    <?php
    } else {
    echo "<p class='text-danger'>Kullanıcı bilgileri bulunamadı. Lütfen tekrar deneyin.</p>";
    }
    } else {
    echo "<p class='text-danger'>CV bilgileri bulunamadı. Lütfen tekrar deneyin.</p>";
    }
    } else {
    echo "<p class='text-danger'>CV ID bulunamadı. Lütfen tekrar deneyin.</p>";
    }
    include('../include/footer.php');
    ?>

    Öneriler:

    1. paytr_token oluşturulurken sadece bir kez base64 ile encode etmelisiniz. Yukarıdaki düzenlenmiş kodda bu düzeltilmiştir.


    2. Eğer hâlâ aynı hatayı alıyorsanız, PayTR destek ekibine paytr_token oluşturma sürecinizi ve kullandığınız parametreleri iletebilirsiniz.


    Chatgpt ile baktım
  • 19-10-2024, 21:02:50
    #8
    karakaya26 adlı üyeden alıntı: mesajı görüntüle
    olmadı hocam yine {"status":"failed","reason":"paytr_token gonderilmedi veya gecersiz"} diyor.



    anlamadım hocam 1 kere yazılı ama

    buradaki fazla olanı silin hocam
  • 19-10-2024, 21:50:26
    #9
    MODLOFF adlı üyeden alıntı: mesajı görüntüle
    <?php
    session_start(); // Oturum başlatma
    // Hataları göster
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    error_reporting(E_ALL);
    
    $title = "Ödeme Sayfası";
    include('../include/header.php'); // Header dosyasını dahil et
    include('../include/db.php'); // Veritabanı bağlantısı
    
    // Kullanıcı giriş kontrolü
    if (!isset($_SESSION['kullanici_id'])) {
        header("Location: /giris-yap");
        exit;
    }
    
    $cv_id = $_GET['cv_id'] ?? null;
    $kullanici_id = $_SESSION['kullanici_id'];
    
    if ($cv_id) {
        // CV bilgilerini al
        $sorgu = $conn->prepare("SELECT * FROM cv_liste WHERE id = ? AND kullanici_id = ?");
        $sorgu->execute([$cv_id, $kullanici_id]);
        $cv = $sorgu->fetch(PDO::FETCH_ASSOC);
    
        if ($cv) {
            // Kullanıcı bilgilerini al
            $kullanici_sorgu = $conn->prepare("SELECT * FROM kullanicilar WHERE id = ?");
            $kullanici_sorgu->execute([$kullanici_id]);
            $kullanici = $kullanici_sorgu->fetch(PDO::FETCH_ASSOC);
    
            if ($kullanici) {
                // Ödeme için gerekli bilgiler
                $merchant_id = '487290'; // Merchant ID
                $merchant_key = 'EySp4NBzPFbhM73A'; // Merchant Key
                $merchant_salt = 'pcr6ASMogHCAFr2n'; // Merchant Salt
                $email = $kullanici['email'] ?? null; // Kullanıcının email adresi
                $payment_amount = 5000; // Ödeme tutarı (kuruş cinsinden)
                $user_basket = base64_encode(json_encode([
                    ["CV " . ($cv['cv_adi'] ?? 'Bilinmeyen'), "50.00", 1]
                ]));
                $merchant_oid = uniqid(); // Ödeme işlemi için benzersiz bir ID
                $merchant_ok_url = "http://site-ismi/basarili";
                $merchant_fail_url = "http://site-ismi/basarisiz";
                $test_mode = "1"; // Test modu aktif
                $non_3d = "0";
                $client_lang = "tr";
                $installment_count = "1"; // Varsayılan taksit sayısı
                $user_name = $kullanici['ad'] . ' ' . $kullanici['soyad'];
                $user_address = $kullanici['adres'] ?? 'Adres bilgisi girilmemiş';
                $user_phone = $kullanici['telefon'] ?? 'Telefon bilgisi girilmemiş';
    
                // Kullanıcı email kontrolü
                if (empty($email)) {
                    echo "<p class='text-danger'>Kullanıcı email bilgisi bulunamadı. Lütfen tekrar deneyin.</p>";
                    exit;
                }
    
                // IP adresini al
                if (isset($_SERVER["HTTP_CLIENT_IP"])) {
                    $user_ip = $_SERVER["HTTP_CLIENT_IP"];
                } elseif (isset($_SERVER["HTTP_X_FORWARDED_FOR"])) {
                    $user_ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
                } else {
                    $user_ip = $_SERVER["REMOTE_ADDR"];
                }
    
                // Güvenlik imzası oluşturma
                $payment_type = 'card';
                $currency = 'TL';
    
                // Hash stringi oluşturma
                $hash_str = $merchant_id . $user_ip . $merchant_oid . $email . $payment_amount . $payment_type . $installment_count . $currency . $test_mode . $non_3d . $merchant_salt;
    
                // paytr_token hesaplama
                $paytr_token = base64_encode(hash_hmac('sha256', $hash_str, $merchant_key, true));
    
                // Ödeme formu
                ?>
                <section class="container my-5">
                    <h2>Ödeme Yap</h2>
                    <p class="lead">CV'nizi indirip görüntüleyebilmek için ödeme yapmanız gerekmektedir.</p>
                    <form action="https://www.paytr.com/odeme" method="post">
                        Kart Sahibi Adı: <input type="text" name="cc_owner" value="TEST KARTI"><br>
                        Kart Numarası: <input type="text" name="card_number" value="9792030394440796"><br>
                        Kart Son Kullanma Ay: <input type="text" name="expiry_month" value="12"><br>
                        Kart Son Kullanma Yıl: <input type="text" name="expiry_year" value="30"><br>
                        Kart Güvenlik Kodu: <input type="text" name="cvv" value="000"><br>
                        <input type="hidden" name="merchant_id" value="<?php echo $merchant_id; ?>">
                        <input type="hidden" name="user_ip" value="<?php echo $user_ip; ?>">
                        <input type="hidden" name="merchant_oid" value="<?php echo $merchant_oid; ?>">
                        <input type="hidden" name="email" value="<?php echo $email; ?>">
                        <input type="hidden" name="payment_type" value="card">
                        <input type="hidden" name="payment_amount" value="<?php echo $payment_amount; ?>">
                        <input type="hidden" name="currency" value="TL">
                        <input type="hidden" name="test_mode" value="<?php echo $test_mode; ?>">
                        <input type="hidden" name="non_3d" value="<?php echo $non_3d; ?>">
                        <input type="hidden" name="merchant_ok_url" value="<?php echo $merchant_ok_url; ?>">
                        <input type="hidden" name="merchant_fail_url" value="<?php echo $merchant_fail_url; ?>">
                        <input type="hidden" name="user_basket" value="<?php echo $user_basket; ?>">
                        <input type="hidden" name="client_lang" value="<?php echo $client_lang; ?>">
                        <input type="hidden" name="paytr_token" value="<?php echo $paytr_token; ?>">
                        <input type="hidden" name="installment_count" value="0">
                        <input type="hidden" name="no_installment" value="0">
                        <input type="hidden" name="max_installment" value="1">
                        <input type="hidden" name="user_name" value="<?php echo $user_name; ?>">
                        <input type="hidden" name="user_address" value="<?php echo $user_address; ?>">
                        <input type="hidden" name="user_phone" value="<?php echo $user_phone; ?>">
                        <input type="hidden" name="client_lang" value="<?php echo $client_lang; ?>">
                        <input type="hidden" name="lang" value="<?php echo $client_lang; ?>">
                        <input type="submit" value="Ödeme Yap">
                    </form>
                </section>
                <?php
            } else {
                echo "<p class='text-danger'>Kullanıcı bilgileri bulunamadı. Lütfen tekrar deneyin.</p>";
            }
        } else {
            echo "<p class='text-danger'>CV bilgileri bulunamadı. Lütfen tekrar deneyin.</p>";
        }
    } else {
        echo "<p class='text-danger'>CV ID bulunamadı. Lütfen tekrar deneyin.</p>";
    }
    
    include('../include/footer.php'); // Footer dosyasını dahil et
    ?>
    tekrar deneyebilir misiniz
    gorev adlı üyeden alıntı: mesajı görüntüle
    Bu hata, paytr_token değeriyle ilgili bir sorun olduğunu gösteriyor. paytr_token, PayTR API'sine gönderilmesi gereken güvenlik imzasıdır ve doğru şekilde oluşturulması gerekir. Aşağıdaki adımları kontrol ederek hatayı çözebilirsiniz:

    1. Hash oluşturma işlemini düzeltin:

    Kodun içinde iki kez paytr_token oluşturulmuş, bu gereksiz ve kafa karıştırıcı olabilir. Şu satırları birleştirin ve doğru sırada hash oluşturduğunuzdan emin olun:

    $hash_str = $merchant_id . $user_ip . $merchant_oid . $email . $payment_amount . $payment_type . $installment_count . $currency . $test_mode . $non_3d . $merchant_salt;
    $paytr_token = base64_encode(hash_hmac('sha256', $hash_str, $merchant_key, true));

    Bu satırları bir kez çalıştırdıktan sonra doğru paytr_token oluşturulacak.

    2. Kodun düzenlenmiş hali:

    <?php
    include('../include/header.php');
    include('../include/db.php');

    if (!isset($_SESSION['kullanici_id'])) {
    header("Location: /giris-yap");
    exit;
    }

    $cv_id = $_GET['cv_id'] ?? null;
    $kullanici_id = $_SESSION['kullanici_id'];

    if ($cv_id) {
    $sorgu = $conn->prepare("SELECT * FROM cv_liste WHERE id = ? AND kullanici_id = ?");
    $sorgu->execute([$cv_id, $kullanici_id]);
    $cv = $sorgu->fetch(PDO::FETCH_ASSOC);

    if ($cv) {
    $kullanici_sorgu = $conn->prepare("SELECT * FROM kullanicilar WHERE id = ?");
    $kullanici_sorgu->execute([$kullanici_id]);
    $kullanici = $kullanici_sorgu->fetch(PDO::FETCH_ASSOC);

    if ($kullanici) {
    $merchant_id = '480';
    $merchant_key = 'EySp4NBzPF3A';
    $merchant_salt = 'pcr6ffAdr2n';
    $email = $kullanici['email'] ?? null;
    $payment_amount = 5000;
    $user_basket = base64_encode(json_encode([["CV " . ($cv['cv_adi'] ?? 'Bilinmeyen'), "50.00", 1]]));
    $merchant_oid = uniqid();
    $merchant_ok_url = "http://site-ismi/basarili";
    $merchant_fail_url = "http://site-ismi/basarisiz";
    $test_mode = "1";
    $non_3d = "0";
    $client_lang = "tr";
    $installment_count = "1";
    $user_name = $kullanici['ad'] . ' ' . $kullanici['soyad'];
    $user_address = $kullanici['adres'] ?? 'Adres bilgisi girilmemiş';
    $user_phone = $kullanici['telefon'] ?? 'Telefon bilgisi girilmemiş';

    if (empty($email)) {
    echo "<p class='text-danger'>Kullanıcı email bilgisi bulunamadı. Lütfen tekrar deneyin.</p>";
    exit;
    }

    if (isset($_SERVER["HTTP_CLIENT_IP"])) {
    $user_ip = $_SERVER["HTTP_CLIENT_IP"];
    } elseif (isset($_SERVER["HTTP_X_FORWARDED_FOR"])) {
    $user_ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
    } else {
    $user_ip = $_SERVER["REMOTE_ADDR"];
    }

    $payment_type = 'card';
    $currency = 'TL';
    $hash_str = $merchant_id . $user_ip . $merchant_oid . $email . $payment_amount . $payment_type . $installment_count . $currency . $test_mode . $non_3d . $merchant_salt;

    $paytr_token = base64_encode(hash_hmac('sha256', $hash_str, $merchant_key, true));

    ?>
    <section class="container my-5">
    <h2>Ödeme Yap</h2>
    <p class="lead"> ödeme yapmanız gerekmektedir.</p>
    <form action="https://www.paytr.com/odeme" method="post">
    Kart Sahibi Adı: <input type="text" name="cc_owner" value="TEST KARTI"><br>
    Kart Numarası: <input type="text" name="card_number" value="9792030394440796"><br>
    Kart Son Kullanma Ay: <input type="text" name="expiry_month" value="12"><br>
    Kart Son Kullanma Yıl: <input type="text" name="expiry_year" value="30"><br>
    Kart Güvenlik Kodu: <input type="text" name="cvv" value="000"><br>
    <input type="hidden" name="merchant_id" value="<?php echo $merchant_id; ?>">
    <input type="hidden" name="user_ip" value="<?php echo $user_ip; ?>">
    <input type="hidden" name="merchant_oid" value="<?php echo $merchant_oid; ?>">
    <input type="hidden" name="email" value="<?php echo $email; ?>">
    <input type="hidden" name="payment_type" value="card">
    <input type="hidden" name="payment_amount" value="<?php echo $payment_amount; ?>">
    <input type="hidden" name="currency" value="TL">
    <input type="hidden" name="test_mode" value="<?php echo $test_mode; ?>">
    <input type="hidden" name="non_3d" value="<?php echo $non_3d; ?>">
    <input type="hidden" name="merchant_ok_url" value="<?php echo $merchant_ok_url; ?>">
    <input type="hidden" name="merchant_fail_url" value="<?php echo $merchant_fail_url; ?>">
    <input type="hidden" name="user_basket" value="<?php echo $user_basket; ?>">
    <input type="hidden" name="client_lang" value="<?php echo $client_lang; ?>">
    <input type="hidden" name="paytr_token" value="<?php echo $paytr_token; ?>">
    <input type="hidden" name="installment_count" value="0">
    <input type="hidden" name="no_installment" value="0">
    <input type="hidden" name="max_installment" value="1">
    <input type="hidden" name="user_name" value="<?php echo $user_name; ?>">
    <input type="hidden" name="user_address" value="<?php echo $user_address; ?>">
    <input type="hidden" name="user_phone" value="<?php echo $user_phone; ?>">
    <input type="hidden" name="client_lang" value="<?php echo $client_lang; ?>">
    <input type="hidden" name="lang" value="<?php echo $client_lang; ?>">
    <input type="submit" value="Ödeme Yap">
    </form>
    </section>
    <?php
    } else {
    echo "<p class='text-danger'>Kullanıcı bilgileri bulunamadı. Lütfen tekrar deneyin.</p>";
    }
    } else {
    echo "<p class='text-danger'>CV bilgileri bulunamadı. Lütfen tekrar deneyin.</p>";
    }
    } else {
    echo "<p class='text-danger'>CV ID bulunamadı. Lütfen tekrar deneyin.</p>";
    }
    include('../include/footer.php');
    ?>

    Öneriler:

    1. paytr_token oluşturulurken sadece bir kez base64 ile encode etmelisiniz. Yukarıdaki düzenlenmiş kodda bu düzeltilmiştir.


    2. Eğer hâlâ aynı hatayı alıyorsanız, PayTR destek ekibine paytr_token oluşturma sürecinizi ve kullandığınız parametreleri iletebilirsiniz.


    Chatgpt ile baktım
    Decentralized adlı üyeden alıntı: mesajı görüntüle

    buradaki fazla olanı silin hocam

    {"status":"failed","reason":"paytr_token gonderilmedi veya gecersiz"}

    hala aynı hatayı veriyor hocam.