<?
/*
//www.sofitran.org
*/
	//-- اطلاعات کلی پلاگین
	$pluginData[irankish][type] = 'payment';
	$pluginData[irankish][name] = 'دروازه پرداخت ایران کیش';
	$pluginData[irankish][uniq] = 'irankish';
	$pluginData[irankish][description] = 'مخصوص پرداخت با دروازه پرداخت ایران کیش';
	$pluginData[irankish][author][name] = 'softiran';
	$pluginData[irankish][author][url] = 'http://softiran.org';
	$pluginData[irankish][author][email] = 'esmailian12@gmail.com';
	
	//-- فیلدهای تنظیمات پلاگین
	$pluginData[irankish][field][config][1][title] = ' کد پذیرنده ';
	$pluginData[irankish][field][config][1][name] = 'merchant';	
	$pluginData[irankish][field][config][2][title] = 'کلید sha1Key';
	$pluginData[irankish][field][config][2][name] = 'sha1Key';
	
	//-- تابع انتقال به دروازه پرداخت
	function gateway__irankish($data)
	{
		global $db,$smarty;
		$query	= 'SELECT * FROM `config` WHERE `config_id` = "1" LIMIT 1';
		$conf	= $db->fetch($query);
		
		$client = new SoapClient('https://ikc.shaparak.ir/XToken/Tokens.xml', array('soap_version'   => SOAP_1_1));

		$params['amount'] = $data[amount];
		$params['merchantId'] = $data[merchant];
		$params['invoiceNo'] = $data[invoice_id];
		$params['paymentId'] = $data[invoice_id];
		$params['specialPaymentId'] = $data[invoice_id];
		$params['revertURL'] = $data[callback];
		$params['description'] = "";
		$result = $client->__soapCall("MakeToken", array($params));
		$data[token] = $result->MakeTokenResult->token;
		$update[payment_res_num] = $data[token];
        $sql = $db->queryUpdate('payment', $update, 'WHERE `payment_rand` = "' . $data[invoice_id] . '" LIMIT 1;');
        $db->execute($sql);
		
		$smarty->assign('config', $conf);
		$smarty->assign('data', $data);
		$smarty->display('irankish.tpl');
	}
	
	//-- تابع بررسی وضعیت پرداخت
	function callback__irankish($data)
	{
		global $db,$post;
		$merchantID = trim($data[merchant]);
		$sha1Key = trim($data[sha1Key]);
		if (isset($_POST['resultCode'])) 
		{
			$resultCode = $_POST['resultCode'];
			$referenceId = isset($_POST['referenceId']) ? $_POST['referenceId'] : 0;
			$paymentId = isset($_POST["paymentId"]) ? $_POST['paymentId'] : 0;
			if ($resultCode == '100')
			{
					$sql 		= 'SELECT * FROM `payment` WHERE `payment_rand` = "'.$paymentId.'" LIMIT 1;';
					$payment 	= $db->fetch($sql);
				if ($payment) 
				{
					$client = new SoapClient('https://ikc.shaparak.ir/XVerify/Verify.xml', array('soap_version'   => SOAP_1_1));
					$params['token'] =  $payment[payment_res_num];
					$params['merchantId'] = $merchantID;
					$params['referenceNumber'] = $referenceId;
					$params['sha1Key'] = $sha1Key;
					$result = $client->__soapCall("KicccPaymentsVerification", array($params));
					$result = ($result->KicccPaymentsVerificationResult);
					
					if (floatval($result) == floatval($payment[payment_amount])) 
					{	
						if ($payment[payment_status] == 1)
						{
							$output[status]		= 1;
							$output[res_num]	= $referenceId;
							$output[ref_num]	= $paymentId;
							$output[payment_id]	= $payment[payment_id];
						}
					}else
					{
						$output[status]	= 0;
						$output[message]= messeg2($result);
					}
				}
			}
			else { 
				switch ($resultCode) {
					case 110:
							$output[message]= " انصراف دارنده کارت";
							$output[status]	= 0;
						break;
					case 120:
						$output[message]= "   موجودی کافی نیست";
						$output[status]	= 0;
						break;
					case 130:
					case 131:
					case 160:
						$output[message]= "   اطلاعات کارت اشتباه است";
						$output[status]	= 0;
						break;
					case 132:
					case 133:
						$output[message]= "   کارت مسدود یا منقضی می باشد";
						$output[status]	= 0;
						break;
					case 140:
						$output[message]= " زمان مورد نظر به پایان رسیده است";
						$output[status]	= 0;
						break;
					case 200:
					case 201:
					case 202:
						$output[message]= " مبلغ بیش از سقف مجاز";
						$output[status]	= 0;
						break;
					case 166:
						$output[message]= " بانک صادر کننده مجوز انجام  تراکنش را صادر نکرده";
						$output[status]	= 0;
						break;
					case 150:
					default:
						$output[message]= " خطا بانک  $resultCode";
						$output[status]	= 0;
					break;
				}
			}
		}else
		{
			$output[status]	= 0;
			$output[message]= 'اطلاعات پرداخت کامل نیست';
		}
		return $output;
	}
	function messeg2($result)
	{
		switch ($result) 
		{
			case '-20':
					return "در درخواست کارکتر های غیر مجاز وجو دارد";
				break;
				case '-30':
					return " تراکنش قبلا برگشت خورده است";
				break;
				case '-50':
					return " طول رشته درخواست غیر مجاز است";
				break;
				case '-51':
					return " در در خواست خطا وجود دارد";
				break;
				case '-80':
					return " تراکنش مورد نظر یافت نشد";
				break;
				case '-81':
					return " خطای داخلی بانک";
				break;
				case '-90':
					return " تراکنش قبلا تایید شده است";
				break;
				default:
				return " خطا بانک  $result";
		}
	}