Достаточно краткая заметка, в рамках которой рассматривается вариант решения задачи по выводу содержимого корзины и свойств заказа (на примере поля email) на странице подтверждения заказа в Битриксе, то есть в confirm.php

Для чего может потребоваться этот функционал?
Как минимум, для ряда интеграций. Например, это могут быть скрипты CPA-сетей, агрегаторы ремаркетинга или сервисов персонализации. Не во всех, но во многих приходится добавлять содержимое заказа в скрипт на странице подтверждения заказа. Собственно, в рамках данной заметки и предложен вариант решения данной задачи.
Итак, с чего начать?
Для начала идем в папку активного шаблона, components, bitrix, sale.order.ajax, папка шаблона компонента, confirm.php. В этом файле будет проходить вся работа.
Все скрипты лучше всего добавлять в конец данного файла, это позволит избежать некоторых неожиданных событий.
Вызов содержимого корзины происходит следующим образом:
<? $rsCart = CSaleBasket::GetList(Array(),Array("ORDER_ID"=>$arResult['ORDER']['ID']));?>
<? while ($arCartItem = $rsCart->Fetch()) {?>
{ id: "<?=$arCartItem["PRODUCT_ID"]?>",
price: "<?=$arCartItem["PRICE"]*$arCartItem['QUANTITY']?>",
quantity: "<?=$arCartItem['QUANTITY']?>"
},
<?};?>
Строка с CSaleBasket::GetList, собственно, и вызывает содержимое корзины, принимая в качестве аргумента ID текущего заказа. И, соответственно, в цикле While переменные содержимого корзины записываются непосредственно в скрипт. В данном случае, это ID, Количество и цена. С корзиной закончили. Не так уж и сложно, верно?
Теперь мы можем перейти к вызову свойства заказа на примере EMAIL
Существует, видимо, несколько подходов, но автор данной заметки остановился на следующем:
<?
if($orderId = $arResult['ORDER']['ID']) {
$userEmail = "";
if($order = \Bitrix\Sale\Order::load($orderId)) {
/** @var \Bitrix\Sale\PropertyValueCollection $propertyCollection */
if($propertyCollection = $order->getPropertyCollection()) {
/** @var \Bitrix\Sale\PropertyValue $orderProperty */
foreach($propertyCollection as $orderProperty) {
//Ищет свойство заказа, у которого символьный код EMAIL
if($orderProperty->getField('CODE') == 'EMAIL') {
$userEmail = $orderProperty->getValue();
}
}
}
}
}
?>
В данном случае, несмотря на некоторую громоздкость кода, всё должно быть достаточно очевидно. Подгружаем свойства заказа (методом, где ИД заказа принят в качестве аргумента). Далее делаем проверку по символьному коду свойства заказа, в данном случае это свойство EMAIL. Если оно есть, то записываем его в переменную $userEmail. Далее её можно будет вызвать в нужном месте с помощью <?=$userEmail?>.
В общем и целом, на этом заметку можно закончить, так как цель, поставленная перед данной публикацией достигнута.