Другой вариант платежной квитанции

Материал из Umicms
Версия от 12:47, 5 июня 2013; Mad grant (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к:навигация, поиск

В данной статье описывается подключение способа оплаты Платежной квитанцией. От уже существующего способа оплаты, данный вариант отличается лишь тем, что после того как пользовать выбрал данный способ оплаты и нажал кнопку «Далее», он перемещается на страницу с сообщением об успешном добавлении заказа, а не отображение самой квитанции. Также на данной странице можно перейти по ссылке, для просмотра квитанции на оплату.

Для выполнения данной задачи, в модуле Шаблоны данных, в разделе «Способ оплаты», создадим дочерний тип по отношению к типу «Платежная квитанция», допустим «Платежная квитанция v.2». Запомним id только что созданного типа. Перейдем в раздел «Справочники» модуля Шаблоны данных, откроем содержание справочника «Типы способов оплаты», вызвав контекстное меню. Добавим новый тип оплаты, допустим «Платежная квитанция v.2», откроем его на редактирование, установим «Идентификатор типа оплаты»: receiptnew, а «Тип данных»: id нового типа данных, который был ранее вами создан. Если у элемента справочника, присутствует поле "Тип данных (guid)", то необходимо указать в этом поле подобный guid: emarket-payment-835, в случае если type_id нового типа = 835. Также в базе данных, в таблице cms3_object_types, необходимо найти тип с id=835, и поставить для него такой же guid = emarket-payment-835.


В папке \classes\modules\emarket\classes\payment\systems\ создадим файл receiptnew.php со следующим содержанием:

<?php
	class receiptnewPayment extends payment {
		public function validate() {
			return true;
		}
		
		public function process() {
			$order = $this->order;		
			$order->order();			
			$order->payment_document_num = $order->id;

                        $controller = cmsController::getInstance();
			$module = $controller->getModule("emarket");
			if($module) {
			 $customer = umiObjectsCollection::getInstance()->getObject($order->getCustomerId());
  			 $getcode= sha1("{$customer->id}:{$customer->email}:{$order->order_date}");
  			 $getid = $order->id;
  			 $url = $controller->pre_lang . "/emarket/purchase/result/successful/?code={$getcode}&id={$getid}";
		         $module->redirect($url);
			}
		}
		
		public function poll() {
			$buffer = outputBuffer::current();
			$buffer->clear();
			$buffer->contentType('text/plain');
			$buffer->push('Sorry, but this payment system doesn\'t support server polling.' . getRequest('param0'));
			$buffer->end();
		}
		
	};
?>

Далее в самом модуле Интернет магазин, во вкладке Оплаты, добавим наш новый тип оплаты.

Потом, в файле classes/modules/custom.php добавим кастомный макрос (после слов //TODO:...):

   public function urlreceipt(){
      if(array_key_exists('code', $_GET) && array_key_exists('id', $_GET)){
        $id = htmlspecialchars($_GET['id']);
        $code = htmlspecialchars($_GET['code']);
        $url = "/emarket/receipt/{$id}/{$code}/";
        
        return "Квитанцию на оплату вы можете получить, перейдя по <a href=\"{$url}\" target=\"_blank\">этой ссылке</a>.";  
      }    
    }


Ну а в шаблоне tpls/emarket/default.tpl, в блоке 'purchase_successful', добавим вызов нашего кастомного макроса:

%custom urlreceipt()%<br />

Вот пожалуй и все.