ARisan

مشکل Rsform

3 پست در این موضوع

سلام ،‌ یه راهنمایی میخواستم از دوستان

من یه پلاگین پرداخت بانک ملت برای  rsform نصب کردم که زمانی پرداخت با موفقیت انجام میشه متاسفانه شماره ارجاع بانک در سیستم ذخیره نمیشه .

که طبق عکس میخواستم داخل table جلوی گزینه payment ثبت بشه .

لطفا راهنمایی کنید در این فایل کد نویسی شده php به شرح زیر چه تغییری انجام بدم . باتشکر

<?php
/*------------------------------------------------------------------------
# Hikashop - Mellat Payment Plugin
# ------------------------------------------------------------------------
# author    P30template.com - Develop department
# copyright Copyright (C) 2012 P30template.com. All Rights Reserved.
# @license - http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
# Websites: https://P30template.com
# Technical Support: https://p30template.com/client-area/support/dashboard.html
-------------------------------------------------------------------------*/
defined('_JEXEC') or die('Restricted access');

class plgHikashoppaymentMellat extends JPlugin
{
    var $debugData = array();
    function onPaymentDisplay(&$order,&$methods,&$usable_methods){
        if(!empty($methods)){
            foreach($methods as $method){
                if($method->payment_type!='mellat' || !$method->enabled){
                    continue;
                }
                if(!empty($method->payment_zone_namekey)){
                    $zoneClass=hikashop_get('class.zone');
                    $zones = $zoneClass->getOrderZones($order);
                    if(!in_array($method->payment_zone_namekey,$zones)){
                        return true;
                    }
                }

                $usable_methods[$method->ordering]=$method;
            }
        }
        return true;
    }

    function onPaymentSave(&$cart,&$rates,&$payment_id){
        $usable = array();
        $this->onPaymentDisplay($cart,$rates,$usable);
        $payment_id = (int) $payment_id;
        foreach($usable as $usable_method){
            if($usable_method->payment_id==$payment_id){
                return $usable_method;
            }
        }
        return false;
    }

    function getVars($order,$methods,$method_id)
    {

        $method =& $methods[$method_id];
        $currencyClass = hikashop_get('class.currency');
        $currencies=null;
        $currencies = $currencyClass->getCurrencies($order->order_currency_id,$currencies);
        $currency=$currencies[$order->order_currency_id];
        $user = hikashop_loadUser(true);
        $lang = &JFactory::getLanguage();
        $locale=strtolower(substr($lang->get('tag'),0,2));
        global $Itemid;
        $url_itemid='';
        if(!empty($Itemid)){
            $url_itemid='&Itemid='.$Itemid;
        }

        $callback_url = HIKASHOP_LIVE.'index.php?option=com_content&view=article&id=93';

        $accept_url = HIKASHOP_LIVE.'index.php?option=com_hikashop&ctrl=checkout&task=after_end&order_id='.$order->order_id.$url_itemid;
        
        $decline_url = HIKASHOP_LIVE.'index.php?option=com_hikashop&ctrl=order&task=cancel_order&order_id='.$order->order_id.$url_itemid;

        if($method->payment_params->addfee == 1)
        {
            $addfee = 1;
        }
        else
        {
            $addfee = 0;
        }
        

        require_once (JPATH_ROOT .'/plugins/hikashoppayment/mellat/bank/nusoap.php');         
        
        
        $terminalId      = $method->payment_params->terminalid;
        $userName        = $method->payment_params->username;
        $userPassword    = $method->payment_params->userpassword;
        $ircurrency      = $method->payment_params->ircurrency;


    $client = new nusoap_client('https://bpm.shaparak.ir/pgwchannel/services/pgw?wsdl');
    $namespace='http://interfaces.core.sw.bps.com/';
    
        $orderId = $order->order_id; 
        $amount = $order->order_full_price;  
        if($ircurrency=='toman')$amount=$amount*10;
        $localDate = date("Ymd");
        $localTime = date("His");
        $additionalData = '';
        $callBackUrl = $callback_url;
        $payerId = 0;

        $err = $client->getError();
        if ($err) {
            echo '<h2>Constructor error</h2><pre>' . $err . '</pre>';
            return;
        }     
        $parameters = array(
            'terminalId' => $terminalId,
            'userName' => $userName,
            'userPassword' => $userPassword,
            'orderId' => $orderId,
            'amount' => $amount,
            'localDate' => $localDate,
            'localTime' => $localTime,
            'additionalData' => $additionalData,
            'callBackUrl' => $callBackUrl,
            'payerId' => $payerId);

        $result = $client->call('bpPayRequest', $parameters, $namespace);
        
        

        if ($client->fault) {
            echo '<h2>اشكال در پرداخت </h2><pre>';
            print_r($result);
            echo '</pre>';
            return;
        } 
        else {

            $err = $client->getError();
            if ($err) {

                echo '<h2>خطايي رخ داده </h2><pre>' . $err . '</pre>';
                return;
            } 
            else {
                $res = explode (',',$result);
                $ResCode = $res[0];

                if ($ResCode == "0") {


        $vars = array(
            "TerminalId" => $terminalId,
            "UserName" => $userName ,
            "UserPassword" => $userPassword,
            "PayDate" => $localDate,
            "PayTime" => $localTime,
            "PayAmount" => $amount,
            "PayOrderId" => $orderId,
            "PayAdditionalData" => $additionalData,
            "PayCallBackUrl" => $callBackUrl ,
            "PayPayerId" => $payerId ,
            "RefId" => $res[1]
        );
        
       
                } 
                else {
                echo '<h2>خطا در اتصال به درگاه بانك </h2>ResCode='.$ResCode.'<br>';
                 echo $this->CheckStatus ($ResCode);
                 print_r($parameters);
                  return; 
                }
            }
        }
        return $vars;
    }

    

    function onAfterOrderConfirm(&$order,&$methods,$method_id){
        $method =& $methods[$method_id];
        $tax_total = '';
        $discount_total = '';

        $vars = $this->getVars($order, $methods, $method_id);
        
        
        if(!HIKASHOP_J30)
            JHTML::_('behavior.mootools');
        else
            JHTML::_('behavior.framework');
        $app =& JFactory::getApplication();
        $name = $method->payment_type.'_end.php';
            $path = JPATH_THEMES.DS.$app->getTemplate().DS.'hikashoppayment'.DS.$name;
            if(!file_exists($path)){
                if(version_compare(JVERSION,'1.6','<')){
                    $path = JPATH_PLUGINS .DS.'hikashoppayment'.DS.$name;
                }else{
                    $path = JPATH_PLUGINS .DS.'hikashoppayment'.DS.$method->payment_type.DS.$name;
                }
                if(!file_exists($path)){
                    return true;
                }
            }
            require($path);
            return true;
        }

    function onPaymentNotification(&$statuses){

        
        $orderid = JRequest::getVar('orderid');

        $pluginsClass = hikashop_get('class.plugins');
        $elements = $pluginsClass->getMethods('payment','mellat');
        


        if(empty($elements)) return false;
        $element = reset($elements);
        
        $terminalId        = $element->payment_params->terminalid;
        $userName          = $element->payment_params->username;
        $userPassword      = $element->payment_params->userpassword;
        $telegram_send     = $element->payment_params->telegram_send;
        $telegram_channel  = $element->payment_params->telegram_channel;
        $telegram_token    = $element->payment_params->telegram_token;
        $telegram_text     = $element->payment_params->telegram_text;
        
        $orderClass = hikashop_get('class.order');
        $dbOrder = $orderClass->get((int)@$orderid);
        

        if(empty($dbOrder)){
            echo "فاکتور مورد تائید نمیباشد ".@$orderid;
            return false;
        }

        
            $refid                   = JRequest::getVar('RefId');
            $rescode                     = JRequest::getVar('ResCode');
            $verifySaleOrderId                     = JRequest::getVar('SaleOrderId');
            $verifySaleReferenceId                     = JRequest::getVar('SaleReferenceId');

 
if     ($rescode == '0' ){
    
            include_once (JPATH_ROOT .'/plugins/hikashoppayment/mellat/bank/nusoap.php');
            $client = new nusoap_client('https://bpm.shaparak.ir/pgwchannel/services/pgw?wsdl');
            $namespace='http://interfaces.core.sw.bps.com/';


        $err = $client->getError();
        if ($err) {
            echo '<h2>Constructor error</h2><pre>' . $err . '</pre>';
            return;
        }

        $parameters = array(
            'terminalId' => $terminalId,
            'userName' => $userName,
            'userPassword' => $userPassword,
            'orderId' => $verifySaleOrderId,
            'saleOrderId' => $verifySaleOrderId,
            'saleReferenceId' => $verifySaleReferenceId);

        $result = $client->call('bpVerifyRequest', $parameters, $namespace);
        $resultSettle = $client->call('bpSettleRequest', $parameters, $namespace);

        if ($result==415 or $result==51 or $result==55 or $result == 43  )
        {
            return false;
        }
        if (strlen($result)==0 or strlen($resultSettle)==0 or is_null($result) or is_null($resultSettle)  )
        { 
              return false;  
        } 

        if ($client->fault) {
            echo '<h2>Fault</h2><pre>';
            print_r($result);
            echo '</pre>';
            return false;
        } 
        else {
            foreach ($result as $arr){
                $resultStr = $arr;
            }

            $err = $client->getError();
            if ($err) {
                echo '<h2>Error</h2><pre>' . $err . '</pre>';
                return false;
            } 
            else {


                $dateformat = JText::_('DATE_FORMAT_LC4');
                $date = JHTML::_('date',date('Y-m-d H:i:s'),$dateformat);
                $telegram_text = str_replace('[orderid]',$verifySaleOrderId,$telegram_text);
                $telegram_text = str_replace('[transaction]',$verifySaleReferenceId,$telegram_text);
                $telegram_text = str_replace('[date]',$date,$telegram_text);               

//////////////////////////////////////////
//////////////////////////////////////////
        $order = new stdClass();
        $order->order_id = $dbOrder->order_id;
        $order->old_status->order_status=$dbOrder->order_status;
        $url = HIKASHOP_LIVE.'administrator/index.php?option=com_hikashop&ctrl=order&task=edit&order_id='.$order->order_id;
        $order_text = "\r\n".JText::sprintf('NOTIFICATION_OF_ORDER_ON_WEBSITE',$dbOrder->order_number,HIKASHOP_LIVE);
        $order_text .= "\r\n".str_replace('<br/>',"\r\n",JText::sprintf('ACCESS_ORDER_WITH_LINK',$url));


        $mailer = JFactory::getMailer();
        $config =& hikashop_config();
        $sender = array(
            $config->get('from_email'),
            $config->get('from_name')
        );
        $mailer->setSender($sender);
        $mailer->addRecipient(explode(',',$config->get('payment_notification_email')));
 

        $order->order_status = 'confirmed';
        

        $order->history->history_reason = JText::_('PAYMENT_ORDER_CONFIRMED');
        $order->history->history_notified=1;
        $order->history->history_payment_id = $element->payment_id;
        $order->history->history_payment_method =$element->payment_type;
        $order->history->history_data = $verifySaleReferenceId;
        $order->history->history_type = 'payment';
        $order->mail_status=$statuses[$order->order_status];
        $mailer->setSubject(JText::sprintf('PAYMENT_NOTIFICATION_FOR_ORDER','ملت',$order->mail_status,$dbOrder->order_number));
        $body = str_replace('<br/>',"\r\n",JText::sprintf('PAYMENT_NOTIFICATION_STATUS','ملت',$order->mail_status)).' '.JText::sprintf('ORDER_STATUS_CHANGED',$order->mail_status)."\r\n\r\n".$order_text;
        $mailer->setBody($body);
        $mailer->Send();
        $orderClass->save($order);

            /////////////////////////////////// Redirect
            /////////////////////////////////// Redirect
            /////////////////////////////////// Redirect
            $app =& JFactory::getApplication();
            $httpsHikashop = HIKASHOP_LIVE;
            global $Itemid;
            $url_itemid = '';
            if (!empty($Itemid)) {
            $url_itemid = '&Itemid=' . $Itemid;
            }
            $return_url = $httpsHikashop.'index.php?option=com_hikashop&ctrl=checkout&task=after_end&order_id='.$orderid.$url_itemid;

                $app->enqueueMessage($telegram_text);

                    if($telegram_send==1)
                    {
                        $this->sendTelegramChannel($telegram_channel,$telegram_token,$telegram_text);
                        $this->sendTelegramToUser($telegram_token,$telegram_text);
                    }
                    
            $app->redirect($return_url);
            return true;
            //////////////////////////////////////////
            //////////////////////////////////////////
            //////////////////////////////////////////                    
                

            }
        }

                    
                    }else
                    {
                        return false;
                    }

    }

    function onPaymentConfiguration(&$element){

        $this->mellat = JRequest::getCmd('name','mellat');
        if(empty($element)){
            $element = new stdClass();
            $element->payment_name='mellat';
            $element->payment_description='پرداخت آنلاین بانک ملت';
            $element->payment_images='mellat';
            $element->payment_type=$this->mellat;
            $element->payment_params->windowstate = 2;
            $element->payment_params= new stdClass();
            $element->payment_params->notification=1;
            $list=null;
            $element->payment_params->windowstate=2;
            $element->payment_params->md5mode=1;
            $element->payment_params->instantcapture=2;
            $element->payment_params->splitpayment=2;
            $element->payment_params->addfee=2;
            $element->payment_params->invalid_status='cancelled';
            $element->payment_params->pending_status='created';
            $element->payment_params->verified_status='confirmed';
            $element = array($element);
        }
        $this->toolbar = array(
            'save',
            'apply',
            'cancel',
            '|',
            array('name' => 'pophelp', 'target' =>'payment-mellat-form')
        );

        hikashop_setTitle('پرداخت بانک ملت','plugin','plugins&plugin_type=payment&task=edit&name='.$this->mellat);
        $app = JFactory::getApplication();
        $app->setUserState( HIKASHOP_COMPONENT.'.payment_plugin_type', $this->mellat);
        $this->address = hikashop_get('type.address');
        $this->category = hikashop_get('type.categorysub');
        $this->category->type = 'status';
    }


    function getTelegramUser()
    {
        $user = JFactory::getUser();
        if($user->id>0)
        {
            $db =& JFactory::getDBO();
            $sql = "SELECT * FROM #__botmanager_users WHERE cmsuserid ='{$user->id}' ";
            $db->setQuery($sql);
            return $db->loadAssoc();
        }
        return false;
    }    

    function sendTelegramChannel($telegram_channel,$telegram_token,$telegram_text)
    {
        $url = 'https://api.telegram.org/bot'.$telegram_token.'/sendMessage?chat_id='.$telegram_channel.'&parse_mode=HTML&text='.$telegram_text;
        file_get_contents($url) ;    
    }
    
    function sendTelegramToUser($telegram_token,$telegram_text)
    {
        $userinfo = $this->getTelegramUser();
        if(count($userinfo))
        {
            $userid = $userinfo['userid'];
            $url = 'https://api.telegram.org/bot'.$telegram_token.'/sendMessage?chat_id='.$userid.'&parse_mode=HTML&text='.$telegram_text;
            file_get_contents($url) ;   
        }

    }
    
     function CheckStatus($ecode)
    {
                       $tmess="شرح خطا:";
                       switch ($ecode) 
                         {
                          case 0:
                            $tmess="تراکنش با موفقيت انجام شد";
                            break;
                          case 11:
                            $tmess="شماره کارت معتبر نيست";
                            break;
                          case 12:
                            $tmess= "موجودي کافي نيست";
                            break;
                          case 13:
                            $tmess= "رمز دوم شما صحيح نيست";
                            break;
                          case 14:
                            $tmess= "دفعات مجاز ورود رمز بيش از حد است";
                            break;
                          case 15:
                            $tmess= "کارت معتبر نيست";
                            break;
                          case 16:
                            $tmess= "دفعات برداشت وجه بيش از حد مجاز است";
                            break;
                          case 17:
                            $tmess= "کاربر از انجام تراکنش منصرف شده است";
                            break;
                          case 18:
                            $tmess= "تاريخ انقضاي کارت گذشته است";
                            break;
                          case 19:
                            $tmess= "مبلغ برداشت وجه بيش از حد مجاز است";
                            break;
                          case 111:
                            $tmess= "صادر کننده کارت نامعتبر است";
                            break;
                          case 112:
                            $tmess= "خطاي سوييچ صادر کننده کارت";
                            break;
                          case 113:
                            $tmess= "پاسخي از صادر کننده کارت دريافت نشد";
                            break;
                          case 114:
                            $tmess= "دارنده کارت مجاز به انجام اين تراکنش نمي باشد";
                            break;
                          case 21:
                            $tmess= "پذيرنده معتبر نيست";
                            break;
                          case 23:
                            $tmess= "خطاي امنيتي رخ داده است";
                            break;
                          case 24:
                            $tmess= "اطلاعات کاربري پذيرنده معتبر نيست";
                            break;
                          case 25:
                            $tmess= "مبلغ نامعتبر است";
                            break;
                          case 31:
                            $tmess= "پاسخ نامعتبر است";
                            break;
                          case 32:
                            $tmess= "فرمت اطلاعات وارد شده صحيح نيست";
                            break;
                          case 33:
                            $tmess="حساب نامعتبر است";
                            break;
                          case 34:
                            $tmess= "خطاي سيستمي";
                            break;
                          case 35:
                            $tmess= "تاريخ نامعتبر است";
                            break;
                          case 41:
                            $tmess= "شماره درخواست تکراري است";
                            break;
                          case 42:
                            $tmess= "تراکنش Sale يافت نشد";
                            break;
                          case 43:
                            $tmess= "قبلا درخواست Verify داده شده است";
                            break;
                          case 44:
                            $tmess= "درخواست Verify يافت نشد";
                            break;
                          case 45:
                            $tmess= "تراکنش Settle شده است";
                            break;
                          case 46:
                            $tmess= "تراکنش Settle نشده است";
                            break;
                          case 47:
                            $tmess= "تراکنش Settle يافت نشد";
                            break;
                          case 48:
                            $tmess= "تراکنش Reverse شده است";
                            break;
                          case 49:
                            $tmess= "تراکنش Refund يافت نشد";
                            break;
                          case 412:
                            $tmess= "شناسه قبض نادرست است";
                            break;
                          case 413:
                            $tmess= "شناسه پرداخت نادرست است";
                            break;
                          case 414:
                            $tmess= "سازمان صادر کننده قبض معتبر نيست";
                            break;
                          case 415:
                            $tmess= "زمان جلسه کاري به پايان رسيده است";
                            break;
                          case 416:
                            $tmess= "خطا در ثبت اطلاعات";
                            break;
                          case 417:
                            $tmess= "شناسه پرداخت کننده نامعتبر است";
                            break;
                          case 418:
                            $tmess= "اشکال در تعريف اطلاعات مشتري";
                            break;
                          case 419:
                            $tmess= "تعداد دفعات ورود اطلاعات بيش از حد مجاز است";
                            break;
                          case 421:
                            $tmess= "IP معتبر نيست";
                            break;
                          case 51:
                            $tmess= "تراکنش تکراري است";
                            break;
                          case 54:
                            $tmess= "تراکنش مرجع موجود نيست";
                            break;
                          case 55:
                            $tmess= "تراکنش نامعتبر است";
                            break;
                          case 61:
                            $tmess= "خطا در واريز";
                            break;
                         }    
    
            return   $tmess;
    }
    
}
 

table.png

Share this post


Link to post
Share on other sites
آموزش ووکامرس قالب جوملا قالب وردپرس قالب رایگان وردپرس قالب رایگان جوملا هاست نامحدود هاست جوملا هاست لاراول هاست وردپرس هاست ارزان هاست ربات تلگرام خرید دامنه آموزش ساخت ربات تلگرام با php آموزش لاراول آموزش cPanel آموزش php آموزش فرم ساز RSform آموزش ساخت ربات جذب ممبر آموزش ساخت ربات دوستیابی آموزش ساخت ربات فروشگاهی برای ووکامرس آموزش طراحی سایت داینامیک با php آموزش بخش پشتیبانی با rsticket

این کدهایی که شما گذاشتید برای هیکاشاپ هست و ارتباطی به rsform نداره شما پلاگین پرداخت مربوط به rsform رو نصب کنید معمولا کد بانک رو ذخیره میکنن اگر هم نداشت به برنامه نویس پلاگین بگید براتون اضافه کنن کار خاصی نداره

Share this post


Link to post
Share on other sites

سلام

کاملا درست میفرمایید ، بنده کد رو اشتباه فرستادم که در لینک زیر کامل توضیح دادم درموردش ،‌لطفا روی این کد راهنمایی کنید .

با تشکر

 

Share this post


Link to post
Share on other sites

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری