Не работает кастомный класс доставки minishop2
Здравствуйте Василий и сообщество. Проблема в подключении DPD:
1. Создать класс-наследника msDeliveryInterface
3. Указать имя класса (не файла) в методе доставки, в админке. + (dpd)
4. Ну и в классе прописать свой метод getcost. + (выше в коде)
После всего сделанного при попытке войти в корзину ничего не происходит, а точнее никакой ошибки, ничего, просто пустая страница (Код писал не я, написан под заказ).
Подскажите в чем проблема.
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. + (выше в коде)
После всего сделанного при попытке войти в корзину ничего не происходит, а точнее никакой ошибки, ничего, просто пустая страница (Код писал не я, написан под заказ).
Подскажите в чем проблема.
Комментарии: 1
Аналогичная проблема
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.