<?php 

/* Оплата через ASSIST */
class system_of_pay_handler
{
	/* Идентификатор сайта (Shop_IDP) в системе ASSIST, например, 123456 */
	var $Shop_IDP = '123456';

	/* Идентификатор валюты.
	Указывается ID валюты рубли (RUR)
	*/
	var $assist_currency_id  = 1;

	/*
	Режим работы магазина:
	true - тестовый режим;
	false - боевой режим (не забудьте изменить режим магазина в системе ASSIST).
	*/
	var $test_mode = true;

	/**
	 * Обработка статуса оплаты
	 *
	 */
	function ProcessResult()
	{

	}

	/**
	 * Отображает стартовую страницу для оплаты через ASSIST.
	 *
	 */
	function ShowPurseRequest()
	{
		$shop_id = to_int($GLOBALS['shop_id']);

		/* Получаем id текущего пользователя сайта */
		if (class_exists('SiteUsers'))
		{
			/* Получаем id текущего пользователя сайта */
			$SiteUsers = & singleton('SiteUsers');
			$site_users_id = $SiteUsers->GetCurrentSiteUser();
		}
		else
		{
			$site_users_id = false;
		}

		/* ID платежной системы берем из сессии */
		$system_of_pay_id = to_int($_SESSION['system_of_pay_id']);

		// статус платежа, по умолчанию 0
		$order_row['status_of_pay'] = 0;

		// дата платежа, по умолчанию пустая строка
		$order_row['date_of_pay'] = '';

		// описание и системная информация, по умолчанию пустая строка
		if (to_str($_SESSION['shop_coupon_text']) != '')
		{
			$order_row['description'] = "Купон на скидку: ".to_str($_SESSION['shop_coupon_text'])."\n";
		}
		else
		{
			$order_row['description'] = '';
		}

		$shop = & singleton('shop');

		/* Оформляем заказ */
		$order_id = $shop->ProcessOrder($shop_id, $site_users_id, $system_of_pay_id, $order_row);

		// Оформление заказа произошло успешно
		if ($order_id > 0)
		{
			if (!class_exists('SiteUsers'))
			{
				/* Класс пользователей сайта не существует, дописываем информацию о заказчике
				в поле shop_order_description из текущей сессии */
				if ($order_row)
				{
					/* E-Mail заказчика */
					$user_email = trim(to_str($_SESSION['site_users_email']));

					/* Описание заказчика */
					$order_row['description'] .= "Информация о заказчике:\n"
					."Имя: ".to_str($_SESSION['site_users_name'])."\n"
					."Фамилия: ".to_str($_SESSION['site_users_surname'])."\n"
					."Отчество: ".to_str($_SESSION['site_users_patronymic'])."\n"
					."E-Mail: ".to_str($_SESSION['site_users_email'])."\n"
					."Телефон: ".to_str($_SESSION['site_users_phone'])."\n"
					."Факс: ".to_str($_SESSION['site_users_fax'])."\n"
					."Адрес: ".to_str($_SESSION['site_users_address'])."\n";

					/* Обязательно добавляем идентификатор! */
					$order_row['id'] = $order_id;

					$shop->InsertOrder($order_row);
				}
			}
			else
			{
				$user_email = false;
			}

			if ($order_row)
			{
				$shop_row = $shop->GetShop($GLOBALS['shop_id']);

				/* Делаем перерасчет суммы в валюту */
				$shop_currency_id = $shop_row['shop_currency_id'];

				/* Определяем коэффициент пересчета */
				$coefficient = $shop->GetCurrencyCoefficientToShopCurrency($shop_currency_id, $this->assist_currency_id );

				$currency_row = $shop->GetCurrency($shop_currency_id);

				// округляем до десятых после запятой
				$sum = round($order_row['sum'] * $coefficient, 2);

				/* Информация об алиасе сайта */
				$site = & singleton ('site');
				$site_alias = $site->GetCurrentAlias($shop_row['site_id']);

				/* Получаем путь к магазину */
				$Structure = & singleton('Structure');
				$shop_path = "/".$Structure->GetStructurePath($shop_row['structure_id'], 0);

				$handler_url = 'http://'.$site_alias.$shop_path;

				// Определяем город
				$row_city = $shop->GetCity($order_row['shop_city_id']);
				$city_name = to_str($row_city['shop_city_name']);
				
				?>
				<h1>Оплата через систему ASSIST</h1>
								
				<p>
				<a href="http://www.assist.ru" target="_blank">
				<img src="http://www.assist.ru/images/assist_logo.gif" width="155" height="49" border="0" alt="Система электронных платежей">
				</a>
				</p>
				
				<p>Сумма к оплате составляет <strong><?php echo $sum?> <?php echo $currency_row['shop_currency_name']?></strong></p>
				
				<?php 
				if (strlen(trim($order_row['shop_order_users_surname'])) == 0
				|| strlen(trim($order_row['shop_order_users_name'])) == 0)
				{
					?>
					<p>Для оплаты, пожалуйста, укажите имя и фамилию в личных данных.</p>
					<?php 
				}
				else
				{
					?>
					<p>Для оплаты нажмите кнопку "Оплатить".</p>
					
					<p style="color: rgb(112, 112, 112);">
					Внимание! Нажимая &laquo;Оплатить&raquo; Вы подтверждаете передачу контактных данных на сервре ASSIST.RU для оплаты.
					</p>
					
					<?php 
					// Адрес меняется в зависимости от режима (с 15 июня 2008 года)
					if ($this->test_mode)
					{
						$link = 'test.assist.ru';
					}
					else 
					{
						$link = 'secure.assist.ru';
					}
					?>
					
					<form name="form1" action="https://<?php echo $link?>/shops/cardpayment.cfm" method="POST">
					<input type="hidden" name="Shop_IDP" value="<?php echo $this->Shop_IDP?>">
					<input type="hidden" name="Order_IDP" value="<?php echo $order_id?>">
					<input type="hidden" name="Subtotal_P" value="<?php echo $sum?>">
					<input type="hidden" name="Language" value="0">
					<input type="hidden" name="Comment" value="Оплата счета N <?php echo $order_id?>">
					<input type="hidden" name="Delay" value="0">
					
					<input type="hidden" name="URL_RETURN_OK" value="<?php echo $handler_url?>">
					<input type="hidden" name="URL_RETURN_NO" value="<?php echo $handler_url?>">
				
					<!-- Производить оплату по кредитной карте -->
					<input type="hidden" type="text" name="CardPayment" value="1">
					
					<!-- Использовать платежную систему WebMoney Transfer -->
					<input type="hidden" type="text" name="WebMoneyPayment" value="1">
					
					<!-- Использовать платежную систему Rapida -->
					<input type="hidden" type="text" name="RapidaPayment" value="1">
					
					<!-- Использовать платежную систему PayCash -->
					<input type="hidden" type="text" name="PayCashPayment" value="1">
					
					<!-- Использовать платежную систему E-Port -->
					<input type="hidden" type="text" name="EPortPayment" value="1">
					
					<!-- Использовать платежную систему KreditPilot -->
					<input type="hidden" type="text" name="KreditPilotPayment" value="1">
					
					<!-- оплата кредитной картой с использованием -->
					<input type="hidden" type="text" name="AssistIDCCPayment" value="1">
					
					<input type="hidden" name="Lastname" value="<?php echo htmlspecialchars($order_row['shop_order_users_surname'])?>">
					<input type="hidden" name="Firstname" value="<?php echo htmlspecialchars($order_row['shop_order_users_name'])?>">
					<input type="hidden" name="MiddleName" value="<?php echo htmlspecialchars($order_row['shop_order_users_patronymic'])?>">
					
					<input type="hidden" name="Email" value="<?php echo htmlspecialchars($order_row['shop_order_users_email'])?>">
					<input type="hidden" name="Address" value="<?php echo htmlspecialchars($city_name)?>, <?php echo htmlspecialchars($order_row['address'])?>">
					<input type="hidden" name="Phone" value="<?php echo htmlspecialchars($order_row['shop_order_users_phone'])?>">
					
					<input type="hidden" type="text" name="IsFrame" value="0">
				
					<input type="hidden" name="City" value="<?php echo htmlspecialchars($city_name)?>">
					<input type="hidden" name="Zip" value="<?php echo htmlspecialchars($order_row['index'])?>">
					
					<?php 
					if ($this->test_mode)
					{
						?><input type="hidden" name="DemoResult" value="AS000"><?php 
					}
					?>
					
					<input type="submit" name="Submit" value="Оплатить <?php echo $sum?> <?php echo $currency_row['shop_currency_name']?>">
					</form>
					<?php 
				}
			}

			$structure = & singleton('Structure');
			$structure_row = $structure->GetStructureItem(to_int($shop_row['structure_id']));

			$lib = new lib();
			$LA = $lib->LoadLibPropertiesValue(to_int($structure_row['lib_id']), to_int($structure_row['structure_id']));

			$date_str = date("d.m.Y H:i:s");

			/* Отправляем письмо заказчику */
			$shop->SendMailAboutOrder($shop_id,
			$order_id,
			$site_users_id,
			to_str($LA['xsl_letter_to_admin']),
			to_str($LA['xsl_letter_to_user']),
			$user_email,
			array('admin-content-type' => 'html',
			'user-content-type' => 'html',
			'admin-subject' => sprintf($GLOBALS['MSG_shops']['shop_order_admin_subject'], $order_id, $shop_row['shop_shops_name'], $date_str),
			'user-subject' => sprintf($GLOBALS['MSG_shops']['shop_order_user_subject'], $order_id, $shop_row['shop_shops_name'], $date_str)));
		}
		else
		{
			switch ($order_id)
			{
				case -1:
					{
						echo "Ошибка вставки заказа в базу данных. Обратитесь к администратору.";
						break;
					}
				case -2:
					{
						echo "Ошибка - не найден магазин. Обратитесь к администратору.";
						break;
					}
			}
		}

		return true;
	}

	/**
	 * Метод, запускающий выполнение обработчика
	 *
	 */
	function Execute()
	{
		/* Иначе оформляем заказ и отображаем стартовую страницу для оплаты */
		$this->ShowPurseRequest();

		return true;
	}

	/**
	 * Метод для отображения формы заказа для печати.
	 *
	 * @param int $order_id идентификатор заказа
	 */
	function PrintOrder($order_id)
	{

	}
	
	/**
	 * Изменение статуса заказа. Позволяет пользователю внедрять собственные
	 * обработчики при изменении статуса.
	 * 
	 * @param array $param массив атрибутов
	 * - $param['shop_order_id'] идентификатор заказа
	 * - $param['action'] выполняемое действие над заказом, может принимать
	 * значения: edit (редактирование товара), cancel (отмена заказ),
	 * status (изменение статуса заказа), delete (удаление заказа)
	 */
	function ChangeStatus($param = array())
	{
		
	}
}
?>