• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
اتصال به درگاه بانک ملت
#1
Question 
سلام.
من تا حالا با درگاه بانکی کار نکرده بودم، الان کدی سمپلی که از بانک ملت گرفتم رو روی سایت اپلود کردم و اطلاعات مروبط به بخش Pay رو وارد می کنم، ترمینال ای دی، یوزر و پس و مقادیر مربوط به پرداخت ولی تنها کاری که می کنه رفرش صفحه هستش!
سمپل بانک ملت رو اپ کردم، فردا باید تحویل بدم، لطفا زودتر راهنمایی کنید.


فایل‌های پیوست
.zip   PHP Sample.zip (اندازه 210.39 KB / تعداد دانلود: 36)
  پاسخ
تشکر شده توسط :
#2
سلام
کلاس بانک ملت که برای یکی از کارها نوشته بودم.

کد:
<?php
require_once('lib/nusoap.php');

class Mellat {
    const terminalID = 'xxx';
    const username = 'xxx';
    const password = 'xxx';
    const webService = 'https://bpm.shaparak.ir/pgwchannel/services/pgw?wsdl';
    private $error;

    public function request($price = NULL , $order_id = NULL , $callback = NULL)
    {
        $params = array(
            'terminalId' => self::terminalID ,
            'userName' => self::username ,
            'userPassword' => self::password ,
            'orderId' =>time().mt_rand(1111,9999) ,
            'amount' => $price ,
            'localDate' => date("Ymd") ,
            'localTime' => date("His") ,
            'additionalData' => '' ,
            'callBackUrl' => $callback ,
            'payerId' => '0' ,
        );

        try{
            $client = new nusoap_client(self::webService);
            $error = $client->getError();
            if($error){
                $this->error = 'خطا در اتصال به بانک ملت'.'خطا : '.strip_tags($error);
            }
        }catch(Exception $e){
            $this->error = $e->getMessage();
            BankLog::add('خطا در اتصال به بانک ملت'.' - '.$e->getLine(),$this->error);
            $this->error = 'ارتباط با بانک در حال حاضر مقدور نیست!';
        }

        $result = $client->call('bpPayRequest', $params, 'http://interfaces.core.sw.bps.com/');
        $res = explode (',', $result);
        if(!isset($res[0]) || $res[0] != "0" || !isset($res[1])){
            //$this->error = 'خطای شماره '.$res[0];
            //$this->error .= ': '.$this->errorMessages[$res[0]];
            BankLog::add('خطای شماره '.$res[0],$this->errorMessages[$res[0]]);
            $this->error = 'ارتباط با بانک در حال حاضر مقدور نیست!';
        }else{
            return $res[1];
        }
    }

    public $SaleReferenceId = '';
    public function verify()
    {
        if(!isset($_POST['RefId']) && !isset($_POST['ResCode']) && !isset($_POST['SaleOrderId']) && !isset($_POST['SaleReferenceId']))
        {
            $this->error = 'پارامترهای ارسالی صحیح نیست';
            return false;
        }

        $RefId = $_POST['RefId'];
        $ResCode = $_POST['ResCode'];
        $saleOrderId = $_POST['SaleOrderId'];
        $SaleReferenceId = $_POST['SaleReferenceId'];

        $this->SaleReferenceId = $SaleReferenceId;

        $params = array(
            'terminalId' => self::terminalID ,
            'userName' => self::username ,
            'userPassword' => self::password ,
            'orderId' => $saleOrderId,//time().mt_rand(1111,9999) ,
            'saleOrderId' => $saleOrderId ,
            'saleReferenceId' => $SaleReferenceId ,
        );

        if($ResCode != '0'){
            //$this->error = 'خطای شماره '.$ResCode;
            //$this->error .= ': '.$this->errorMessages[$ResCode];
            BankLog::add('خطای شماره '.$ResCode,$this->errorMessages[$ResCode]);
            $this->error = $this->errorMessages[$ResCode];
            return false;
        }

        try{
            $client = new nusoap_client(self::webService);
            $error = $client->getError();
            if($error){
                BankLog::add('خطا در تأیید تراکنش خرید اول', strip_tags($error));
                $this->error = 'خطا در تأیید تراکنش خرید';
            }
        }catch(Exception $e){
            BankLog::add('خطا در تأیید تراکنش خرید دوم'.' - '.$e->getLine(), $e->getMessage());
            $this->error = 'خطا در تأیید تراکنش خرید';
        }

        $result = $client->call('bpVerifyRequest',$params,'http://interfaces.core.sw.bps.com/');
        $error = $client->getError();
        if($error){
            BankLog::add('خطا در تأیید تراکنش خرید سوم', strip_tags($error));
            $this->error = 'خطا در تأیید تراکنش خرید';
            return false;
        }

        if($result == 0){
            unset($result);
            $result = $client->call('bpSettleRequest',$params,'http://interfaces.core.sw.bps.com/');
            $error = $client->getError();
            if($error){
                BankLog::add('خطا در درخواست واریز وجه', 'SaleReferencedId: '.$SaleReferenceId.' - '.strip_tags($error));
                return true;
            }
            if($result == 0 || $result == 45){
                return true;
            }else{
                BankLog::add('خطا در درخواست واریز وجه','SaleReferencedId: '.$SaleReferenceId);
                return true;
            }
        }

        return false;
    }

    public function go2bank($id='')
    {
        ?>
        <html><head><meta charset='utf-8' /></head><body>
        <div style="text-align: center; padding: 20px; direction: rtl; background-color: #faf4db; font-family: 'BNazanin', Tahoma">
            در حال اتصال به درگاه پرداخت. لطفا کمی صبر کنید . . .
        </div>
        <form name='bankForm' action='https://bpm.shaparak.ir/pgwchannel/startpay.mellat' method='POST'>
            <input type='hidden'  name='RefId' value='<?php echo $id  ?>'>
        </form>
        <script language='javascript'>document.bankForm.submit()</script>
        </body></html>
        <?php
        die;
    }

    /*
     * Return true if has error //(boolean)('string') = true
     */
    public function getError()
    {
        if(empty($this->error))
            return false;
        return $this->error;
    }

    private $errorMessages = 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 => 'درخواست Verify یافت نشد',
        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 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 $ecode.':'.$tmess;
    }
}
  پاسخ
تشکر شده توسط : arashz44
#3
میشه نمونه ساده ای از یک پرداخت با کلاسی که نوشتید رو بنویسید. من از مراحل کار زیاد اطلاعی ندارم.
  پاسخ
تشکر شده توسط :
#4
لطفا کمک کنید خیلی عجله دارم.
  پاسخ
تشکر شده توسط :


پرش به انجمن:


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