نظرسنجی: آیا این کلاس کاربردی است ؟
بلی
خیر
[نمایش نتایج]
 
 
رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
کلاس حرفه ایی بانک ملت (تست نشده)
#1
سلام دوستان

یک کلاسی نوشتیم ولی نتوانستیم تست اش کنیم.

برای من جای تعجب دارد که شرکت به پرداخت یک سیستم برای برنامه نویس ها شبیه سازی نمی کند !(بدون حسابی)


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


خوب آقای شهرکی بهتره دیگه شما یک زیر انجمن مخصوص کلاس های PHP باز کنید.


<?php
class Bank_Mellat
    {
        const WSDL = 'https://bpm.shaparak.ir/pgwchannel/services/pgw?wsdl';
        const WSDL_TEST = '';
        const clientPageURL = 'https://bpm.shaparak.ir/pgwchannel/startpay.mellat';
        const clientPageURL_TEST = '';
        const nameSpaceBank = 'http://interfaces.core.sw.bps.com/';
        private $soapClient;
        private $soapClientBuffer;
        private $Response;
        private $terminalId;
        private $userName;
        private $password;
        private $payerId;
        private $timeOut;
        private $bankResponseCode = array(
            0    => 'تراكنش با موفقيت انجام شد',
            11    => 'شماره كارت نامعتبر است',
            12    => 'موجودي كافي نيست',
            13    => 'رمز نادرست است',
            14    => 'تعداد دفعات وارد كردن رمز بيش از حد مجاز است',
            15    => 'كارت نامعتبر است',
            16    => 'دفعات برداشت وجه بيش از حد مجاز است',
            17    => 'كاربر از انجام تراكنش منصرف شده است',
            18    => 'تاريخ انقضاي كارت گذشته است',
            19    => 'مبلغ برداشت وجه بيش از حد مجاز است',
            111    => 'صادر كننده كارت نامعتبر است',
            112    => 'خطاي سوييچ صادر كننده كارت',
            113    => 'پاسخي از صادر كننده كارت دريافت نشد',
            114    => 'دارنده كارت مجاز به انجام اين تراكنش نيست',
            21    => 'پذيرنده نامعتبر است',
            23    => 'خطاي امنيتي رخ داده است',
            24    => 'اطلاعات كاربري پذيرنده نامعتبر است',
            25    => 'مبلغ نامعتبر است',
            31    => 'پاسخ نامعتبر است',
            32    => 'فرمت اطلاعات وارد شده صحيح نمي باشد',
            33    => 'حساب نامعتبر است',
            34    => 'خطاي سيستمي',
            35    => 'تاريخ نامعتبر است',
            41    => 'شماره درخواست تكراري است',
            42    => 'يافت نشد Sale تراكنش',
            43    => 'داده شده است Verify قبلا درخواست',
            44    => 'يافت نشد Verfiy درخواست',
            45    => 'شده است Settle تراكنش',
            46    => 'نشده است Settle تراكنش',
            47    => 'يافت نشد Settle تراكنش',
            48    => 'شده است Reverse تراكنش',
            49    => 'يافت نشد Refund تراكنش',
            412    => 'شناسه قبض نادرست است',
            413    => 'شناسه پرداخت نادرست است',
            414    => 'سازمان صادر كننده قبض نامعتبر است',
            415    => 'زمان جلسه كاري به پايان رسيده است',
            416    => 'خطا در ثبت اطلاعات',
            417    => 'شناسه پرداخت كننده نامعتبر است',
            418    => 'اشكال در تعريف اطلاعات مشتري',
            419    => 'تعداد دفعات ورود اطلاعات از حد مجاز گذشته است',
            421    => 'نامعتبر است IP',
            51    => 'تراكنش تكراري است',
            54    => 'تراكنش مرجع موجود نيست',
            55    => 'تراكنش نامعتبر است',
            61    => 'خطا در واريز'
        );
        public $error = array(
            'status' => false,
            'code' => null
        );

#The main functions :
        function __construct($terminalId, $userName, $password, $payerId=0, $timeOut=900)
            {
                #require __DIR__.'/nusoap-0.9.5/nusoap.php';
                $this->terminalId = $terminalId;
                $this->userName = $userName;
                $this->password = $password;
                $this->payerId = $payerId;
                $this->timeOut = $timeOut;
                $this->soapClient = new nusoap_client(self::WSDL);
                $this->soapClient->xml_encoding = 'UTF-8';
                $this->soapClient->soap_defencoding = 'UTF-8';
                $this->soapClient->decode_utf8 = false;
                $this->soapClientBuffer = $this->soapClient;
            }

        private function setError($code, $callBack=false)
            {
                $this->error['status'] = true;
                $this->error['code']   = $code;
                return $callBack;
            }

        private function reset()
            {
                $this->soapClient = $this->soapClientBuffer;
                $this->Response = null;
                $this->error = array(
                    'status' => false,
                    'code' => null
                );
            }

        public function soapClientError()
            {
                if($this->soapClient->getError())
                    return $this->setError(-2,true);
                if($this->soapClient->fault)
                    return $this->setError(-4,true);
                return false;
            }
        
        public function isResponseCode($code)
            {
                return isset($this->bankResponseCode[$code]);
            }

        public function getResponseError($code)
            {
                switch($code)
                    {
                        case -1 :
                            return 'اطلاعات توضيحي كه پذيرنده مايل به حفظ آنها براي هر تراكنش مي باشد از حد مجاز بیشتر می باشد';
                        case -2 :
                            return $this->soapClient->getError();
                        case -3 :
                            return 'مقادیر ارسال شده عددی نمی باشند !';
                        case -4 :
                            return $this->soapClient->faultstring;
                    }
                if(isset($this->bankResponseCode[$code]))
                    return $this->bankResponseCode[$code];
                return false;
            }

        public function getError()
            {
                if($this->error['status'])
                    return $this->getResponseError($this->error['code']);
                return false;
            }

        public function getResponse()
            {
                return $this->Response;
            }

        public function bpAction($method, $parameters)
            {
                $this->reset();
                if($this->soapClientError())
                    return false;
                $this->Response = $this->soapClient->Call($method,array_merge(array(
                    'terminalId' => $this->terminalId,
                    'userName' => $this->userName,
                    'userPassword' => $this->password)
                ,$parameters),self::nameSpaceBank);
                if($this->soapClientError())
                    return false;
                return true;
            }
        
        public function buyPage($print=false)
            {
                if($print)
                    echo self::clientPageURL;
                return self::clientPageURL;
            }
        
        public function getTimeOut()
            {
                return $this->timeOut;
            }
#Auxiliary Functions :
        public function bpPayRequest($orderId, $amount, $callBackUrl, $additionalData = null)
            {
                if(strlen($additionalData) > 1000)
                    return $this->setError(-1);
                if(!is_int($amount) || !is_int($amount))
                    return $this->setError(25);
                if(!is_int($orderId))
                    return $this->setError(-3);
                return $this->bpAction('bpPayRequest',array(
                    'orderId' => $orderId,
                    'amount' => $amount,
                    'localData' => date('Ymd'),
                    'localTime' => date('His'),
                    'additionalData' => $additionalData,
                    'callBackUrl' => $callBackUrl,
                    'payerId' => $this->payerId
                ));
            }
            
        public function bpVerifyRequest($orderId, $saleReferenceId, $saleOrderId)
            {
                if(!is_int($orderId) || !is_int($saleReferenceId) || !is_int($saleOrderId))
                    return $this->setError(-3);
                return $this->bpAction('bpVerifyRequest',array(
                    'orderId' => $orderId,
                    'saleReferenceId' => $saleReferenceId,
                    'saleOrderId' => $saleOrderId
                ));
            }
            
        public function bpSettleRequest($orderId, $saleReferenceId, $saleOrderId)
            {
                if(!is_int($orderId) || !is_int($saleReferenceId) || !is_int($saleOrderId))
                    return $this->setError(-3);
                return $this->bpAction('bpSettleRequest',array(
                    'orderId' => $orderId,
                    'saleReferenceId' => $saleReferenceId,
                    'saleOrderId' => $saleOrderId
                ));
            }
            
        public function bpInquiryRequest($orderId, $saleReferenceId, $saleOrderId)
            {
                if(!is_int($orderId) || !is_int($saleReferenceId) || !is_int($saleOrderId))
                    return $this->setError(-3);
                return $this->bpAction('bpInquiryRequest',array(
                    'orderId' => $orderId,
                    'saleOrderId' => $saleOrderId,
                    'saleReferenceId' => $saleReferenceId
                ));
            }
            
        public function bpReversalRequest($orderId, $saleReferenceId, $saleOrderId)
            {
                if(!is_int($orderId) || !is_int($saleReferenceId) || !is_int($saleOrderId))
                    return $this->setError(-3);
                return $this->bpAction('bpReversalRequest',array(
                    'orderId' => $orderId,
                    'saleReferenceId' => $saleReferenceId,
                    'saleOrderId' => $saleOrderId
                ));
            }
            
        public function bpRefundRequest($orderId, $saleReferenceId, $saleOrderId, $refundAmount)
            {
                if(!is_int($orderId) || !is_int($saleReferenceId) || !is_int($saleOrderId) || !is_int($refundAmount))
                    return $this->setError(-3);
                return $this->bpAction('bpRefundRequest',array(
                    'orderId' => $orderId,
                    'saleOrderId' => $saleOrderId,
                    'saleReferenceId' => $saleReferenceId,
                    'refundAmount' => $refundAmount
                ));
            }
            
        public function bpRefundVerifyRequest($orderId, $refundOrderId, $refundReferenceId)
            {
                if(!is_int($orderId) || !is_int($refundReferenceId) || !is_int($refundOrderId))
                    return $this->setError(-3);
                return $this->bpAction('bpRefundVerifyRequest',array(
                    'orderId' => $orderId,
                    'refundOrderId' => $refundOrderId,
                    'refundReferenceId' => $refundReferenceId
                ));
            }
            
        public function bpRefundInquiryRequest($orderId, $refundOrderId, $refundReferenceId)
            {
                if(!is_int($orderId) || !is_int($refundOrderId) || !is_int($refundReferenceId))
                    return $this->setError(-3);
                return $this->bpAction('bpRefundVerifyRequest',array(
                    'orderId' => $orderId,
                    'refundOrderId' => $refundOrderId,
                    'refundReferenceId' => $refundReferenceId
                ));
            }
    }
?>
الإمامُ الصّادقُ عليه‏السلام :

إنَّ لِكُلِّ شَيءٍ زَكاةً ، وزَكاةُ العِلمِ أن يُعَلِّمَهُ أهلَهُ .

امام صادق عليه‏السلام :

هرچيزى ‏زكاتى دارد و زكات دانش، آموختن آن است به اهلش.

تحف العقول : 364 منتخب ميزان الحكمة : 400
پاسخ
تشکر شده توسط:
#2
شرکت به پرداخت وقتی ازشون درگاه میگیرین، به مدت یک هفته درگاه خودتون رو آزمایشی میگذاره. توی این مدت هیچ تراکنشی Settle نمیشه (واقعاً پولی جابجا نمیشه). راستی چرا تو کدتون Indent ندارین؟
پاسخ
تشکر شده توسط:
#3
نقل قول:راستی چرا تو کدتون Indent ندارین؟

داشت ! ولی مثل اینکه ادیتور یا سرور سایت حذف اش می کند.(کاراکتر t\\)
الإمامُ الصّادقُ عليه‏السلام :

إنَّ لِكُلِّ شَيءٍ زَكاةً ، وزَكاةُ العِلمِ أن يُعَلِّمَهُ أهلَهُ .

امام صادق عليه‏السلام :

هرچيزى ‏زكاتى دارد و زكات دانش، آموختن آن است به اهلش.

تحف العقول : 364 منتخب ميزان الحكمة : 400
پاسخ
تشکر شده توسط:
#4
باید با چهار تا Space جایگزین کنید. کدهاتون رو منطبق با استانداردهای PSR بنویسین. از Tab استفاده نکنید.
پاسخ
تشکر شده توسط:
#5
(08-04-1394، 12:49 ب.ظ)ADMIN نوشته: باید با چهار تا Space جایگزین کنید. کدهاتون رو منطبق با استانداردهای PSR بنویسین. از Tab استفاده نکنید.

فرقشون در 1 بایت و چند پیکس اون طرف تر(البته np++ یک تب را به اندازه 4 space نمایش می دهد و تفاوتی در پیکس باهم ندارند)

امان از این استاندارد ها
الإمامُ الصّادقُ عليه‏السلام :

إنَّ لِكُلِّ شَيءٍ زَكاةً ، وزَكاةُ العِلمِ أن يُعَلِّمَهُ أهلَهُ .

امام صادق عليه‏السلام :

هرچيزى ‏زكاتى دارد و زكات دانش، آموختن آن است به اهلش.

تحف العقول : 364 منتخب ميزان الحكمة : 400
پاسخ
تشکر شده توسط:
#6
همین استانداردها (اعم از ریز و درشت) هستن که یه تیم رو قادر به همکاری میکنن. میتونید IDE رو طوری تنظیم کنید که وقتی تب میزنین، خودش بجاش 4 تا Space بگذاره.
پاسخ
تشکر شده توسط:
#7
کسی از دوستان تست نکرد ؟
الإمامُ الصّادقُ عليه‏السلام :

إنَّ لِكُلِّ شَيءٍ زَكاةً ، وزَكاةُ العِلمِ أن يُعَلِّمَهُ أهلَهُ .

امام صادق عليه‏السلام :

هرچيزى ‏زكاتى دارد و زكات دانش، آموختن آن است به اهلش.

تحف العقول : 364 منتخب ميزان الحكمة : 400
پاسخ
تشکر شده توسط:
#8
این روزا گرفتن درگاه از بانکها خیلی مشکل شده. کسانی هم که درگاه دارن فکر میکنم با همون سیستم قبلی کار میکنن. من خودم دنبال گرفتنش بودم اینقدر به پرداخت سر نماد اعتماد اذیت کرد که کلاً بیخیال شدم.
پاسخ
تشکر شده توسط:




کاربران در حال بازدید این موضوع: 1 مهمان