صفحه 1 از 2 12 آخرینآخرین
نمایش نتایج: از شماره 1 تا 10 , از مجموع 11

موضوع: كلاس پرداخت آنلاين whmcs سامان (كمك)

  1. #1
    عضو جدید
    تاریخ عضویت
    Dec 2009
    نوشته ها
    53
    تشکر تشکر کرده 
    0
    تشکر تشکر شده 
    33
    تشکر شده در
    28 پست

    پیش فرض كلاس پرداخت آنلاين whmcs سامان (كمك)

    سلام
    دوستان يك نگاهي به كلاس پرداخت زير بكنيد ببينيد كجاش مشكل داره.
    من كه گيج موندم.
    پرداخت انجام ميشه ولي وقتي از سايت بانك به سايت ما مياد ميگه پرداخت با موفقيت انجام شد ولي بالاي صفحه اين ارور رو ميده : The following error occured:
    و وضعيت فاكتور همون پرداخت نشده باقي ميمونه.
    دوستان اگر راه حلي دارند بفرمايند.

    کد:
    <html>
    <head>
    <META HTTP-EQUIV="REFRESH" CONTENT="5;URL=http://domain.org/clientarea.php">
    <title>نتیجه پرداخت شما</title>
    </head>
    <body>
    
    </body>
    </html>
    <?php
    
        /*
          CREATE TABLE sbpayment (id INT(10) NOT NULL AUTO_INCREMENT,
                                  res_num CHAR(20) NOT NULL,
                                  ref_num CHAR(20) NOT NULL,
                                  total_amont INT NOT NULL,
                                  payment INT NOT NULL DEFAULT 0,
                                  date_start INT(12) NOT NULL,
                                  primary key(id),
                                  unique(res_num),
                                  index(ref_num));
        */
    
        class SBPayment
        {
    
            public $action  = 'https://acquirer.sb24.com/CardServices/controller';
    
            public $webMethodURL = 'https://Acquirer.sb24.com/ref-payment/ws/ReferencePayment?WSDL';
    
            public $redirectURL = 'http://domain.org/modules/gateways/callback/saman.php';
    
            public $totalAmont;
    
            public $refNum;
    
            public $resNum;
    
            protected $payment;
    
            protected $merchantID;
    
            protected $password;
    
            protected $msg = array();
    
            protected $errorState = array(
            'Canceled By User'     => 'تراکنش بوسيله خريدار کنسل شده',
            'Invalid Amount'       => 'مبلغ سند برگشتي  از مبلغ تراکنش اصلي بيشتر است',
            'Invalid Transaction'  => 'درخواست برگشت تراکنش رسيده است در حالي که تراکنش اصلي پيدا نمي شود',
            'Invalid Card Number'  => 'شماره کارت اشتباه است',
            'No Such Issuer'       => 'چنين صادر کننده کارتي وجود ندارد',
            'Expired Card Pick Up' => 'از تاريخ انقضاي کارت گذشته است',
            'Incorrect PIN'        => 'رمز کارت اشتباه است pin',
            'No Sufficient Funds'  => 'موجودي به اندازه کافي در حساب شما نيست',
            'Issuer Down Slm'      => 'سيستم کارت بنک صادر کننده فعال نيست',
            'TME Error'            => 'خطا در شبکه بانکي',
            'Exceeds Withdrawal Amount Limit'      => 'مبلغ بيش از سقف برداشت است',
            'Transaction Cannot Be Completed'      => 'امکان سند خوردن وجود ندارد',
            'Allowable PIN Tries Exceeded Pick Up' => 'رمز کارت 3 مرتبه اشتباه وارد شده کارت شما غير فعال اخواهد شد',
            'Response Received Too Late'           => 'تراکنش در شبکه بانکي تايم اوت خورده',
            'Suspected Fraud Pick Up'              => 'اشتباه وارد شده cvv2 ويا ExpDate فيلدهاي'
            );
    
            protected $errorVerify = array(
            '-1'  => 'خطاي داخلي شبکه',
            '-2'  => 'سپرده ها برابر نيستند',
            '-3'  => 'ورودي ها حاوي کاراکترهاي غير مجاز ميباشد',
            '-4'  => 'کلمه عبور يا کد فروشنده اشتباه است',
            '-5'  => 'خطاي بانک اطلاعاتي',
            '-6'  => 'سند قبلا برگشت کامل خورده',
            '-7'  => 'رسيد ديجيتالي تهي است',
            '-8'  => 'طول ورودي ها بيشتر از حد مجاز است',
            '-9'  => 'وجود کارکترهاي غير مجاز در مبلغ برگشتي',
            '-10' => 'رسيد ديجيتالي حاوي کارکترهاي غير مجاز است',
            '-11' => 'طول ورودي ها کمتر از حد مجاز است',
            '-12' => 'مبلغ برگشتي منفي است',
            '-13' => 'مبلغ برگشتي براي برگشت جزيي بيش از مبلغ برگشت نخورده رسيد ديجيتالي است',
            '-14' => 'چنين تراکنشي تعريف نشده است',
            '-15' => 'مبلغ برگشتي به صورت اعشاري داده شده',
            '-16' => 'خطاي داخلي سيستم',
            '-17' => 'برگشت زدن تراکنشي که با کارت بانکي غير از بانک سامان انجام شده',
            '-18' => 'فروشنده نامعتبر است ip address'
            );
    
            public $style = array('TableBorderColor' => '',
                                  'TableBGColor'     => '',
                                  'PageBGColor'      => '',
                                  'PageBorderColor'  => '',
                                  'TitleFont'        => '',
                                  'TitleColor'       => '',
                                  'TitleSize'        => '',
                                  'TextFont'         => '',
                                  'TextColor'        => '',
                                  'TextSize'         => '',
                                  'TypeTextColor'    => '',
                                  'TypeTextColor'    => '',
                                  'TypeTextSize'     => '',
                                  'LogoURI'          => ''
                                  );
    
            function __construct($mID = 'xxxxxxxxx',$pass = 'xxxxxxxx')
            {
                $this->merchantID = $mID;
                $this->password   = $pass;
    
            }
    
     function get_content($url)  
     {  
        $ch = curl_init();  
       
        curl_setopt ($ch, CURLOPT_URL, $url);  
        curl_setopt ($ch, CURLOPT_HEADER, 0);  
       
        ob_start();  
       
        curl_exec ($ch);  
        curl_close ($ch);  
        $string = ob_get_contents();  
       
        ob_end_clean();  
          
        return $string;      
       
     }        protected function createResNum()
            {
                do{
                    $m = md5(microtime());
                    $resNum = substr($m,0,20);
                    $search = mysql_query("SELECT res_num FROM sbpayment WHERE res_num = '$resNum'");
                    if( mysql_num_rows($search) < 1 ) {
                        break;
                    }
                }while( true ); 
                $this->resNum = $resNum;
            }
    
            protected function searchResNum( $resNum )
            {
                $search = mysql_query( "select * FROM sbpayment WHERE res_num='$resNum'");
                if ( mysql_num_rows( $search ) < 1 ) {
                    return false;
                }
                return mysql_fetch_assoc( $search );
            }
    
            protected function searchRefNum( $refNum )
            {
                $search = mysql_query( "select * FROM SBPayment WHERE ref_num = '$refNum'" );
                if ( mysql_num_rows( $search ) < 1 ) {
                    return false;
                }
                return mysql_fetch_assoc( $search );
            }
    
            protected function saveBankInfo( $payment )
            {
                $this->payment = $payment;
                return mysql_query( "UPDATE sbpayment SET ref_num = '$this->refNum' ,payment = '$payment' WHERE res_num = '$this->resNum'" ) or $this->setMsg(mysql_error());
            }
    
            public function saveStoreInfo( $totalAmont )
            {
                if( $totalAmont == '' ) {
                    $this->setMsg( "Error: TotalAmont" );
                    return false;
                }
                $time = time();
                $this->totalAmont = $totalAmont;
                $this->createResNum();
                return mysql_query( "INSERT INTO sbpayment SET res_num = '$this->resNum', total_amont = '$this->totalAmont', date_start = $time" ) or $this->setMsg(mysql_error());
            }
    
             public function receiverParams( $resNum = '' , $refNum = '' ,$state = '' )
            {
                if( ( empty($state) or empty($resNum) or strlen($refNum) != 20 ) or $state != 'OK' ) {
                    if(isset($this->errorState[$state])) {
                        $this->setMsg( 'state',$state );
                    } else {
                        $this->setMsg("error state");
                    }
                    return false;
                }
    
                $searchResNum = $this->searchResNum( $resNum );
    
                if( is_array( $searchResNum ) ) {
                    if( $searchResNum['payment'] > 0) {
                        $this->setMsg( "لطفا به قسمت رهگيري سفازش مراجعه کنيد" );
                        return false;
                    }
                } else {
                    $this->setMsg("همچين تراکنشي در سمت فروشنده تعريف نشده");
                    return false;
                }
    
                $this->refNum     = $refNum;
                $this->resNum     = $resNum;
                $this->totalAmont = $searchResNum['total_amont'];
    
                return $this->lastCheck();
            }
    
    
            protected function lastCheck()
            {
                if( empty($this->resNum) or strlen($this->refNum) != 20 ) {
                    $this->setMsg( "Error: resNum or refNum is empty" );
                    return false;
                }
                //web method verify transaction
                $verify     = $this->verifyTrans();
    
                if( $verify > 0 ) {
                    if( $verify == $this->totalAmont ) {
    
                        $this->saveBankInfo( $verify );
                        $this->setMsg("پرداخت با موفقيت انجام شد  لطفا کد رهگيري را يادداشت کنيد");
                        $this->setMsg( "$this->resNum"." : کد رهگيري " );
                        $this->addPaymentToInvoice($this->resNum,$this->refNum);
    get_content("http://domain.org/includes/addinvoicepayment.php?invoiceid=4050&transid=test");
                        return true;
    
    
                    } elseif( $verify > $this->totalAmont ) {
    /*
                        //web method partial reverse transaction
                        $revAmont = $verify - $this->totalAmont;
                        $reverse  = $this->reverseTrans( $revAmont );
    
                        $this->setMsg("کاربر گرامي  مبلغ پرداختي بيش از مبلغ درخواستي است");
                        if( $reverse == 1 ) {
                            $this->setMsg("مابقي مبلغ پرداخت شده به حساب شما برگشت خورده");
                            $this->saveBankInfo( $this->totalAmont );
                        } else {
                            $this->setMsg( 'verify',$reverse );
                            $this->setMsg( "ما بقي مبلغ پرداختي شما در اينده اي نزديک به حساب شما برگشت خواهد خورد " );
                            $this->saveBankInfo( $verify );
                        }
    */
                        $this->setMsg("پرداخت با موفقيت انجام شد  لطفا کد رهگيري را يادداشت کنيد");
                        $this->setMsg( "$this->resNum"." : کد رهگيري " );
                        $this->addPaymentToInvoice($this->resNum,$this->refNum);
                         //add invoice to whmcs
                        return true;
    
    
                    } elseif( $verify < $this->totalAmont ) {
    
                        //web method full reverse transaction
                        $rev     = $this->reverseTrans( $verify );
                        $this->setMsg("مبلغ پرداختي شما کمتر از مباغ سفارش است ");
                        if( $rev == 1 ) {
                            $this->setMsg("کل مبلغ پرداختي به حساب شما برگشت خورده");
                            $this->saveBankInfo( 0 );
                        } else {
                            $this->setMsg("در اينده اي نزديک کل مبلغ پرداختي به حساب شما برگشت خواهد خورد لطفا براي پي گيري کد رهگيري را يادداشت کنيد");
                            $this->setMsg( "$this->resNum"." : کد رهگيري " );
                            $this->setMsg( 'verify',$rev );
                            $this->saveBankInfo( $verify );
                        }
                        return false;
                    }
                    //Error transaction
                } elseif ( $verify < 0 or $verify == false ) {
                    $this->setMsg( "کاربر گرامي مشکلي در تاييد  پرداخت پيش امده" );
                    $this->setMsg( 'verify',$verify );
                    $this->saveBankInfo( 0 );
                    return false;
                }
            }
           protected function verifyTrans()
            {
                if(empty($this->refNum) or empty($this->merchantID) ) {
                    return false;
                }
                $soapClient = new nusoap_client( $this->webMethodURL,'wsdl' );
                $soap*****  = $soapClient->get*****();
                $result     = false;
    
                for( $a=1;$a<6;++$a ) {
                    $result  = $soap*****->verifyTransaction( $this->refNum,$this->merchantID );
                    if( $result != false ) {
                        break;
                    }
                }
                return $result;
            }
    
            protected function reverseTrans( $revNumber )
            {
                if( $revNumber <= 0 or empty($this->refNum) or empty($this->merchantID) or empty($this->password) ) {
                    return false;
                }
                $soapClient = new nusoap_client( $this->webMethodURL,'wsdl' );
                $soap*****  = $soapClient->get*****();
                $result     = false;
    
                for( $a=1;$a<6;++$a ) {
                    $result     = $soap*****->reverseTransaction( $this->refNum,$this->merchantID,$this->password,$revNumber );
                    if( $result != false )
                        break;
                }
                return $result;
            }
    
           public function addPaymentToInvoice($resNum,$refNum)
           {
    
            $url = "http://domain.org/includes/api.php"; # URL to WHMCS API file
            $username = "Admin"; # Admin username goes here
            $password = "demo"; # Admin password goes here
    
            $postfields["username"] = $username;
            $postfields["password"] = md5($password);
            $postfields["action"] = "addinvoicepayment"; #action performed by the API:Functions
            $postfields["invoiceid"] = $resNum;
            $postfields["transid"] = $refNum;
            $postfields["gateway"] = "Saman Bank";
    
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_TIMEOUT, 100);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
            $data = curl_exec($ch);
            curl_close($ch);
    
            $data = explode(";",$data);
            foreach ($data AS $temp) {
            $temp = explode("=",$temp);
            $results[$temp[0]] = $temp[1];
            }
    
            if ($results["result"]=="success") {
            # Result was OK!
            } else {
            # An error occured
            echo "The following error occured: ".$results["message"];
            }
    }
            public function sendParams()
            {
    
                if ( $this->totalAmont <= 0 or empty($this->action) or empty($this->redirectURL) or empty($this->resNum) or empty($this->merchantID) ) {
                    $this->setMsg( "Error: function sendParams()" );
                    return false;
                }
                $form  = "<html>";
                $form .= "<body onLoad=\"document.forms['sendparams'].submit();\" >";
                $form .= "<form name=\"sendparams\" method=\"POST\" action=\"$this->action\" enctype=\"application/x-www-form-urlencoded\" >\n";
                foreach ( $this->style as $key=>$val ) {
                    if( $val != '' ) {
                        $form .= "<input type=\"hidden\" name=\"$key\" value=\"$val\" />\n";
                    }
                }
                $form .= "<input type=\"hidden\" name=\"Amont\" value=\"$this->totalAmont\" />\n";
                $form .= "<input type=\"hidden\" name=\"ResNum\" value=\"$this->resNum\" />\n";
                $form .= "<input type=\"hidden\" name=\"MID\" value=\"$this->merchantID\" />\n";
                $form .= "<input type=\"hidden\" name=\"RedirectURL\" value=\"$this->redirectURL\" />\n";
                $form .= "</form>";
                $form .= "</body>";
                $form .= "</html>";
    
                print $form;
            }
    
            protected function setMsg($type='',$index='')
            {
                if ( $type == 'state' and isset( $this->errorState[$index] ) ) {
                    $this->msg[] = $this->errorState[$index];
    
                } elseif( $type == 'verify' and isset($this->errorVerify[$index]) ) {
                    $this->msg[] = $this->errorVerify[$index];
    
                } elseif( $type != 'verify' and $type != 'state') {
                    $this->msg[] = "$type";
                }
            }
    
            public function getMsg($dis='')
            {
                if( count($this->msg) == 0 ) return array();
                if( $dis == 'display' ) {
                    $msg  = "<div style=vertical-align:middle;margin-top:100px;text-align:center;font-family:Tahoma;font-weight:bold;font-size:9pt;><ul>\n";
                    foreach ( $this->msg as $v ) { $msg .= "<li> $v </li>\n"; }
                    $msg .= "</ul></div>\n";
                    return print $msg;
                }
                return $this->msg;
            }
        }
    
    
        ?>

  2. # ADS




     

  3. #2
    عضو انجمن iNicz.Com آواتار ها
    تاریخ عضویت
    Feb 2010
    محل سکونت
    World
    نوشته ها
    578
    تشکر تشکر کرده 
    204
    تشکر تشکر شده 
    1,297
    تشکر شده در
    776 پست

    60 پاسخ : كلاس پرداخت آنلاين whmcs سامان (كمك)

    Contact Me: Tell : 044-32341756 **9149600789 \ Mail : Sup.inicz[at]gmail.com \ Y!ID : hadi_gby\ Old Inicz.com
    شرکت فرانوآوران : اولین و قدیمی ترین فروشنده سرور های هتزنر در ایران با 6 سال سابقه

  4. #3
    عضو جدید
    تاریخ عضویت
    Dec 2009
    نوشته ها
    53
    تشکر تشکر کرده 
    0
    تشکر تشکر شده 
    33
    تشکر شده در
    28 پست

    پیش فرض پاسخ : كلاس پرداخت آنلاين whmcs سامان (كمك)

    ممنون
    ولی این ماژول ناقص هست؛
    فایلهای مربوط به callback ‎رو نداره؛

  5. #4
    عضو انجمن IranianServer آواتار ها
    تاریخ عضویت
    Mar 2009
    محل سکونت
    تهران
    نوشته ها
    650
    تشکر تشکر کرده 
    203
    تشکر تشکر شده 
    579
    تشکر شده در
    427 پست

    پیش فرض پاسخ : كلاس پرداخت آنلاين whmcs سامان (كمك)

    شما فقط فایل با فایل callback مشکل دارید ؟
    دارای نماد اعتماد دوستاره و نشان ملی ثبت (ساماندهی)

  6. #5
    عضو جدید
    تاریخ عضویت
    Dec 2009
    نوشته ها
    53
    تشکر تشکر کرده 
    0
    تشکر تشکر شده 
    33
    تشکر شده در
    28 پست

    پیش فرض پاسخ : كلاس پرداخت آنلاين whmcs سامان (كمك)

    بله
    زمانی که برای پرداخت کلیک میکنیم به سایت بانک سامان میره و پرداخت انجام میشه و مشکل زمانی هست که بهد از پرداخت برمیگرده به سایت ما ؛
    میزنه پرداخت انجام شد ولی یک ارور هم بالای صفحه هست و وضعیت فاکتور همون پردبخت نشده میمونه؛
    اینم ارور:
    the following error occured:

  7. #6
    عضو انجمن IranianServer آواتار ها
    تاریخ عضویت
    Mar 2009
    محل سکونت
    تهران
    نوشته ها
    650
    تشکر تشکر کرده 
    203
    تشکر تشکر شده 
    579
    تشکر شده در
    427 پست

    پیش فرض پاسخ : كلاس پرداخت آنلاين whmcs سامان (كمك)

    با ما تماس بگیرید تا فایل callback رو براتون ارسال کنم.
    دارای نماد اعتماد دوستاره و نشان ملی ثبت (ساماندهی)

  8. #7
    عضو جدید
    تاریخ عضویت
    Dec 2009
    نوشته ها
    53
    تشکر تشکر کرده 
    0
    تشکر تشکر شده 
    33
    تشکر شده در
    28 پست

    پیش فرض پاسخ : كلاس پرداخت آنلاين whmcs سامان (كمك)

    ممنون از فایلتون
    ولی باز هم جهاب نداد؛
    این بار بعد از پرداخت برمیگرده به صفحه فاکتور و وضعیت فاکتور باز هم پرداخت نشده هست؛

  9. #8
    عضو انجمن IranianServer آواتار ها
    تاریخ عضویت
    Mar 2009
    محل سکونت
    تهران
    نوشته ها
    650
    تشکر تشکر کرده 
    203
    تشکر تشکر شده 
    579
    تشکر شده در
    427 پست

    پیش فرض پاسخ : كلاس پرداخت آنلاين whmcs سامان (كمك)

    فایلی که من دادم ؟؟!!
    امکان نداره ! کلاً فکر کنم ماژول شما مورد داره !
    آدرس سایت رو ارسال کنید تا تست کنم.
    دارای نماد اعتماد دوستاره و نشان ملی ثبت (ساماندهی)

  10. #9
    عضو جدید
    تاریخ عضویت
    Dec 2009
    نوشته ها
    53
    تشکر تشکر کرده 
    0
    تشکر تشکر شده 
    33
    تشکر شده در
    28 پست

    پیش فرض پاسخ : كلاس پرداخت آنلاين whmcs سامان (كمك)

    سلام
    تست کردید؟

  11. #10
    عضو جدید
    تاریخ عضویت
    Jan 2011
    نوشته ها
    2
    تشکر تشکر کرده 
    0
    تشکر تشکر شده 
    1
    تشکر شده در
    تشکر شده 1 بار در 1 پست

    پیش فرض پاسخ : كلاس پرداخت آنلاين whmcs سامان (كمك)

    سلام
    منم مشکل دارم، فایل callback هم دارم. پرداخت انجام میشه و از بانک بر می گرده اما همچنان فاکتور پرداخت نشده است. لطف اگر ماژول را دارید برای بنده هم ایمیل کنید.

    vahid.azad@gmail.com

    سپاس

صفحه 1 از 2 12 آخرینآخرین

اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. پاسخ ها: 32
    آخرين نوشته: November 24th, 2019, 15:27
  2. مشکل کندی بسیار روی پنل whmcs و احتیاج به دوستان متخصص whmcs برای حل مشک
    توسط meysam_sat در انجمن درخواست خدمات کانفیگ سرور و وب سایت
    پاسخ ها: 2
    آخرين نوشته: November 9th, 2017, 02:48
  3. ماژول WHMCS Two Factor Google Authenticator رایگان و تست شده برروی whmcs ۶ و بالاتر
    توسط am_mamdooh در انجمن ماژول ، قالب و افزونه ها
    پاسخ ها: 0
    آخرين نوشته: September 8th, 2016, 10:21
  4. افزونه انتقال از WHMCS به WHMCS و Blesta و ClientExec و HostBill
    توسط amir1000000_1 در انجمن ماژول ، قالب و افزونه ها
    پاسخ ها: 0
    آخرين نوشته: August 24th, 2016, 22:25
  5. پاسخ ها: 8
    آخرين نوشته: February 2nd, 2014, 13:42

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •