Ошибка SOAP при попытке использования модуля Cybersource в Magento - PullRequest
2 голосов
/ 02 июня 2011

Я попытался найти более конкретный ответ и не смог найти ничего полезного в отношении этой ошибки. Может быть просто, что я незнаком с Magento или модулем киберресурса или с обоими, но в любом случае, я просто не могу понять, что пытается сказать мне это сообщение.

Это исключение, которое отображается не только во время отладки, но и, если я перехватываю весь SMTP-трафик, выходящий на моем компьютере разработчика, оно отображается в электронном письме, которое вы получите при сбое.

Exception: Strict Notice: Declaration of Mage_Cybersource_Model_Api_ExtendedSoapClient::__doRequest() 
should be compatible with that of SoapClient::__doRequest()  in
C:\code\app\code\local\Mage\Cybersource\Model\Api\ExtendedSoapClient.php on line 75 
in C:\code\app\code\core\Mage\Core\functions.php on line 245

что я делаю, когда это происходит, пытается отправить заказ. Я добавил товары в корзину, вошел в систему, ввел данные об отправке и проверил заказ, и когда я нажимаю кнопку Отправить заказ, он некоторое время разбивается на куски и выдает мне это сообщение. Когда я отлаживаю код (который занимает FOREVER), я, наконец, дохожу до того, что модуль cybersource пытается авторизоваться через систему SOAP, а затем выдает эту ошибку.

точное размещение ошибок вокруг этого метода

protected function getSoapApi($options = array())
{
    $wsdl = $this->getConfigData('test') ? self::WSDL_URL_TEST  : self::WSDL_URL_LIVE;
    return new Mage_Cybersource_Model_Api_ExtendedSoapClient($wsdl, $options);
}

любые идеи будут очень полезны для того, что искать или даже что означает это сообщение. Кроме того, у меня установлен и включен SOAP в PHP 5.3.6, работающий в среде Windows с Apache 2.2.

Ответы [ 2 ]

7 голосов
/ 03 июня 2011

Благодаря Джо я немного покопался и обнаружил, что Cybersource написал свой модуль для работы с PHP5.2.1, и в этой версии SOAP-клиент отличался от PHP 5.3.к методу __doRequest был добавлен элемент, вызывающий несогласованность.поэтому я изменил код в файле ExtendedSoapClient.php с

public function __doRequest($request, $location, $action, $version)

на

public function __doRequest($request, $location, $action, $version, $oneWay = 0)

, и это, похоже, исправило эту ошибку.Спасибо Джо за помощь в этой ошибке.

4 голосов
/ 03 июня 2011

На самом деле это ошибка PHP о создании подкласса SoapClient.В основном это происходит, когда у вас есть что-то вроде этого:

class Foo {
    public function doSomething() {
      // ...
    }
}

class Bar extends Foo {
    public function doSomething($totallyUnreasonableParameter) {
      // ...
    }
}

Ваша проблема почти наверняка связана с версией SOAP, установленной на вашем сервере.В частности, я этого не видел, но это может быть связано с версией PHP (5.3.6), которую я не знаю как поддерживаемая версия.

Надеюсь, это поможет!* Спасибо, Джо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...