$purchase = $this->macros('emarket', 'purchase');
Для шаблонов оформления заказа рекомендуется использовать конструкцию вида:
<xsl:template match="/result[@method = 'purchase']">
<xsl:apply-templates select="document('udata://emarket/purchase')" />
</xsl:template>
После чего все этапы и шаги описываются условиями соответствия match="purchasing[@stage = 'этап'][@step = 'шаг']
, например:
<xsl:template match="purchasing[@stage = 'delivery'][@step = 'choose']">
... форма выбора способа доставки ...
</xsl:template>
XML-ответ UData
udata://emarket/purchase/required/personal
<udata module="emarket" method="purchase" generation-time="0.349294">
<purchasing stage="required" step="personal">
<customer-id>27627</customer-id>
</purchasing>
</udata>
Возвращает в элементе customer-id
идентификатор покупателя. Для выводы формы заполнения нужных полей необходимо воспользоваться макросом %data getEditForm()%, передав ему customer-id
.
udata://emarket/purchase/delivery/address
<udata module="emarket" method="purchase" generation-time="0.336794">
<purchasing stage="delivery" step="address" type-id="803" xlink:href="udata://data/getCreateForm/803">
<items>
<item id="27619" name="Address for customer #2324"/>
</items>
</purchasing>
</udata>
Возвращает в items
список адресов, уже использовавшимися при предыдущих заказах этого покупателя, а также ссылку на вызов макроса %data getCreateForm()% для вывода формы создания нового адреса. Форма выбора адреса должна быть отправлена на ~emarket/purchase/delivery/address/do
.
udata://emarket/purchase/delivery/choose
<udata module="emarket" method="purchase" generation-time="0.472375">
<purchasing stage="delivery" step="choose">
<items>
<item id="27255" name="Самовывоз" xlink:href="uobject://27255"/>
<item id="27234" name="Тестовая доставка" xlink:href="uobject://27234"/>
</items>
</purchasing>
</udata>
Возвращает в items
список доступных на сайте способов доставки, которые могут быть использованы для создания формы с выбором. Форма выбора способа доставки должна быть отправлена на ~emarket/purchase/delivery/choose/do
udata://emarket/purchase/payment/choose
<udata module="emarket" method="purchase" generation-time="0.242062">
<purchasing stage="payment" step="choose">
<items>
<item id="27529" name="Платежная квитанция" xlink:href="uobject://27529"/>
<item id="27530" name="Оплата через Chronopay" xlink:href="uobject://27530"/>
<item id="27519" name="ЮMoney" xlink:href="uobject://27519"/>
<item id="27518" name="PayOnline System" xlink:href="uobject://27518"/>
</items>
</purchasing>
</udata>
Возвращает в items
список доступных на сайте способов оплаты, которые могут быть использованы для создания формы с выбором. Форма выбора способы оплаты должна быть отправлена на ~emarket/purchase/payment/choose/do
* udata://emarket/purchase/payment/chronopay
<udata module="emarket" method="purchase" generation-time="0.023396">
<purchasing stage="payment" step="chronopay">
<formAction>https://secure.chronopay.com/selection.cgi</formAction>
<product_name>27665</product_name>
<product_price>720</product_price>
<language>Ru</language>
<cs1>27665</cs1>
<cb_type>P</cb_type>
<cb_url>адрес_сайта/emarket/gateway/27665/</cb_url>
<decline_url>адрес_сайта</decline_url>
<sign>1f723f4f8ffce0f45cc800301f4e1f05</sign>
</purchasing>
</udata>
Возвращает поля с настройками платежной системы Chronopay.
* udata://emarket/purchase/payment/payonline
<udata module="emarket" method="purchase" generation-time="0.020317">
<purchasing stage="payment" step="payonline">
<formAction>
https://secure.payonlinesystem.com/ru/payment/
?MerchantId=&OrderId=27665&Amount=720.00&Currency=RUB
&SecurityKey=c9d37976f19ff8fdfc9f0efaf17639eb&order-id=27665
</formAction>
</purchasing>
</udata>
Возвращает aсtion
для формы запроса в платежную систему PayOnline.
Начальным шаблоном является файл переданный в параметре template
и расположенный в /tpls/emarket/
(по умолчанию default.tpl
). Шаблоны используемые далее зависят от этапа и шага.
Используемые шаблоны
-
required/personal
— используется шаблон/tpls/emarket/required/default.tpl
-
delivery/address
иdelivery/choose
— используется шаблон/tpls/emarket/delivery/default.tpl
-
payment/choose
— используется шаблон/tpls/emarket/payment/default.tpl
-
*
payment/chronopay
— используется шаблон/tpls/emarket/payment/chronopay/default.tpl
-
*
payment/payonline
— используется шаблон/tpls/emarket/payment/payonline/default.tpl
Используемые блоки шаблонов
delivery/address и delivery/choose: /tpls/emarket/delivery/default.tpl
delivery_block
Общий блок для выбора способа доставки.
- %items%
-
Место, куда будет вставлен список доступных способов доставки.
delivery_item_free
Блок для оформления отдельного элемента списка — бесплатного способа доставки.
- %id%
-
Идентификатор доставки.
- %name%
-
Название способа доставки.
delivery_item_priced
Блок для оформления отдельного элемента списка — платного способа доставки.
- %id%
-
Идентификатор доставки.
- %name%
-
Название способа доставки.
- %price%
-
Цена доставки.
delivery_address_block
Общий блок выбора адреса доставки.
- %items%
-
Указывает место, где будут перечислены предыдущие использованные адреса для этого покупателя.
- %type_id%
-
Указывает тип данных для того, чтобы можно было при помощи макроса %data getCreateForm()% создать форму ввода нового адреса доставки. На демо-сайте для этого макроса также используется шаблон
/tpls/data/reflection/purchase.tpl
payment/choose: /tpls/emarket/payment/default.tpl
Название
%emarket purchase()% — Осуществляет поэтапный процесс оформления заказа для текущего пользователя.
Параметры: emarket purchase([template= 'default'])
- template
-
Шаблон отображения результатов.В XSLT-шаблонизаторе игнорируется.
Описание
Макрос отвечает за процесс оформления заказа. Процесс оформления заказа разбит на этапы, которые, в зависимости от настроек модуля и выбранных вариантов в процессе оформления могут разбиваться на разное количество шагов.
Этапы и шаги автоматически передаются в качестве параметров макроса в URL: param0
(первый параметр) — это этап, param1
(второй параметр) — это шаг.
Письма покупателю, как в XSLT, так и в TPL-шаблонизаторе отправляются по шаблону /tpls/emarket/mail/default.tpl
Процесс оформления заказа
-
required
— этот этап может быть опущен, если у пользователя, делающего заказ, заполнены все обязательные поля персональных данных. В ином случае, инициируется этот этап с единственным шагомpersonal
— который предоставляет возможность пользователю заполнить свои персональные данные.Например, если вы хотите, чтобы незарегистрированные покупатели не смогли сделать заказ, не указав e-mail для связи, — необходимо в модуле "Шаблоны данных" отредактировать тип данных "незарегистрированный покупатель", сделав поле e-mail обязательным.
-
delivery
— этот этап отвечает за выбор пользователем адреса и способа доставки.-
delivery/address
— на этом шаге необходимо указать адрес доставки. Если пользователь уже ранее делал заказ, то ему также будет предоставлена возможность выбрать введенный ранее адрес. -
delivery/choose
— на этом шаге пользователь выбирает один из доступных способов доставки.
-
-
payment
— этот этап отвечает за выбор пользователем способа оплаты заказа. В зависимости от выбранного способа оплаты, шаги доступные на этом этапе могут отличаться.-
payment/choose
— на этом шаге пользователю будет предложено выбрать один из доступных на сайте способов оплаты. В зависимости от выбора инициализируется один из следующих шагов. -
payment/chronopay
— этот шаг инициализируется, если пользователь выбрал Chronopay в качестве платежной системы. -
payment/payonline
— этот шаг инициализируется, если пользователь выбрал PayOnline в качестве платежной системы.
Если в качестве способа оплаты был выбран тип способа оплаты "платежная квитанция", то сразу после выбора (отправки данных формы) произойдет вывод квитанции в окно браузера и переход на финальный этап. Вывод квитанции осуществляется по шаблону
~/xsltTpls/sys-tpls/emarket-receipt.xsl
как для XSLT, так и для TPL-шаблонизатора. -
-
result
— финальный этап оформления заказа. Содержит единственный шагresult/successful
, инициализирующийся, если все прошло успешно, илиresult/failed
, в ином случае.
Этапы 2 и 3 также могут быть опущены, в случае, если в настройках модуля "Интернет-магазин" отключены опции "Системы доставки" и "Системы оплаты" соответственно.