Не работает кастомный класс доставки minishop2

Здравствуйте Василий и сообщество. Проблема в подключении DPD:
1. Создать класс-наследника msDeliveryInterface
if(!class_exists('msDeliveryInterface')) {
  require_once dirname(dirname(dirname(__FILE__))) . '/model/minishop2/msdeliveryhandler.class.php';
}

class DPD extends msDeliveryHandler implements msDeliveryInterface {
    public function getcost(msOrderInterface $order, msDelivery $delivery) {
        $dpd = new DPDService();
		$cart = $order->ms2->cart->status();
    	$addr = $order->get('address');
        
		$cart_weight = $cart['total_weight'];
		$cost = ''; // результат
		return $cost;
	}
}

class DPDService {
    private $SOAP_CLIENT;
	private $IS_ACTIVE = 1; // флаг активности сервиса (0 - отключен, 1 - включен) 
	private $IS_TEST = 0; // флаг тестирования (0 - работа, 1 - тест) 
    private $MY_NUMBER = 'ТУТмойНОМЕР';
    private $MY_KEY = 'ТУТмойКЕЙ';
    private $arSERVICE = array(
        'getCitiesCashPay' => 'geography',
        'getTerminalsSelfDelivery' => 'geography',
        'getServiceCost' => 'calculator2'
    );
    
    public function __construct() {
        // Null
    }

    public function getCityList() {
        $obj = $this->_getDpdData('getCitiesCashPay');
        $res = $this->_parceObj2Arr($obj->return);
        return $res;
    }

    public function getServiceCost($arData) {
        $arData['pickup'] = array('cityName' => 'Санкт-Петербург');
        $arData['selfPickup'] = true;
        $arData['selfDelivery'] = true;
        $obj = $this->_getDpdData('getServiceCost', $arData, 1);
        $res = $this->_parceObj2Arr($obj->return);
        return $res;
    }

    private function _getDpdData($method_name, $arData=array(), $is_request=0) {
        $service = $this->arSERVICE[$method_name];
        $this->SOAP_CLIENT = new SoapClient('wstest.dpd.ru/services/' . $service . '?wsdl');
        
        $arData['auth'] = array('clientNumber' => $this->MY_NUMBER, 'clientKey' => $this->MY_KEY);
        if($is_request) {
            $arRequest['request'] = $arData;
        } else {
            $arRequest = $arData;
        }
        $obj = $this->SOAP_CLIENT->$method_name($arRequest);
        return $obj ? $obj : false;
    }

    private function _parceObj2Arr($obj, $arr=array()) {
        if(is_object($obj) || is_array($obj)) {
            $arr = array();
            for(reset($obj); list($k, $v) = each($obj);) {
                if($k === "GLOBALS") continue;
                $arr[$k] = $this->_parceObj2Arr($v, $arr);
            }
            return $arr;
        } elseif(gettype($obj) == 'boolean') {
            return $obj ? 'true' : 'false';
        } else {
            if($isUTF && gettype($obj)=='string') $obj = iconv('utf-8','windows-1251',$obj); 
 return $obj;
        }
    }
}
2. Положить в /core/components/minishop2/custom/delivery/dpd.class.php +
3. Указать имя класса (не файла) в методе доставки, в админке. + (dpd)
4. Ну и в классе прописать свой метод getcost. + (выше в коде)
После всего сделанного при попытке войти в корзину ничего не происходит, а точнее никакой ошибки, ничего, просто пустая страница (Код писал не я, написан под заказ).
Подскажите в чем проблема.
Nikolay
28 ноября 2013, 22:09
modx.pro
1 560
0

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

Даниил
27 июля 2015, 14:16
0
Аналогичная проблема
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    1