Ошибка в расчете стоимости доставки и заказа
Возникает ошибка в расчете стоимости доставки и заказа
Действовал по инструкции https://docs.modx.pro/components/minishop2/development/services/connection
1) создал класс доставки
2) Зарегистрируем службу через console
3) Выбрал обработчик в способе доставки msDeliveryHandler_cdekwidget
Теперь действия в корзине
При выборе способа доставки и расчетов, корректно обновляется общая стоимость заказа, с учетом доставки (через минишоповский скрипт), далее если в консоли посмотреть запросы, то
Никаких сторонних плагинов нет.
MODX Revo 2.8.4
Minishop2 3.0.7-pl
PHP Version 7.4.33
Скрин с заказом в админке
Действовал по инструкции https://docs.modx.pro/components/minishop2/development/services/connection
1) создал класс доставки
{core_path}components/minishop2/custom/delivery/cdekwidget.class.php
<?php
if(!class_exists('msDeliveryInterface')) {
require_once dirname(dirname(dirname(__FILE__))) . '/model/minishop2/msdeliveryhandler.class.php';
}
class msDeliveryHandler_cdekwidget extends msDeliveryHandler{
public function getCost(msOrderInterface $order, msDelivery $delivery, $cost = 0) {
session_start();
$cart = $this->ms2->cart->status();
$cart_cost = $cart['total_cost'];
$delivery_cost = $_SESSION['cdek_delivery_price'] ?? 0;
$total_cost = $cart_cost + $delivery_cost;
return (float) $total_cost;
}
}
Тут изначально возвращал $delivery_cost
, но тогда неверно считалось, действия в корзине идут именно с return (float) $total_cost;
2) Зарегистрируем службу через console
if ($miniShop2 = $modx->getService('miniShop2')) {
$miniShop2->addService('delivery', 'CDEKwidget',
'{core_path}components/minishop2/custom/delivery/cdekwidget.class.php');
}
3) Выбрал обработчик в способе доставки msDeliveryHandler_cdekwidget
Теперь действия в корзине
При выборе способа доставки и расчетов, корректно обновляется общая стоимость заказа, с учетом доставки (через минишоповский скрипт), далее если в консоли посмотреть запросы, то
/assets/components/minishop2/action.php
возвращает все верно{
"success": true,
"message": "",
"data": {
"cost": 255,
"cart_cost": 10,
"discount_cost": 0,
"delivery_cost": 245
}
}
Но после оформления заказа в админке отображается как стоимость товаров 0, а стоимость доставки 245.Никаких сторонних плагинов нет.
MODX Revo 2.8.4
Minishop2 3.0.7-pl
PHP Version 7.4.33
Скрин с заказом в админке

Комментарии: 1
Была моя же проблема в неправильном расчете.
Я получал моментальный/текущий расчет, но не учитывал дальнейшую обработку уже, скорее, в момент заказа.
Немного подправил класс доставки и использовал не текущую стоимость $cart, а именно передаваемую $cost
Я получал моментальный/текущий расчет, но не учитывал дальнейшую обработку уже, скорее, в момент заказа.
Немного подправил класс доставки и использовал не текущую стоимость $cart, а именно передаваемую $cost
<?php
if(!class_exists('msDeliveryInterface')) {
require_once dirname(dirname(dirname(__FILE__))) . '/model/minishop2/msdeliveryhandler.class.php';
}
class msDeliveryHandler_cdekwidget extends msDeliveryHandler implements msDeliveryInterface {
public function getCost(msOrderInterface $order, msDelivery $delivery, $cost = 0.0) {
session_start();
$delivery_cost = $_SESSION['cdek_delivery_price'] ?? 0;
return $cost + $delivery_cost;
}
}
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.