Добрый день! Извиняюсь за долгий ответ, был в отъезде на несколько дней. Вопрос ваш довольно интересный. Вам ребята судя по всему помогли, но чтобы еще более фэншуйно получилось, надо конечно нам и ядро чуть-чуть доработать будет, добавив признак связанных товаров. Ведь по сути, даже если вы реализовали добавление нескольких товаров, если в итоге клиент захочет отказаться от какого-то товара, то и все сопутствующие к нему товары надо бы убирать. Да и вообще видеть их в форме заказа, хотя бы для удобства. Ну да ладно, это потом, а пока просто еще более детально разберем еще один вариант реализации этой задачи, потому что тайминги в JS — это не совсем круто, да и прочие моменты есть. Вам на самом деле просто надо переопределить action-процессор и в нем реализовать циклическое выполнение процессора добавления товара. Как это делается, написано здесь (читайте внимательно раздел «Переопределяем процессоры»). В кастомном action-процессоре укажите свой отдельный процессор, в методе process которого и пропишите примерно следующее: public function process(){ $path = $this->modx->getObject('modNamespace', 'basket')->getCorePath().'processors/';

foreach($products as $product_id => $quantity){
    
    if(!$response = $modx->runProcessor('basket/web/orders/products/add',
    array(
        "product_id"    => $product_id,
        "quantity"      => $quantity ? $quantity : 1,
    ), array(
        'processors_path' => $path,
    ))){
        return $this->failure("Не удалось выполнить процессор");
    }
    
    // else
    if($response->isError()){
        return $response->getResponse();
    }
}

return $this->success('Товары успешно добавлены');

} Тут конечно могут быть логические ошибки с обработчиком ошибок (к примеру, из пяти товаров 3 добавилось, а с четвертым ошибка, и он вернет ошибку, хотя три все-таки будут добавлены), но это крайне мелкая вероятность, так что можно пренебречь. И именно поэтому и надо ядро доработать. Но в целом это вполне рабочий вариант, и выполнено будет в один запрос, после чего корректно на сервер уйдет запрос на состояние корзины. P.S. Спасибо за положительные отзывы :)