• 15-01-2024, 14:44:25
    #1
    Paytr entegrasyonu için bilgileri dolduruyorum ancak hata alıyorum sebebi ne olabilir?

    Adım 1

    <!doctype html>
    <html>
        <head>
            <meta charset="UTF-8">
        </head>
    
        <?php
    
            $merchant_id = 'xx';
            $merchant_key = 'xxx';
            $merchant_salt = 'xx';
    
            $merchant_ok_url="http://site-ismi/basarili";
            $merchant_fail_url="http://site-ismi/basarisiz";
    
            $user_basket = htmlentities(json_encode(array(
                array("Altis Renkli Deniz Yatağı - Mavi", "18.00", 1),
                array("Pharmasol Güneş Kremi 50+ Yetişkin & Bepanthol Cilt Bakım Kremi", "33,25", 2),
                array("Bestway Çocuklar İçin Plaj Seti Beach Set ÇANTADA DENİZ TOPU-BOT-KOLLUK", "45,42", 1)
            )));
    
            srand(time(null));
            $merchant_oid = rand();
    
            $test_mode="0";
    
            //3d'siz işlem
            $non_3d="0";
    
            //Ödeme süreci dil seçeneği tr veya en
            $client_lang = "tr";
    
            //non3d işlemde, başarısız işlemi test etmek için 1 gönderilir (test_mode ve non_3d değerleri 1 ise dikkate alınır!)
            $non3d_test_failed="0";
    
            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"];
            }
    
            $user_ip = $ip;
    
            $email = "testnon3d@paytr.com";
    
            // 100.99 TL ödeme
            $payment_amount = "100.99";
            $currency="TL";
            //
            $payment_type = "card";
    
    
    //        $card_type = "bonus";       // Alabileceği değerler; advantage, axess, combo, bonus, cardfinans, maximum, paraf, world, saglamkart
    //        $installment_count = "5";
    
            $post_url = "https://www.paytr.com/odeme";
    
            $hash_str = $merchant_id . $user_ip . $merchant_oid . $email . $payment_amount . $payment_type . $installment_count. $currency. $test_mode. $non_3d;
            $token = base64_encode(hash_hmac('sha256',$hash_str.$merchant_salt,$merchant_key,true));
        ?>
    
        <body>
            <form action="<?php echo $post_url;?>" 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="99"><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="<?php echo $payment_type;?>">
              <input type="hidden" name="payment_amount" value="<?php echo $payment_amount;?>">
              <input type="hidden" name="currency" value="<?php echo $currency;?>">
              <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_name" value="Paytr Test">
              <input type="hidden" name="user_address" value="test test test">
              <input type="hidden" name="user_phone" value="05555555555">
              <input type="hidden" name="user_basket" value="<?php echo $user_basket; ?>">
              <input type="hidden" name="debug_on" value="1">
              <input type="hidden" name="client_lang" value="<?php echo $client_lang; ?>">
              <input type="hidden" name="paytr_token" value="<?php echo $token; ?>">
              <input type="hidden" name="non3d_test_failed" value="<?php echo $non3d_test_failed; ?>">
              <input type="hidden" name="installment_count" value="<?php echo $installment_count; ?>">
              <input type="hidden" name="card_type" value="<?php echo $card_type; ?>">
              <input type="submit" value="Submit">
            </form>
        </body>
    </html>
    Adım2

    <?php
    
        ## 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;
    
        ####################### DÜZENLEMESİ ZORUNLU ALANLAR #######################
        #
        ## API Entegrasyon Bilgileri - Mağaza paneline giriş yaparak BİLGİ sayfasından alabilirsiniz.
        $merchant_key     = 'YYYYYYYYYYYYYY';
        $merchant_salt    = 'ZZZZZZZZZZZZZZ';
        ###########################################################################
    
        ####### 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', $post['merchant_oid'].$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ı
    
            ## BURADA YAPILMASI GEREKENLER
            ## 1) Siparişi onaylayın.
            ## 2) Eğer müşterinize mesaj / SMS / e-posta gibi bilgilendirme yapacaksanız bu aşamada yapmalısınız.
            ## 3) 1. ADIM'da gönderilen payment_amount sipariş tutarı taksitli alışveriş yapılması durumunda
            ## değişebilir. Güncel tutarı $post['total_amount'] değerinden alarak muhasebe işlemlerinizde kullanabilirsiniz.
    
        } else { ## Ödemeye Onay Verilmedi
    
            ## BURADA YAPILMASI GEREKENLER
            ## 1) Siparişi iptal edin.
            ## 2) Eğer ödemenin onaylanmama sebebini kayıt edecekseniz aşağıdaki değerleri kullanabilirsiniz.
            ## $post['failed_reason_code'] - başarısız hata kodu
            ## $post['failed_reason_msg'] - başarısız hata mesajı
    
        }
    
        ## Bildirimin alındığını PayTR sistemine bildir.
        echo "OK";
        exit;
    ?>
  • 15-01-2024, 14:46:33
    #2
    aldığınız hatayı da yazsaydınız keşke...
    imzam da ki konudan kodları inceleyebilirsiniz.
  • 15-01-2024, 14:47:14
    #3
    MEG adlı üyeden alıntı: mesajı görüntüle
    aldığınız hatayı da yazsaydınız keşke...
    imzam da ki konudan kodları inceleyebilirsiniz.
    eğer yapamazsanız ücretli destek de olabilirim. Özel mesaj atabilirsiniz.
  • 15-01-2024, 14:48:07
    #4
    MEG adlı üyeden alıntı: mesajı görüntüle
    aldığınız hatayı da yazsaydınız keşke...
    imzam da ki konudan kodları inceleyebilirsiniz.
    Hata kodum

    Uncaught ArgumentCountError: time() expects exactly 0 arguments, 1 given in C:xampphtdocsdashboardPayTR Direkt APIPayTR Direkt APIDirekt API - Türkçe1. ADIM1. ADIM .PHP Örnekdirect_api_ornek.php:22 Stack trace: #0 C:xampphtdocsdashboardPayTR Direkt APIPayTR Direkt APIDirekt API - Türkçe1. ADIM1. ADIM .PHP Örnekdirect_api_ornek.php(22): time(NULL) #1 {main} thrown in C:xampphtdocsdashboardPayTR Direkt APIPayTR Direkt APIDirekt API - Türkçe1. ADIM1. ADIM .PHP Örnekdirect_api_ornek.php on line 22
  • 15-01-2024, 14:58:35
    #5
    Üyeliği durduruldu
    Konu takip
  • 15-01-2024, 15:14:38
    #6
    özelden anydesk gönderin bakalım hocam
  • 15-01-2024, 15:45:06
    #7
    SinanSS adlı üyeden alıntı: mesajı görüntüle
    özelden anydesk gönderin bakalım hocam
    Gönderdim hocam
  • 15-01-2024, 15:49:13
    #8
    cihan6797 adlı üyeden alıntı: mesajı görüntüle
    Hata kodum

    Uncaught ArgumentCountError: time() expects exactly 0 arguments, 1 given in C:xampphtdocsdashboardPayTR Direkt APIPayTR Direkt APIDirekt API - Türkçe1. ADIM1. ADIM .PHP Örnekdirect_api_ornek.php:22 Stack trace: #0 C:xampphtdocsdashboardPayTR Direkt APIPayTR Direkt APIDirekt API - Türkçe1. ADIM1. ADIM .PHP Örnekdirect_api_ornek.php(22): time(NULL) #1 {main} thrown in C:xampphtdocsdashboardPayTR Direkt APIPayTR Direkt APIDirekt API - Türkçe1. ADIM1. ADIM .PHP Örnekdirect_api_ornek.php on line 22
    1. adımdaki 22.satırdaki srand(time(null)); kodu silip dener misiniz