Начиная с 16 версии используется новая версия ядра магазина Битрикс, являющаяся частью ядра Битрикс D7. Многое описанное здесь может работать и в переходной версии 15.5. Все классы для работы с магазином собраны в модуле sale, поэтому для работы примером используем use для пространства модуля интернет-магазина.

Заказ (SaleOrder)

Заказ представляет собой объект класса BitrixSaleOrder. Нужно запомнить, что пока не вызван метод save() этот объект необязательно связан с сохранённым заказом. Также пока вы не вызовете save(), изменения в заказе не будут сохранены в базе данных.

Существующий заказ можно получить следующим образом:

Поля заказа можно получить короткими вызовами:

Также любое поле по имени можно получить так:

Список доступных полей можно получить, вызвав $order->getAvailableFields().

Заказ имеет связь один-ко-многим с несколькими объектами в виде коллекций — коллекция товаров в корзине (SaleBasket), коллекция отгрузок (SaleShipmentCollection), коллекция оплат (SalePaymentCollection) и коллекция свойств заказа (SalePropertyValueCollection).

Самый простой способ получить список способов доставки и оплаты — короткие вызовы:

Чтобы получить список примененных к заказу скидок, нужно вызвать:

В массиве $discountData[‘DISCOUNT_LIST’] содержится список скидок, в $discountData[‘COUPON_LIST’] содержится список купонов. Т.к. скидки можно отключать в админке, следует проверять поле APPLY: если Y — скидка/купон применёны, если N — были отключены менеджером.

Корзина заказа (SaleBasket)

Про работу с корзиной была отдельная статья, привязать и получить корзину заказа можно так:

Свойства заказа (SalePropertyValueCollection)

Свойства заказа — объекты BitrixSalePropertyValue — собраны в коллекции propertyCollection

Получить значения всех свойств и группы свойств можно так:

У многих свойств заказа есть определенное встроенное назначение (атрибуты IS_EMAIL, IS_PAYER, IS_LOCATION, IS_LOCATION4TAX, IS_PROFILE_NAME, IS_ZIP, IS_PHONE, IS_ADDRESS). Такие свойства можно получить следующими методами:

Получить значение свойства по ID:

В любом случае получаем значение свойства — экземпляр класса BitrixSalePropertyValue. Из него мы можем получить значение свойства:

И информацию о самом свойстве:

Чтобы изменить значение свойства следует вызвать метод setValue и сохранить сущность

Оплаты заказа (SalePaymentCollection)

Из коллекции оплат также можно получить информацию об оплате, что и из объекта заказа. Оплата с внутреннего счета также считается одной из оплат:

Коллекция содержит объекты оплаты SalePayment с информацией об оплатах:

Оплатить или вернуть оплату можно методами setPaid(), setReturn():

Инициировать оплату (вывести шаблон оплаты: форму, кнопку и т.п.) можно следующим образом:

Пример оформления заказа в D7

Для примера приведу простейший код оформления заказа с комментариями

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

Цепочка наследования

Методы класса

$id .

—>

Метод Описание С версии
addPrintedCheck Привязывает к объекту заказа чек. 17.0.1
getDeliveryIdList Возвращает список ID служб доставок, которые используются в заказе. 18.0.0
getPaySystemIdList Возвращает список ID платежных систем, которые используются в заказе. 18.0.0
getPaymentCollection Возвращает коллекцию оплат, привязанных к заказу. 15.5.0
getPrintedChecks Возвращает список чеков (массив объектов класса BitrixSaleCashboxCheck ), которые были созданы для заказа. 17.0.1
getShipmentCollection Возвращает коллекцию отгрузок, привязанных к заказу. 15.5.0
getTradeBindingCollection Возвращает коллекцию различным источникам, которые привязаны к заказу. 18.5.0
loadPaymentCollection Возвращает коллекцию оплат, привязанных к заказу, из базы данных. 15.5.0
loadShipmentCollection Загружает коллекцию отгрузок, привязанных к заказу, из базы данных. 15.5.0
15.5.0
[link=BitrixSaleOrder::getLockedStatus]getLockedStatus[/link] Метод возвращает объект BitrixSaleResult с данными кто заблокировал заказ, статус блокировки и дату. 15.5.0
[link=BitrixSaleOrder::getTax]getTax[/link] Метод возвращает сущность класса BitrixSaleTax. 15.5.0
[link=BitrixSaleOrder::isLocked]isLocked[/link] Метод возвращает true, если заказ заблокирован. В противном случае, возвращает false. 15.5.0
[link=BitrixSaleOrder::lock]lock[/link] Метод выполняет блокировку заказа с кодом $id . 15.5.0
[link=BitrixSaleOrder::onBasketModify]onBasketModify[/link] Метод информирует заказ о том, что корзина изменилась, а также о конкретных измененных данных. 15.5.0
[link=BitrixSaleOrder::onPaymentCollectionModify]onPaymentCollectionModify[/link] Метод информирует заказ о том, что произошли изменения в коллекции оплат, а также о конкретных измененных данных. 15.5.0
[link=BitrixSaleOrder::onPaymentCollectionModify]onPropertyValueCollectionModify[/link] Метод информирует заказ о том, что произошли изменения в коллекции значений свойств, а также о конкретных измененных данных. 15.5.0
[link=BitrixSaleOrder::onShipmentCollectionModify]onShipmentCollectionModify[/link] Метод информирует заказ о том, что произошли изменения в коллекции отгрузок, а также о конкретных измененных данных. 15.5.0
[link=BitrixSaleOrder::refreshData]refreshData[/link] Метод выполняет обновление данных заказа. 15.5.0
[link=BitrixSaleOrder::setAccountNumber]setAccountNumber[/link] Метод запускает процесс генерации номера заказа на основе идентификатора этого заказа. 15.5.0
[link=BitrixSaleOrder::setBasket]setBasket[/link] Метод прикрепляет корзину к заказу. 15.5.0
[link=BitrixSaleOrder::unlock]unlock[/link] Метод снимает блокировку с заказа с кодом $id . 15.5.0
[link=6852129]save[/link] Метод сохраняет данные заказа и сущности относящиеся к нему. 15.5.0

Методы родительского класса BitrixSaleOrderBase

Метод Описание С версии
appendBasket Прикрепляет корзину к новому заказу. 17.5.0
applyDiscount Применяет рассчитанные скидки к заказу. 18.0.0
create Создает объект заказа. 15.5.0
delete Удаляет заказ, предварительно отменяя заказ. 18.0.0
deleteNoDemand Удаляет заказ напрямую из базы. 18.0.0
doFinalAction Выполняет расчет скидок, налогов и применяет их к заказу. 18.0.0
getAvailableFields Возвращает массив полей, которые могут быть установлены через методы setField() и setFields() . 15.5.5
getBasket Возвращает объект корзины, прикрепленной к заказу. 15.5.0
getCurrency Возвращает валюту заказа. 15.5.0
getDateInsert Возвращает дату создания заказа. 15.5.0
getDeliveryLocation Возвращает стоимость доставок для всех заказов. 15.5.0
getDeliveryPrice Возвращает стоимость доставок для всех заказов. 15.5.0
getDiscount Возвращает объект класса BitrixSaleDiscountBase . 18.0.0
getDiscountPrice Возвращает величину скидки/наценки на заказ. 15.5.0
getHash Возвращает хеш заказа. 18.0.0
getId Возвращает ID заказа. 15.5.0
getPersonTypeId Возвращает ID типа плательщика заказа, к которому привязан заказ. 15.5.0
getPrice Возвращает стоимость заказа с учетом скидок/наценок. 15.5.0
getPropertyCollection Возвращает коллекцию значений свойств, привязанных к заказу 15.5.0
getRegistryType Возвращает тип реестра, которому относится объект. 18.0.0
getSiteId Возвращает ID сайта, на котором оформлялся заказ. 15.5.0
getSumPaid Возвращает стоимость заказа, которую уже оплатили. 15.5.0
getTax Возвращает объект класса BitrixSaleTax . 17.5.0
getTaxLocation Возвращает ID местоположения которое используется для расчета налогов. 18.0.0
getTaxPrice Возвращает величину налога на заказ. 15.5.0
getTaxValue Возвращает ставку налога на заказ. 15.5.0
getUfId Возвращает ID пользовательских полей. По умолчанию null . 18.0.0
getUserId Возвращает ID покупателя. 15.5.0
getVatRate Возвращает ставку НДС, которая была применена. 15.5.0
getVatSum Возвращает общую величину НДС. 15.5.0
isAllowDelivery Возвращает значение true , если для заказа разрешена доставка (иначе возвращает false ). 18.0.0
isCanceled Возвращает значение true , если заказ отменен (иначе возвращает false ). 18.0.0
isChanged Возвращает значение true , если заказ изменен (иначе возвращает false ). 18.0.0
isExternal Возвращает true , если заказ пришел извне (например, из 1С). Иначе возвращает false . 15.5.2
isMarked Возвращает true , если заказ промаркирован (иначе возвращается false ). Заказы маркируются только в случае каких-либо ошибок. 16.0.22
isNotEmptyBasket Возвращает true , если корзина не пуста. В противном случае — false . 15.5.0
isPaid Возвращает значение true , если заказ оплачен (иначе возвращает false ). 18.0.0
isShipped Возвращает true , если заказ отгружен (иначе возвращает false ). 15.5.0
isUsedVat Возвращает true , если используется НДС (иначе возвращает false ). 15.5.0
load Загружает заказ по ID и возвращает объект (либо null ). 15.5.0
loadByAccountNumber Загружает заказ по его номеру и возвращает объект (либо null ). 18.0.0
loadByFilter Возвращает массив объектов заказа (либо null ). 18.0.0
loadPropertyCollection Загружает коллекцию значений свойств, привязанных к заказу из базы данных. 15.5.0
refreshData Выполняет пересчет заказа. 17.5.0
refreshVat Выполняет пересчет налогов. 15.5.0
resetData Сбрасывает информацию по заказу. 18.5.3
resetTax Сбрасывает информацию по налогам. 18.0.0
save Сохраняет заказ. 15.5.0
setBasket Прикрепляет корзину к новому заказу и актуализирует ее. При попытке прикрепить корзину к существующему заказу будет выброшено исключение: BitrixMainNotSupportedException . 18.0.0
setPersonTypeId Устанавливает ID типа плательщика для заказа. 15.5.0
verify Проверяет заказ и связанные с ним сущности на корректность. 18.0.0

Методы родительского класса BitrixSaleInternalsEntity

Метод Описание С версии
doFinalAction Абстрактный метод, предназначенный для реализации логики "конечных" расчетов. 15.5.0
getAvailableFields Возвращает массив полей, которые могут быть установлены через методы setField() и setFields() . 15.5.0
getAvailableFieldsMap Возвращает массив полей, которые могут быть установлены через методы setField() и setFields() . В качестве ключей массива выступают значения getAvailableFields. 17.5.0
getField Возвращает значение поля $name . 18.0.3
getFieldValues Возвращает массив полей со значениями. 15.5.0
getId Возвращает идентификатор сущности. 15.5.0
initField Инициализирует поле значением. При этом объект не считается измененным. 15.5.0
initFields Инициализирует поля значениями. При этом объект не считается измененным. 15.5.0
isChanged Проверяет, была ли изменена сущность. Если да, то возвращает true , иначе false . 15.5.2
isMathActionOnly Проверяет, идет ли расчет на текущих данных (данные из провайдера не запрашиваются). Если да, то возвращает true , иначе false . 15.5.0
setField Устанавливает значение поля $name . 15.5.0
setFields Инициализирует поля значениями. При этом объект не считается измененным. 15.5.0
setMathActionOnly Отключает запросы к провайдеру при выполнении расчетов. 15.5.0
verify Проверяет, корректен ли объект. Возвращает объект BitrixSaleResult . 16.0.0

Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.

Создание заказа через api d7. Заказ корзины либо конкретных товаров минуя корзину.

Для начала необходим класс функций, которая будет создавать пользователя, если заказ происходит без авторизации. Данный класс создает пользователя с логином соответствующим номеру телефона, либо возвращает ID пользователя, если таковой уже есть. Второй параметр $newUserProps функции getByPhone может содержать другие параметры пользователя, например, E-mail. Эти параметры используются только при создании пользователя. Если заказ происходит только после авторизации, данный класс не нужен:

Другой вариант функции авторегистрации — пользователь создается в любом случае, независимо от того, регистрировался ли он ранее:

Непосредственно код создания заказа:

Пример ajax-обработчика для создания заказа с одним товаром (11 и 12 — это идентификаторы инфоблока товаров и предложений соответственно):