Есть пример оформления заказа по API на сайте
Битрикса
Я применяю его, подставляя свои данные, все записывается кроме цены, она идет 0.
$order->getPrice()
не находит нужную цену. Из формы когда вставляю
$request['ELEMENT_PRICE']
тоже не пишет, (в комменты пишет, а в заказ нет). В консоли ошибок нет. В админке тоже по 0 все
<? require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");
use Bitrix\Main\Application;
$application = Application::getInstance();
$context = $application->getContext();
global $APPLICATION;
global $USER;
$request = \Bitrix\Main\HttpApplication::getInstance()->getContext()->getRequest();
\Bitrix\Main\Web\Json::encode($request);
if ($request->isPost() && isset($request['ELEMENT_ID']) && isset($request['PHONE']) && isset($request['EMAIL']) && isset($request['ELEMENT_PRICE'])) {
Bitrix\Main\Loader::includeModule('sale');
Bitrix\Main\Loader::includeModule('catalog');
/*$products = array(
array('PRODUCT_ID' => $request['ELEMENT_ID'], 'NAME' => $request['ELEMENT_NAME'], 'PRICE' => $request['ELEMENT_PRICE'], 'CURRENCY' => 'RUB', 'QUANTITY' => 1)
);*/
$products = array(
array('PRODUCT_ID' => 699, 'NAME' => 'Товар 1', 'PRICE' => 800, 'CURRENCY' => 'RUB', 'QUANTITY' => 5)
);
$basket = Bitrix\Sale\Basket::create(SITE_ID);
foreach ($products as $product) {
$item = $basket->createItem("catalog", $product["PRODUCT_ID"]);
unset($product["PRODUCT_ID"]);
$item->setFields($product);
}
$order = Bitrix\Sale\Order::create(SITE_ID, 1);
$order->setPersonTypeId(1);
$order->setBasket($basket);
$shipmentCollection = $order->getShipmentCollection();
$shipment = $shipmentCollection->createItem(
Bitrix\Sale\Delivery\Services\Manager::getObjectById(1)
);
$shipmentItemCollection = $shipment->getShipmentItemCollection();
/** @var Sale\BasketItem $basketItem */
foreach ($basket as $basketItem) {
$item = $shipmentItemCollection->createItem($basketItem);
$item->setQuantity($basketItem->getQuantity());
}
$paymentCollection = $order->getPaymentCollection();
$payment = $paymentCollection->createItem(
Bitrix\Sale\PaySystem\Manager::getObjectById(2)
);
$payment->setField("SUM", $order->getPrice());
$payment->setField("CURRENCY", $order->getCurrency());
$order->doFinalAction(true);
// Устанавливаем свойства
$propertyCollection = $order->getPropertyCollection();
foreach ($propertyCollection->getGroups() as $group) {
foreach ($propertyCollection->getGroupProperties($group['ID']) as $property) {
$p = $property->getProperty();
if ($p["CODE"] == "EMAIL") {
$property->setValue($request['EMAIL']);
}
if ($p["CODE"] == "PHONE") {
$property->setValue($request['PHONE']);
}
if ($p["CODE"] == "NAME") {
$property->setValue($request['NAME']);
}
}
}
$order->setField('COMMENTS', $request['ELEMENT_PRICE'] . " get price =" . $order->getPrice());
$result = $order->save();
if (!$result->isSuccess()) {
echo $result->getErrors();
} else {
\Bitrix\Main\Web\Json::encode("ok");
}
} else {
echo "ERROR <br>";
echo "ELEMENT_ID " . $request['ELEMENT_ID'] . " НАзвание " . $request['ELEMENT_NAME'] . " PHONE " . $request['PHONE'] . " EMAIL " . $request['EMAIL'] . " ELEMENT_PRICE " . $request['ELEMENT_PRICE'];
} ?>