<?php 

/* Оплата через платежную систему Yandex.Деньги */
/* Возможна оплата как через интерфейс Яндекс.Денег и кошелек */
class system_of_pay_handler
{
	// ---------------------------------
	// Для оплаты через "Интернет.Кошелек"
	// ---------------------------------

	// Идентификатор валюты. Указывается ID валюты рубли (RUR)
	var $ym_currency_id = 1;
	
	// Коэффициент увеличения цены при оплате Яндекс.Деньгами
	var $ym_coefficient = 1;

	/* Идентификатор счета получателя для оплаты на кошелек */
	var $ym_account_id = "1234567891234";

	/* Адрес магазина*/
	var $ym_shop_address = 'admin@localhost.ru';

	var $ym_shop_key_id = '';
	var $ym_encryption_key = '';

	// ---------------------------------
	// Для оплаты через "Яндекс.Деньги"
	// ---------------------------------

	// код валюты - рубли
	//var $TargetCurrency = 643;
	var $TargetCurrency = 10643;

	// код валюты - рубли
	//var $currency = 643;
	var $currency = 10643;

	// идентификатор процессингового центра платежной системы
	//var $BankID = 100;
	var $BankID = 1003;

	// идентификатор процессингового центра платежной системы
	//var $TargetBankID = 1001;
	var $TargetBankID = 1003;

	// тип платежа: по технологии PayCash
	var $PaymentTypeCD = 'PC';

	/* Идентификатор магазина в ЦПП - уникальное значение,
	присваивается Магазину платежной системой после заключения договора */
	var $ym_shop_id = 0;

	// Адрес платежной системы
	//var $action = 'http://money.yandex.ru/select-wallet.xml';
	var $action = 'http://demomoney.yandex.ru/select-wallet.xml';


	/**
	 * Метод, запускающий выполнение обработчика
	 *
	 */
	function Execute()
	{
		/* Обработчик формы оплаты "Оплата при получении" */
		$shop_id = to_int($GLOBALS['shop_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']);

				/* Делаем перерасчет суммы в валюты, выбранные для WebMoney */
				$shop_currency_id = $shop_row['shop_currency_id'];
				$coefficient = $shop->GetCurrencyCoefficientToShopCurrency($shop_currency_id, $this->ym_currency_id);

				$ym_sum = round($order_row['sum'] * $coefficient * $this->ym_coefficient, 2);

				// Определим ФИО заказчика
				if (!class_exists('SiteUsers'))
				{
					$fio = trim(to_str($_SESSION['site_users_surname']) . ' ' .
					to_str($_SESSION['site_users_name']) . ' ' .
					to_str($_SESSION['site_users_patronymic']));

					$address = to_str($_SESSION['site_users_address']);

					$email = to_str($_SESSION['site_users_email']);
				}
				else
				{
					$fio = trim($order_row['shop_order_users_surname'] . ' ' .
					$order_row['shop_order_users_name'] . ' ' .
					$order_row['shop_order_users_patronymic']);

					$address = $order_row['index'] . ' ' . $order_row['address'];

					$email = $order_row['shop_order_users_email'];
				}

				?>
				<!-- Форма для оплаты через Yandex.Деньги -->
				<h1>Из какого Кошелька вы будете платить?</h1>
				
				<div style="background-color: #D8F0C6; padding: 10px; margin-right: 5%; float: left; width: 50%">
				
					<span style="font-size: 150%">Яндекс.Кошелек</span>
				
					<p>Чтобы пользоваться Яндекс.Кошельком, достаточно активировать его и создать платежный пароль.</p>
					
					<p>Если вы пользуетесь программой Интернет.Кошелек, вы можете платить с ее помощью — см. блок справа.</p>

					<form method="post" action="<?php echo $this->action?>">
						<input type="hidden" name="TargetCurrency" value="<?php echo $this->TargetCurrency?>">
						<input type="hidden" name="currency" value="<?php echo $this->currency?>">
						<input type="hidden" name="wbp_InactivityPeriod" value="2">
						<input type="hidden" name="wbp_ShopAddress" value="wn1.paycash.ru:8828">
						<input type="hidden" name="wbp_ShopEncryptionKey" value="hAAAEicBAHV6wr3pySqE3thhKHb...">
						<input type="hidden" name="wbp_ShopKeyID" value="4060341894">
						<input type="hidden" name="wbp_Version" value="1.0">
						<input type="hidden" name="wbp_CorrespondentID" value="8994748E663DE6B3C68D2D9931B079C74789D4B4">
						<input type="hidden" name="BankID" value="<?php echo $this->BankID?>">
						<input type="hidden" name="TargetBankID" value="<?php echo $this->TargetBankID?>">
						<input type="hidden" name="PaymentTypeCD" value="<?php echo $this->PaymentTypeCD?>">
						<input type="hidden" name="ShopID" value="<?php echo $this->ym_shop_id?>">
						<input type="hidden" name="CustomerNumber" value="<?php echo $order_id?>">
						<input type="hidden" name="Sum" value="<?php echo $ym_sum?>">
						<input type="hidden" name="CustName" value="<?php echo $fio?>">
						<input type="hidden" name="CustAddr" value="<?php echo $address?>">
						<input type="hidden" name="CustEMail" value="<?php echo $email?>">
						<!-- Содержание заказа: -->
						<!-- <input type="hidden" name="OrderDetails" value=""> -->
						<input type="submit" value="Платить через Яндекс.Деньги" style="font-size: 160%">
					</form>
				</div>
				
				<div style="background-color: #EEEEF2; padding: 10px; margin-right: 5%; float: left; width: 30%">
				
					<span style="font-size: 150%">Программа «Интернет.Кошелек» на моем компьютере</span>
					
					<p>Проверьте, не забыли ли вы запустить программу.</p>
				
					<form action="http://127.0.0.1:8129/wallet" method="POST" target="_blank">
					<input type="hidden" name="wbp_Version" value="2">
					<input type="hidden" name="wbp_MessageType" value="DirectPaymentIntoAccountRequest">
					<input type="hidden" name="wbp_ShopAddress" value="<?php echo $this->ym_shop_address?>">
					<input type="hidden" name="wbp_accountid" value="<?php echo $this->ym_account_id?>">
					<input type="hidden" name="wbp_currencyamount" value="643;<?php echo $ym_sum?>">
					<input type="hidden" name="wbp_ShopErrorInfo" value="Деньги не отправлены">
					<input type="hidden" name="wbp_shortdescription" value="<?php echo $order_id?>">
					<input type="hidden" name="wbp_template_1" value="Оплата заказа №<?php echo $order_id?>">
					<input type="hidden" name="wbp_template_2" value="<?php echo to_str($shop_row['shop_order_address'])?>">
					Сумма заказа: <strong><?php echo $ym_sum?>&nbsp;руб.</strong>
					<p><input type="submit" name="submit" value="Платить через Интернет.Кошелек" style="font-size: 160%"></p>
					</form>			
				
				</div>
				
				<div style="clear: both"></div>
				<?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;
					}
			}
		}
	}

	/**
	 * Метод для отображения формы заказа для печати.
	 *
	 * @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())
	{
		
	}
}
?>