miniShop2 DeliveryHandler

Помогите разобраться, пожалуйста.

Задача: добавить свою цену доставки к цене корзины. Чтобы потом отправить на оплату.

Создал расширение класса
core/components/minishop2/custom/delivery/mscustomorderhandler.class.php

возращаю цену + цену за доставку, но сама цена доставки не прибавляется к цене корзины, а отнимается от цены корзины и переносится к цене доставки.
Не уверен, что понятно объясняю…

Вообщем, пример.
Товаров в корзине на 5000 рублей. Цена доставки — 300 рублей.
По идее в письме менеджеру должно приходить письмо с надписью.

Итого, с доставкой: 5 000 руб. + 300 руб. = 5 300 руб.

А приходит…

Итого, с доставкой: 4 700 руб. + 300 руб. = 5 000 руб.

Не очень понимаю, почему так. Можете подсказать?
Максим
11 марта 2020, 02:04
modx.pro
675
0

Комментарии: 3

Михаил
11 марта 2020, 07:20
0
Код бы конечно глянуть, как ты там расширил
    Максим
    11 марта 2020, 12:38
    0
    <?php
    if(!class_exists('msDeliveryInterface')) {
        require_once dirname(dirname(dirname(__FILE__))) . '/model/minishop2/msdeliveryhandler.class.php';
    }
    
    class msDeliveryHandlerMsk extends msDeliveryHandler implements msDeliveryInterface{
    
        public function getCost(msOrderInterface $order, msDelivery $delivery, $cost = 0) {
            
            $delivery_cost = $_SESSION["delivery"];
            unset($_SESSION["delivery"]);
            
            $cost += $delivery_cost;
            
            return $cost;
        }
    }
    В сессии хранится цена доставки (по другому не придумал как передавать цену).
    По итогу все работает, только вот цена доставки вычитается из цены корзины.
      Максим
      11 марта 2020, 13:16
      0
      А если заменить $_SESSION[«delivery»] на статичное число — все работает нормально.
      Но я не очень понимаю
      Как получается моя ошибка с сессиями.
      Как по другому передать цену за доставку, если она высчитывается отдельным сервисом.

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