PDA

View Full Version : پرداخت آنلاین زرین پال برای yii ؟



barname_newis
یک شنبه 04 خرداد 1393, 23:40 عصر
سلام
خسته نباشید
افزونه پرداخت آنلاین زرین پال برای yii نوشته شده؟ تو آزمایشگاه زرین پال که نبود .

MMSHFE
دوشنبه 05 خرداد 1393, 11:14 صبح
کاری نداره خودتون میتونید بنویسید.

rezaonline.net
پنج شنبه 08 خرداد 1393, 00:43 صبح
<?php


class zarinpal
{
private $merchantID = '51cb0127-6ef4-4152-b699-2bd25ee8a9d3';


/**
* method send request to bank and get authority!
*
* @param $price int , toman تومان
* @param $order_id int , unique id
* @param $callback string , callback site
* @return $au string
**/
public function request($price = NULL , $order_id = NULL , $callback = NULL)
{
@$client = new SoapClient('http://www.zarinpal.com/WebserviceGateway/wsdl', array('encoding'=>'UTF-8'));
@$res = $client->PaymentRequest($this->merchantID, $price, $callback, urlencode("خرید محصول به شماره درخواست $order_id") );

return $res;
}


/* go to bank by au */
public function go2bank($au='')
{
$_ ="https://www.zarinpal.com/users/pay_invoice/$au";
$go = strip_tags($_);
@header("Location: {$go}");
die(CHtml::link($go,$go));

}


/**
* method to check verify transaction
*
* @param $price int , تومان
* @param $order_id int , unique order id
* @param $au string , authority code
* @return bool true/false
**/
public function verify($price = NULL ,$order_id = NULL , $au = NULL)
{
if(empty($_GET['au']) or $_GET['au'] != $au)
throw new CHttpException(501,'اعتبارسنجی وضعیت پرداخت نامعتبر است .');

if(strlen($_GET['au'])==36)
{
try
{
@$client = new SoapClient('http://www.zarinpal.com/WebserviceGateway/wsdl', array('encoding'=>'UTF-8'));
@$res = $client->PaymentVerification($this->merchantID, $au, $price);
}
catch (Exception $e)
{
throw new CHttpException(501,$e->getMessage());
}

//check result
if($res==1)
{
return true;
}
elseif($res == -1)
throw new CHttpException(501,'اطلاعات ناقص است');
elseif($res == -2)
throw new CHttpException(501,'وبسرویس نامعتبر است');
elseif($res == 0)
throw new CHttpException(501,' عملیات پرداخت بصورت کامل طی نشده است');
elseif($res == -11)
throw new CHttpException(501,'مقدار تراکنش ارسال شده با مقدار پرداختی در دروازه پرداخت مطابقت نمیکند');
elseif($res == -12)
throw new CHttpException(501,'مان فعال جهت پرداخت صورت حساب طی شده و کاربر عمليات پرداخت را تکميل نکرده است !');
else
throw new CHttpException(501,"خطا در اعتبارسنجی وضعیت پرداخت");
}
else
return false;
}


}