Пример создания нового способа оплаты — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
Строка 8: Строка 8:
 
1. Открыть модуль '''Шаблоны данных''' и найти там "'''Способы оплаты'''". Добавить в него дочерний шаблон, назвав его например, так "''Перевод через сервис Visa QIWI Wallet''".<br/>
 
1. Открыть модуль '''Шаблоны данных''' и найти там "'''Способы оплаты'''". Добавить в него дочерний шаблон, назвав его например, так "''Перевод через сервис Visa QIWI Wallet''".<br/>
 
2. В созданном шаблоне создаем два поля:<br/>
 
2. В созданном шаблоне создаем два поля:<br/>
'''Как платить?[kak_platit]''' - тип HTML-текст, видимое.<br/>
+
'''Как платить? [kak_platit]''' - тип HTML-текст, видимое.<br/>
'''Номер телефона[phone]''' - тип Строка, видимое.<br/>
+
'''Номер телефона [phone]''' - тип Строка, видимое.<br/>
 
[[Файл:Newpay1.png]]<br>
 
[[Файл:Newpay1.png]]<br>
 
Запоминаем id шаблона из адресной строки браузера:<br/>
 
Запоминаем id шаблона из адресной строки браузера:<br/>
Строка 16: Строка 16:
 
3. В этом же модуле, на вкладке Справочники, находим справочник "'''Типы способов оплаты'''" и нажимаем на иконку глаза, чтобы открыть содержимое справочника.<br/>
 
3. В этом же модуле, на вкладке Справочники, находим справочник "'''Типы способов оплаты'''" и нажимаем на иконку глаза, чтобы открыть содержимое справочника.<br/>
 
Добавляем новое наименование.<br/>
 
Добавляем новое наименование.<br/>
В поле "'''Название'''" напишем тоже самое "''Перевод через сервис Visa QIWI Wallet''", в поле "'''Тип данных (id)'''" наш запомненный ранее id "''131''", в поле "'''Тип данных'''" напишем "''emarket-payment-131''", где 131 - это наш id. А вот в поле "'''Идентификатор типа доставки'''" напишем название будущего класса, которое должно отражать предназначение класса. Указывается латинскими буквами. У меня в примере данный класс называется ''simpleQIWI'' (Обратите внимание, что название регистрозависимое. Если мы используем прописные буквы, то точно также мы должны их использовать и в дальнейшем).<br/>
+
В поле "'''Название'''" напишем тоже самое "''Перевод через сервис Visa QIWI Wallet''", в поле "'''Тип данных (id)'''" наш запомненный ранее id "''131''", в поле "'''Тип данных'''" напишем "''emarket-payment-131''", где 131 - это наш id. А вот в поле "'''Идентификатор типа оплаты'''" напишем название будущего класса, которое должно отражать предназначение класса. Указывается латинскими буквами. У меня в примере данный класс называется ''simpleQIWI'' (Обратите внимание, что название регистрозависимое. Если мы используем прописные буквы, то точно также мы должны их использовать и в дальнейшем).<br/>
 
[[Файл:Qiwi6.png]]<br>
 
[[Файл:Qiwi6.png]]<br>
 
4. Открываем базу данных через phpMyAdmin и выполняем запрос:<br/>
 
4. Открываем базу данных через phpMyAdmin и выполняем запрос:<br/>
Строка 69: Строка 69:
 
8. Проверьте, что файл в кодировке utf-8 (без BOM).<br/>
 
8. Проверьте, что файл в кодировке utf-8 (без BOM).<br/>
 
9. В административном интерфейсе сайта, в модуле Интернет-магазин, создайте новый способ оплаты "''Перевод через сервис Visa QIWI Wallet''", заполните поля '''Номер телефона''' и '''Как платить?'''.<br>[[Файл:Newpay2.png]]<br/>
 
9. В административном интерфейсе сайта, в модуле Интернет-магазин, создайте новый способ оплаты "''Перевод через сервис Visa QIWI Wallet''", заполните поля '''Номер телефона''' и '''Как платить?'''.<br>[[Файл:Newpay2.png]]<br/>
11. Добавим новый шаг в шаблон оформления заказа на этапе выбора способа оплаты: \templates\demodizzy\xslt\modules\emarket\purchase\payment.xsl
+
10. Добавим новый шаг в шаблон оформления заказа на этапе выбора способа оплаты: \templates\demodizzy\xslt\modules\emarket\purchase\payment.xsl
 
<source lang="xml">
 
<source lang="xml">
 
<xsl:template match="purchasing[@stage = 'payment'][@step = 'simpleQIWI']">
 
<xsl:template match="purchasing[@stage = 'payment'][@step = 'simpleQIWI']">
Строка 87: Строка 87:
 
</xsl:template>
 
</xsl:template>
 
</source>
 
</source>
10. Проверим.<br/>
+
11. Проверим.<br/>
[[Файл:Newpay3.png]]<br/>
+
[[Файл:Newpay3.png]]<br/><br/>
[[Файл:Newpay4.png]]
+
[[Файл:Newpay4.png]]<br/><br/>
 +
[[Файл:Newpay5.png]]
  
 
[[Категория:Модуль Интернет магазин]][[Категория:Написание кастомных макросов]]
 
[[Категория:Модуль Интернет магазин]][[Категория:Написание кастомных макросов]]

Версия 21:02, 30 ноября 2013

Актуально для версии 2.9

Задача: создать способ оплаты с дополнительным шагом, на котором показать пользователю дополнительную информацию.
Решение: для решения поставленной задачи, создадим новый способ оплаты.

Чтобы добавить новый тип доставки, Вам следует выполнить следующие шаги:
1. Открыть модуль Шаблоны данных и найти там "Способы оплаты". Добавить в него дочерний шаблон, назвав его например, так "Перевод через сервис Visa QIWI Wallet".
2. В созданном шаблоне создаем два поля:
Как платить? [kak_platit] - тип HTML-текст, видимое.
Номер телефона [phone] - тип Строка, видимое.
Newpay1.png
Запоминаем id шаблона из адресной строки браузера:
/admin/data/type_edit/131/ - то есть у меня id=131
Qiwi5.png
3. В этом же модуле, на вкладке Справочники, находим справочник "Типы способов оплаты" и нажимаем на иконку глаза, чтобы открыть содержимое справочника.
Добавляем новое наименование.
В поле "Название" напишем тоже самое "Перевод через сервис Visa QIWI Wallet", в поле "Тип данных (id)" наш запомненный ранее id "131", в поле "Тип данных" напишем "emarket-payment-131", где 131 - это наш id. А вот в поле "Идентификатор типа оплаты" напишем название будущего класса, которое должно отражать предназначение класса. Указывается латинскими буквами. У меня в примере данный класс называется simpleQIWI (Обратите внимание, что название регистрозависимое. Если мы используем прописные буквы, то точно также мы должны их использовать и в дальнейшем).
Qiwi6.png
4. Открываем базу данных через phpMyAdmin и выполняем запрос:

UPDATE `blank`.`cms3_object_types` SET `guid` = 'emarket-payment-131' WHERE `cms3_object_types`.`id` =131;

В данном запросе следует изменить:
'blank' - на название вашей базы данных,
'emarket-payment-131' - на emarket-payment с вашим id
131 - на ваш id
5. Заходим на сайт по FTP, открываем директорию:
\classes\modules\emarket\classes\payment\systems\
где копируем файл courier.php и переименовываем его в simpleqiwi.php - у Вас может быть другое название, которое Вы указали в 3 шаге.
6. Открываем файл на редактирование и изменяем:
название класса courierPayment на simpleQIWIPayment (у вас может быть другое название, указанное на 3 шаге).
7. Доработаем содержимое класса на наше усмотрение. Здесь мы вместо редиректа передаем массив с данными об ID заказа, его номере и итоговую сумму заказа, а также кладем в ячейки массива содержимое полей "Номер телефона" и "Как платить?":

<?php
	class simpleQIWIPayment extends payment {

		public function validate() { return true; }

		public function process($template = null) {
			$order = $this->order;
			$order->order();
			$controller = cmsController::getInstance();
			$module = $controller->getModule("emarket");
			$line['attribute:orderId'] = $order->getId();
			$line['attribute:number'] = $order->getValue('number');
			$line['attribute:total_price'] = $order->getValue('total_price');
			$line['attribute:phone'] = $this->object->phone;
			$line['node:value'] = $this->object->kak_platit;
			$lines[] = $line;
			$udata['nodes:item'] = $lines;
			if($module) {
				return $udata;
			}
			return null;
		}

		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();
		}

	};
?>


8. Проверьте, что файл в кодировке utf-8 (без BOM).
9. В административном интерфейсе сайта, в модуле Интернет-магазин, создайте новый способ оплаты "Перевод через сервис Visa QIWI Wallet", заполните поля Номер телефона и Как платить?.
Newpay2.png
10. Добавим новый шаг в шаблон оформления заказа на этапе выбора способа оплаты: \templates\demodizzy\xslt\modules\emarket\purchase\payment.xsl

	<xsl:template match="purchasing[@stage = 'payment'][@step = 'simpleQIWI']">
			<div class="ramka">
				<h3>Сведения которые необходимо указать при оплате:</h3>
				<h4>Номер телефона: <xsl:value-of select="item/@phone" /></h4>
				<h4>Сумма к оплате: <xsl:value-of select="item/@total_price" /></h4>
				<h4>Комментарий: Заказ №<xsl:value-of select="item/@number" /></h4>
			</div>
			<br/>
			<xsl:value-of select="item" disable-output-escaping="yes"/>
			<div class="cart-buttons">
				<a href="{$lang-prefix}/emarket/purchase/result/successful/" class="button big">
					<xsl:text>Завершить</xsl:text>
				</a>
			</div>
	</xsl:template>

11. Проверим.
Newpay3.png

Newpay4.png

Newpay5.png