• 11-02-2022, 15:57:54
    #1
    PAYTR de test işlemleri sorunsuz ve başarılı şekilde geri dönüş yapabiliyorken ve siparişi sorunsuz alıyorken bir türlü onların istediği gibi callback girebilmiş değilim. Bu konuda yardımcı olabilecek arkadaş varmıdır?
    NOT: Bir sanal pos addonsu içinde birden fazla ödeme sistemi entegre edilmiştir.
    Yazışmalar aşağıdaki gibidir!


    Normal geri dönüş bildirimi verdiği URL resimde görebilirsiniz.

    https://prnt.sc/26q46k5

    Cevap
    1- merchant_ok_url ile Bildirim URL birbirinden tamamen çok farklı iki apayrı konudur (entegrasyon dokümanı içerisinde bu farklılık özellikle vurgulanmaktadır).
    2- Müşteri işlem sonrası merchant_ok_url 'e yönlendirilir.
    3- merchant_ok_url sitenizin ana sayfası ya da siparişlerin görüntülendiği müşteri paneli adresi olabilir, örneğin siteniz.com/siparisler
    4- Bildirim URL, Paytr Mağaza Paneli > Ayarlar sayfasından eklediğiniz ve ödeme sonuçlarının iletileceği sayfadır.
    5- Bildirim URL'e "siz istek yapamazsınız".
    6- Bildirim URL'e ödeme işlemi sonrası yapılan kontrollerin ardından PayTR işlem sonucunu iletir.
    7- Bu işlem sonucu POST içeriğinde birkaç bilgi ile birlikte iletilir. Siz bu bilgiler ile birlikte gelen success ya da failed cevabına göre sitenizden siparişi onaylar veya iptal edersiniz.

    PAYTR kod dosyası içeriği aşağıdaki gibidir
    HIDDEN
  • 15-02-2022, 00:13:10
    #2
    @dinarbey tarafından sorun saniyeler içinde sorunsuzca çözülmüştür. Konu kapanmıştır.
  • 17-04-2022, 01:23:36
    #3
    subpower adlı üyeden alıntı: mesajı görüntüle
    paytr de test işlemleri sorunsuz ve başarılı şekilde geri dönüş yapabiliyorken ve siparişi sorunsuz alıyorken bir türlü onların istediği gibi callback girebilmiş değilim. Bu konuda yardımcı olabilecek arkadaş varmıdır?
    Not: Bir sanal pos addonsu içinde birden fazla ödeme sistemi entegre edilmiştir.
    Yazışmalar aşağıdaki gibidir!


    Normal geri dönüş bildirimi verdiği url resimde görebilirsiniz.

    https://prnt.sc/26q46k5

    cevap
    1- merchant_ok_url ile bildirim url birbirinden tamamen çok farklı iki apayrı konudur (entegrasyon dokümanı içerisinde bu farklılık özellikle vurgulanmaktadır).
    2- müşteri işlem sonrası merchant_ok_url 'e yönlendirilir.
    3- merchant_ok_url sitenizin ana sayfası ya da siparişlerin görüntülendiği müşteri paneli adresi olabilir, örneğin siteniz.com/siparisler
    4- bildirim url, paytr mağaza paneli > ayarlar sayfasından eklediğiniz ve ödeme sonuçlarının iletileceği sayfadır.
    5- bildirim url'e "siz istek yapamazsınız".
    6- bildirim url'e ödeme işlemi sonrası yapılan kontrollerin ardından paytr işlem sonucunu iletir.
    7- bu işlem sonucu post içeriğinde birkaç bilgi ile birlikte iletilir. Siz bu bilgiler ile birlikte gelen success ya da failed cevabına göre sitenizden siparişi onaylar veya iptal edersiniz.

    Paytr kod dosyası içeriği aşağıdaki gibidir
    <?php
    //echo '<pre>'; print_r($processor_data); print_r($order_info); die;
    //echo '<pre>'; print_r($_request); die;
    if (defined('payment_notification')) {
          $orderid = $_request['order_id'];
        if (!empty($orderid)) {
              fn_payments_set_company_id($orderid);
          }
        if ($mode == 'notify') {
          if (!empty($_request['status']) && $_request['status'] == 'success') {          
            $pp_response['order_status']   = 'p';
            $pp_response['reason_text']    = __('transaction_approved');
            //$pp_response['reference_id'] = $result->data->virtualposorderid;
           } else {
             $pp_response['order_status'] = 'f';
             $pp_response['reason_text'] = __('transaction_declined');
           }
           fn_finish_payment($orderid, $pp_response);
           fn_order_placement_routines('route', $orderid);
        }
      exit;    
    }
    $orderitemsdata = [];
    foreach($order_info['products'] as $product)
    {
        $productdata = [];
        $productdata[] = $product['product'];
        $productdata[] = $product['price'];
        $productdata[] = $product['amount'];
        $orderitemsdata[] = $productdata;
    }
    $merchantid = $processor_data['processor_params']['paytr']['merchantid'];
    $merchantkey = $processor_data['processor_params']['paytr']['merchantkey'];
    $merchantsalt = $processor_data['processor_params']['paytr']['merchantsalt'];
    $orderid = $order_info['order_id'];
    $merchantorderid = $orderid."a".time();
    $successurl = fn_url("payment_notification.notify?payment=multipayment&multipayment_option=paytr&status=success&order_id=$orderid");
    $failurl = fn_url("payment_notification.notify?payment=multipayment&multipayment_option=paytr&status=fail&order_id=$orderid");
    $userip = $order_info['ip_address'];
    $useremail = $order_info['email'];
    $username = $order_info['firstname'].' '.$order_info['lastname'];
    $useraddress = $order_info['b_address'].', '.$order_info['b_city'].', '.$order_info['b_state'];
    $userphone = preg_replace('/[^0-9+\-]/', '', $order_info['phone']);
    $paymentamount = $order_info['total']*100;
    $userbasket = base64_encode(json_encode($orderitemsdata));
    $noinstallment = 0;
    $maxinstallment = 0;
    $currency = ($order_info['secondary_currency'] == 'try' ? 'tl' : $order_info['secondary_currency']);
    $lang = 2;
    $debugon = 1;
    $testmode = 0;
    $paytrlang = ($lang == 1 ? 'tr' : 'en');
    $paytrurl = 'https://www.paytr.com/odeme/api/get-token';
    $hashstr = $merchantid.$userip.$merchantorderid.$useremail.$paymentamount.$userbasket.$noinstallment.$maxinstallment.$currency.$testmode;
    $paytrtoken = base64_encode(hash_hmac('sha256', $hashstr.$merchantsalt, $merchantkey, true));
    $postvals = array(
                    'merchant_id' => $merchantid,
                    'user_ip' => $userip,
                    'merchant_oid' => $merchantorderid,
                    'email' => $useremail,
                    'payment_amount' => $paymentamount,
                    'paytr_token' => $paytrtoken,
                    'user_basket' => $userbasket,
                    'debug_on' => $debugon,
                    'no_installment' => $noinstallment,
                    'max_installment' => $maxinstallment,
                    'user_name' => $username,
                    'user_address' => $useraddress,
                    'user_phone' => $userphone,
                    'currency' => $currency,
                    'merchant_fail_url' => $failurl,
                    'merchant_ok_url' => $successurl,
                    'lang' => $paytrlang,
                    'test_mode' => $testmode,
                );
    //echo '<pre>'; print_r($postvals); echo '</pre>';
    $ch = curl_init();
    curl_setopt($ch, curlopt_url, $paytrurl);
    curl_setopt($ch, curlopt_returntransfer, 1);
    curl_setopt($ch, curlopt_post, 1) ;
    curl_setopt($ch, curlopt_postfields, $postvals);
    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 = #r10etiket0#
    $paytrresponse = $result;
    if(curl_errno($ch))
    {
        $paytrresponse = curl_error($ch);    
    }
    curl_close($ch);
    $paytrresponsedata = json_decode($paytrresponse, true);
    //echo '<pre>'; print_r($paytrresponsedata); die;
    if(isset($paytrresponsedata['status']) && $paytrresponsedata['status'] == 'success' && isset($paytrresponsedata['token']))
    {
        $paytrtokenurl = "https://www.paytr.com/odeme/guvenli/".$paytrresponsedata['token'];
        fn_create_payment_form($paytrtokenurl, array(), 'multipay paytr pos', false, 'get');
        exit;
    ?>
    
    <?php
    } else {    
        $pp_response['order_status'] = 'f';
        $pp_response['reason_text'] = 'oops something went wrong please try again';
    }
    fn_finish_payment($orderid, $pp_response);
    fn_order_placement_routines('route', $orderid);
    exit;
    bana bu eklentiden lazim yardimci olabilir misin?
  • 20-04-2022, 18:37:36
    #4
    sakurt adlı üyeden alıntı: mesajı görüntüle
    bana bu eklentiden lazim yardimci olabilir misin?
    Ücret mukabilinde yardımcı olabilirim. Eklentide 1 den farklı ödeme desteklemektedir 2,5K (2.500₺) ya satabilirim. İçinde şu anda hazır olmak için eklenenler aşağıda listeliyorum. Açık kaynak istediğin gibi geliştirip değiştirebilir istersen sende satabilirsin. Telif melif gibi bir takıntım yok.
    Iyzico POS
    Moka POS
    PayTR POS
    Paym.Es POS
    Esnek POS
    Payu POS
    Blockonomics CO
  • 21-04-2022, 19:13:40
    #5
    Subpower adlı üyeden alıntı: mesajı görüntüle
    Ücret mukabilinde yardımcı olabilirim. Eklentide 1 den farklı ödeme desteklemektedir 2,5K ya satabilirim. Açık kaynak istediğin gibi geliştirip değiştirebilir istersen sende satabilirsin. Telif melif gibi bir takıntım yok.
    Iyzico POS
    Moka POS
    PayTR POS
    Paym.Es POS
    Esnek POS
    Payu POS
    Blockonomics CO
    BURDA işime yarayacak 2 ödeme var iyzico paytr... makul fiyata alırım.
  • 21-04-2022, 19:32:00
    #6
    sakurt adlı üyeden alıntı: mesajı görüntüle
    BURDA işime yarayacak 2 ödeme var iyzico paytr... makul fiyata alırım.
    Tabi ki... Bol şans.
  • 13-07-2022, 01:50:28
    #7
    transaction id döndürmüyor mu paytr?
  • 13-07-2022, 13:01:03
    #8
    Cycl0ne adlı üyeden alıntı: mesajı görüntüle
    transaction id döndürmüyor mu paytr?
    Sorun çözülmüştür. Teşelkkürler ilgi için.