Добавление в корзину через CSaleBasket::Add()

Как бы все кладется в корзину, но после оформления заказа в админке товар в заказе был без связи с самим товаров.
После долгих переборов было выявлено, что нужно передавать следующий набор данных:

$arFields = array(
"PRODUCT_ID" => $row["ID"],
'CATALOG_XML_ID' => $row['IBLOCK_EXTERNAL_ID'],
'PRODUCT_XML_ID' => $row['EXTERNAL_ID'],
"PRODUCT_PRICE_ID" => 0,
"PRICE" => $_SESSION["BYORDERPRICE"][$row["ID"]],
"CURRENCY" => "RUB",
"QUANTITY" => 1,
"LID" => SITE_ID,
"DELAY" => "N",
"CAN_BUY" => "Y",
"NAME" => $row["~NAME"],
"WEIGHT" => $row["WEIGHT"],
"MODULE" => "catalog",
"NOTES" => "LONGORDER",
"DETAIL_PAGE_URL" => $row["DETAIL_PAGE_URL"],
"CALLBACK_FUNC" => "CatalogBasketCustomCallback",
"ORDER_CALLBACK_FUNC" => "CatalogBasketOrderCustomCallback",
"CANCEL_CALLBACK_FUNC" => "CatalogBasketCancelCallback",
"PAY_CALLBACK_FUNC" => "CatalogPayOrderCallback"
);

Где $row заполняется свойствами элемента CIBlockElement::getList().

Тогда товар попадает в корзину, потом в заказ, и из админки виден со ссылкой на карточку товара.

Нужно все это было для интеграции с RetailCRM, т.к. после второго обмена товары, что были добавлены вручную скриптом в корзину, дублировались.

Но теперь все ок )


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *