Логотип

Документация по макросам и шаблонам UMI.CMS

$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>

Пример вызова

udata://emarket/purchase

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.

udata://emarket/purchase/result/successful

<udata module="emarket" method="purchase" generation-time="0.018240">
  <purchasing stage="result" step="successful">
    <status>successful</status>
  </purchasing>
</udata>

Элементы и атрибуты

См. выше в описаниях XML-ответов UData.

 

Начальным шаблоном является файл переданный в параметре 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

Используемые блоки шаблонов

required/personal: /tpls/emarket/required/default.tpl

required_block

Блок оформления формы ввода недостающих пользовательских данных.

%customer_id%

Идентификатор покупателя

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

delivery_address_item

Блок для оформления отдельного адреса из списка ранее использованных адресов.

%id%

Идентификатор адреса доставки.

payment/choose: /tpls/emarket/payment/default.tpl

payment_block

Общий блок для выбора способа оплаты.

%items%

Место, куда будет вставлен список из доступных способов оплаты.

payment_item

Блок оформления отдельного способа доставки из списка.

%id%

Идентификатор способа доставки.

%name%

Название способа доставки.

* payment/chronopay: /tpls/emarket/payment/chronopay/default.tpl

form_block

Блок для создания формы отправки данных в платежную систему. Все локальные макросы этого блока выводят специфические поля для оплаты Chronopay. Если это необходимо, можно изучить шаблон /tpls/emarket/payment/chronopay/default.tpl самостоятельно.

* payment/payonline: /tpls/emarket/payment/payonline/default.tpl

form_block

Блок для создания формы отправки данных в платежную систему. Используется только %formAction%, который передаст все необходимые параметры в платежную систему PayOnline.

result/successful: /tpls/emarket/default.tpl

purchase_successful

Блок, выводящий текст успешного завершения покупки.

result/failed: /tpls/emarket/default.tpl

purchase_failed

Блок, выводящий текст неудачного завершения покупки.

Название

%emarket purchase()% — Осуществляет поэтапный процесс оформления заказа для текущего пользователя.

Параметры: emarket purchase([template= 'default'])

template

Шаблон отображения результатов.В XSLT-шаблонизаторе игнорируется.

Описание

Макрос отвечает за процесс оформления заказа. Процесс оформления заказа разбит на этапы, которые, в зависимости от настроек модуля и выбранных вариантов в процессе оформления могут разбиваться на разное количество шагов.

Этапы и шаги автоматически передаются в качестве параметров макроса в URL: param0 (первый параметр) — это этап, param1 (второй параметр) — это шаг.

Письма покупателю, как в XSLT, так и в TPL-шаблонизаторе отправляются по шаблону /tpls/emarket/mail/default.tpl

Процесс оформления заказа

  1. required — этот этап может быть опущен, если у пользователя, делающего заказ, заполнены все обязательные поля персональных данных. В ином случае, инициируется этот этап с единственным шагом personal — который предоставляет возможность пользователю заполнить свои персональные данные.

    Например, если вы хотите, чтобы незарегистрированные покупатели не смогли сделать заказ, не указав e-mail для связи, — необходимо в модуле "Шаблоны данных" отредактировать тип данных "незарегистрированный покупатель", сделав поле e-mail обязательным.

  2. delivery — этот этап отвечает за выбор пользователем адреса и способа доставки.

    • delivery/address — на этом шаге необходимо указать адрес доставки. Если пользователь уже ранее делал заказ, то ему также будет предоставлена возможность выбрать введенный ранее адрес.

    • delivery/choose — на этом шаге пользователь выбирает один из доступных способов доставки.

  3. payment — этот этап отвечает за выбор пользователем способа оплаты заказа. В зависимости от выбранного способа оплаты, шаги доступные на этом этапе могут отличаться.

    • payment/choose — на этом шаге пользователю будет предложено выбрать один из доступных на сайте способов оплаты. В зависимости от выбора инициализируется один из следующих шагов.

    • payment/chronopay — этот шаг инициализируется, если пользователь выбрал Chronopay в качестве платежной системы.

    • payment/payonline — этот шаг инициализируется, если пользователь выбрал PayOnline в качестве платежной системы.

    Если в качестве способа оплаты был выбран тип способа оплаты "платежная квитанция", то сразу после выбора (отправки данных формы) произойдет вывод квитанции в окно браузера и переход на финальный этап. Вывод квитанции осуществляется по шаблону ~/xsltTpls/sys-tpls/emarket-receipt.xsl как для XSLT, так и для TPL-шаблонизатора.

  4. result — финальный этап оформления заказа. Содержит единственный шаг result/successful, инициализирующийся, если все прошло успешно, или result/failed, в ином случае.

Этапы 2 и 3 также могут быть опущены, в случае, если в настройках модуля "Интернет-магазин" отключены опции "Системы доставки" и "Системы оплаты" соответственно.