• 13-08-2023, 08:05:32
    #1
    ödeme kısmında random key oluşturuyorun db kadetip merchant_oid e eşitliyorum random keyi ama bildirim kısmında merchant_oid boş dönüyor nedeni nedir sizce ?


    bidirim sayfasındaki kodlarda bu
    require_once '../config/database.php';
    // Mağaza Bilgisi
    $paytr = $db->query("SELECT * FROM paytr");
    $paytr = $paytr->fetch(PDO::FETCH_OBJ);
    $getMerchant_key = $paytr->merchant_key;
    $getMerchant_salt = $paytr->merchant_salt;
    
    ## 2. ADIM için örnek kodlar ##
    ## ÖNEMLİ UYARILAR ##
    ## 1) Bu sayfaya oturum (SESSION) ile veri taşıyamazsınız. Çünkü bu sayfa müşterilerin yönlendirildiği bir sayfa değildir.
    ## 2) Entegrasyonun 1. ADIM'ında gönderdiğniz merchant_oid değeri bu sayfaya POST ile gelir. Bu değeri kullanarak
    ## veri tabanınızdan ilgili siparişi tespit edip onaylamalı veya iptal etmelisiniz.
    ## 3) Aynı sipariş için birden fazla bildirim ulaşabilir (Ağ bağlantı sorunları vb. nedeniyle). Bu nedenle öncelikle
    ## siparişin durumunu veri tabanınızdan kontrol edin, eğer onaylandıysa tekrar işlem yapmayın. Örneği aşağıda bulunmaktadır.
    $post = $_POST;
    echo $orderCode = $post['merchant_oid'];
    
    
    $getCodeSQL = $db->query("SELECT * FROM `users` WHERE orderCode='$orderCode'");
    $getCodeSQL = $getCodeSQL->fetch(PDO::FETCH_OBJ);
    $errMsg = $getCodeSQL->paytr_err_msg;
    ####################### DÜZENLEMESİ ZORUNLU ALANLAR #######################
    #
    ## API Entegrasyon Bilgileri - Mağaza paneline giriş yaparak BİLGİ sayfasından alabilirsiniz.
    $merchant_key   = $getMerchant_key;
    $merchant_salt  = $$getMerchant_salt;
    ###########################################################################
    ####### Bu kısımda herhangi bir değişiklik yapmanıza gerek yoktur. #######
    #
    ## POST değerleri ile hash oluştur.
    $hash = base64_encode(hash_hmac('sha256', $orderCode . $merchant_salt . $post['status'] . $post['total_amount'], $merchant_key, true));
    #
    ## Oluşturulan hash'i, paytr'dan gelen post içindeki hash ile karşılaştır (isteğin paytr'dan geldiğine ve değişmediğine emin olmak için)
    ## Bu işlemi yapmazsanız maddi zarara uğramanız olasıdır.
    if ($hash != $post['hash'])
        die('PAYTR notification failed: bad hash');
    ###########################################################################
    ## BURADA YAPILMASI GEREKENLER
    ## 1) Siparişin durumunu $post['merchant_oid'] değerini kullanarak veri tabanınızdan sorgulayın.
    ## 2) Eğer sipariş zaten daha önceden onaylandıysa veya iptal edildiyse  echo "OK"; exit; yaparak sonlandırın.
    /* Sipariş durum sorgulama örnek
           $durum = SQL
           if($durum == "onay" || $durum == "iptal"){
                echo "OK";
                exit;
            }
         */
    if ($post['status'] == 'success') { ## Ödeme Onaylandı
        // Üyeyi çekilişe ekliyorum
        $join = $db->query("INSERT INTO `participants` (`sweepstake_id`, `user_id`) VALUES ('$getId', '$userId')");
        $count = $join->rowCount();
    } else { ## Ödemeye Onay Verilmedi
    
        $errMsg = $post['failed_reason_msg'];
        $errMsgSQL = $db->query("UPDATE `users` SET `paytr_err_msg`='$errMsg' WHERE orderCode='$orderCode'");
    }
    ## Bildirimin alındığını PayTR sistemine bildir.
    echo "OK";
    exit;

    dönen hata // PAYTR notification failed: bad hash
  • 13-08-2023, 11:28:09
    #2
    Hocam bi var_dump($_POST) veya print_r($_POST) ile paytr den gelen postu yazdırır mısınız neler geliyor bakalım.
  • 13-08-2023, 21:38:25
    #3
    kursatcanciger adlı üyeden alıntı: mesajı görüntüle
    Hocam bi var_dump($_POST) veya print_r($_POST) ile paytr den gelen postu yazdırır mısınız neler geliyor bakalım.
    array(0) { }

    hocam anydesk vereyim bir incelermisniz?