PDA

View Full Version : کلاس بانک ملت



Muhammad-Ali
سه شنبه 10 تیر 1393, 21:34 عصر
سلام
یک نیمچه کلاس برای دروازه پرداخت بانک ملت نوشتم. زحمت میکشید اگر یه نگاهی بندازید ببینید ایرادی داره یا نه(امنیتی و . . . ). خصوصا متد verify

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

class Mellat {
const terminalID = '123';
const username = 'user';
const password = 'pass';
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 * 10 ,
'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();
}

$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]];
}else{
return $res[1];
}
}

public $SaleReferenceId = '';
public function verify()
{
$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];
return false;
}

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

$result = $client->call('bpVerifyRequest',$params,'http://interfaces.core.sw.bps.com/');
$error = $client->getError();
if($error){
$this->error = $error;
return false;
}

if($result == 0){
unset($result);
$result = $client->call('bpSettleRequest',$params,'http://interfaces.core.sw.bps.com/');
$error = $client->getError();
if($error){
$this->error = $error;
return false;
}
if($result == 0){
return true;
}

}

return false;
}


/*
* 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 => 'خطا در واریز',
);
}

smksmk
جمعه 13 تیر 1393, 10:56 صبح
من کد رو کامل ندیدم ولی در همین خط اول به جای :

require_once('lib/nusoap.php');

از


require_once('./lib/nusoap.php');

استفاده کنید که همین کد شما رو کپی میکنند و خیلی ها باهاش مشکل پیدا میکنند .

Muhammad-Ali
جمعه 20 تیر 1393, 23:29 عصر
از


require_once('./lib/nusoap.php');

استفاده کنید که همین کد شما رو کپی میکنند و خیلی ها باهاش مشکل پیدا میکنند .

این روش برای بنده روی ویندوز ارور میده.

smksmk
شنبه 21 تیر 1393, 00:15 صبح
از مسیر کامل برای آدرس دهی فایل استفاده کنید .

arya_a
یک شنبه 05 مرداد 1393, 20:48 عصر
سلام و عرض ادب خدمت اساتید محترم
یک راهنمایی میخواستم در خصوص درگاه بانک ملت، من یک فرم برای اتصال به بانک نوشتم و بدون مشکل هم کار میکنه خوشبختانه.
اصل مشکل در اینجا هستش که وقتی قصد استفاده در وردپرس (wordpress) را دارم و به صورت include در یک تمپلت وارد می کنم با مشکل بر میخورم.

وقتی به قسمت:
require_once('lib/nusoap.php');
میرسه دیگه باقی کدها را لود نمی کنه و صفحه کامل بارگزاری نمیشه که کار کنه.

ممنون میشم تا که در این خصوص و استفاده از nusoap.php در وردپرس راهنمایی نمایید.

با تشکر