Серверный API

    Серверный API

    Корзины и списки товаров

    Получить корзину товаров в своем коде довольно просто:

    // получить объект корзины:
    $cart = $modx->commerce->getCart();
    // или так:
    $cart = ci()->carts->getCart('products');
    
    // получить товары из корзины:
    $items = $cart->getItems();

    При создании корзины можно передать ее название вторым аргументом, и зарегистрированное хранилище - третьим:

    new Commerce\Carts\ProductsCart($modx, $instance = 'products', $store = 'session');

    Commerce по-умолчанию использует корзину товаров и списки сравнения и избранного. Любой из них может быть заменен в момент инициализации, например:

    if ($modx->event->name == 'OnInitializeCommerce') {
        $cart = new Commerce\Carts\ProductsCart($modx);
        ci()->carts->addCart('products', $cart);
    }

    По умолчанию товары в корзине хранятся в сессии пользователя, списки сравнения и избранного - в cookies (только идентификаторы товаров). Способ хранения также может быть изменен при инициализации:

    if ($modx->event->name == 'OnInitializeCommerce') {
        class DatabaseCartStore extends Commerce\Carts\SessionCartStore {
            // ...
        }
    
        ci()->carts->registerStore('database', DatabaseCartStore::class);
    
        $cart = new Commerce\Carts\ProductsCart($modx, 'products', 'database');
        ci()->carts->addCart('products', $cart);
    }

    add - добавление товара в корзину

    $cart->add(array $item, $isMultiple = false);

    В массиве $item передается информация о товаре, должны быть как минимум id и count. Параметр isMultiple означает множественное добавление, если равен true, в случае успеха не вызывается событие OnCartChanged.

    addMultiple - пакетное добавление товаров в корзину

    $cart->addMultiple(array $items = []);

    update - изменение товара в корзине

    $cart->update($row, array $attributes = [], $isAdded = false);

    В параметре $row передается символьный идентификатор строки в корзине, в $attributes - поля, которые нужно изменить. $isAdded означает, было ли действие изначально добавлением товара или нет.

    remove - удаление товара из корзины

    $cart->remove($row);

    Удаляет товар из корзины по символьному идентификатору строки.

    removeById - удаление товаров по идентификатору товара

    $cart->removeById($id);

    Удаляет товары из корзины по уникальному идентификатору товара/ресурса в дереве.

    clean - очистка корзины

    $cart->clean();

    setTitleField - задание имени поля для использования в качестве названия товаров

    $cart->setTitleField($field);

    setPriceField - задание имени поля для использования в качестве цены товаров

    $cart->setPriceField($field);

    getSubtotals - расчет подитогов и итоговой стоимости товаров в корзине

    $cart->getSubtotals(array &$rows, &$total);

    Вызывается событие OnCollectSubtotals, подитоги записываются в $rows, итоговая сумма - в $total.

    Обработчик заказа OrderProcessor

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

    $processor = $modx->commerce->loadProcessor();

    createOrder - создание заказа

    $order = $processor->createOrder(array $items, array $fields);

    addOrderHistory - добавление пункта в историю заказа

    $processor->addOrderHistory($order_id, &$status_id, &$comment = '', &$notify = false);

    changeStatus - изменение статуса заказа

    $processor->changeStatus($order_id, $status_id, $comment = '', $notify = false, $template = null);

    updateOrder - изменение данных заказа

    $processor->updateOrder($order_id, $data = []);

    deleteOrder - удаление заказа

    $processor->deleteOrder($order_id);

    getOrder - получение текущего заказа

    $processor->getOrder();

    loadOrder - получение заказа по идентификатору

    $processor->loadOrder($order_id, $force = false);

    loadOrderByHash - получение заказа по хэшу

    $processor->loadOrderByHash($order_hash);

    payOrderByHash - создание платежа для заказа по хэшу платежа

    $processor->payOrderByHash($hash);

    loadPayment - получение платежа по идентификатору

    $processor->loadPayment($payment_id);

    loadPaymentByHash - получение платежа по хэшу

    $processor->loadPaymentByHash($hash);

    createPayment - создание платежа

    $processor->createPayment($order_id, $amount);

    savePayment сохранение данных платежа

    $processor->savePayment($payment);

    getOrderPaymentsAmount - получение суммы всех платежей для заказа

    $processor->getOrderPaymentsAmount($order_id);

    isOrderStarted - начато ли оформление заказа

    $processor->isOrderStarted();

    updateRawData - обновление сырых данных заказа (используется в процессе заполнения формы)

    $processor->updateRawData($data);

    getCurrentDelivery - получение текущего способа доставки

    $processor->getCurrentDelivery();

    getCurrentPayment - получение текущего способа оплаты

    $processor->getCurrentPayment();