2015-05-01 4 views
3

Я пытаюсь перезаписать модуль Drupal, который отстает от API шлюза, к которому он подключается.Как отлаживать вызов php nusoap, требующий базовой аутентификации, которая не отвечает вообще?

раздели обратно версию кода, я думаю, что вызывает проблема заключается в следующем:

$namespace = ($this->testing) ? 'https://api.sandbox.ewaypayments.com/' : 'https://api.ewaypayments.com/'; 
$endpoint = $this->url; 
$httpUsername = $this->user_name; 
$httpPassword = $this->password; 

$client = new nusoap_client($endpoint, TRUE); 
$client->setCredentials($httpUsername, $httpPassword, 'basic'); 
$client->response_timeout = 50; 
$result = $client->call($operation, array('request' => $params), $namespace); 

$result последовательно ложно. Если я ставлю что-нибудь подобное в мой код он также последовательно возвращает empty:

$error = $client->getError(); 
watchdog('connection_message', $error); 

Я немного из моей глубины и без каких-либо сообщений об ошибках в моих журналах Apache или в сторожевой Drupal я не могу видеть путь вперед.

ответ

6

1. Включите PHP отчетов об ошибках, если это не уже.

Убедитесь, что error_reporting, display_errors настройки в файле php.ini устанавливаются E_ALL и On соответственно, когда вы разрабатываете на местном уровне. Вы также можете добавить эти директивы в начале вашего PHP скрипт, чтобы установить их во время выполнения:

error_reporting(E_ALL); 
ini_set('display_errors', 'On'); 

2. отлавливать ошибки NuSOAP так:

$result = $client->call($operation, array('request' => $params), $namespace); 
if ($client->fault) { 
    echo 'Error: '; 
    print_r($result); 
} else { 
    // check result 
    $err_msg = $client->getError(); 
    if ($err_msg) { 
     // Print error msg 
     echo 'Error: '.$err_msg; 
    } else { 
     // Print result 
     echo 'Result: '; 
     print_r($result); 
    } 
} 

3. Проверьте, вы используя правильные параметры API и конечная точка:

с eWAY API reference, ваши конечные точки являются:

https : //api.ewaypayments.com/soap.ASMX (производство)
HTTPS : //api.sandbox.ewaypayments.com/soap.asmx (песочница)

4. Похожие Eway API проекты, которые вы можете выполнять обратное проектирование:

+0

Да, это коммерция eWAY для Drupal, которую я пытаюсь обновить, у нее нет поддержки Rapid API, и токены в настоящий момент не работают. – Darvanen

+0

Ваша конечная точка может быть неправильной, но вы все равно должны получать сообщения об ошибках. Попробуйте проверить этот флаг «fault», который я поставил в своем ответе, а также разрешить PHP-ошибки на всякий случай. – Drakes

+0

Ваш код для ловушек ошибок сделал трюк, спасибо большое! Как-то моя аутентификация не работает, теперь я знаю, где искать. Ответ принят. – Darvanen

1

Есть несколько вещей, которые я хотел бы сказать в этом случае.

Во-первых, почему вы должны использовать эту библиотеку? Вы можете использовать Zend_Soap_Client (если вы не имеете его, вы можете установить его с помощью composer:

http://framework.zend.com/downloads/composer (ищите zendframework/zend-soap)

Затем вы можете скачать пробную версию PHPStorm Свои инструменты отладки при использовании. http://xdebug.org действительно удивительный, вы можете проверить все пространство переменного и окружающей среды во время выполнения.

Наконец, вы можете использовать дружественный управляющий инструмент ошибки как http://raygun.io, вставить несколько строк коды, создать пробную учетную запись там, и в минутах вы получаете все ошибки, которые происходят в вашем приложении п.

В вашем случае вы можете увидеть, например, текущее значение $operation, которое, как представляется, вызывает функцию в веб-сервисе.

Вот код для проверки всех функций, предлагаемых в WebService с помощью Zend_Soap_Client:

$endpoint = 'http://your.example.endpoint/?wsdl'; 
$soapClient = new Zend_Soap_Client($endpoint); 
$functions = $soapClient->getFunctions(); 
var_dump($functions); 
+1

Или просто используйте встроенную реализацию PHP Soap ;-) – Capsule

+1

Спасибо, ребята, не подумали об обновлении реализации Soap. Конечно, стоит сделать снимок. – Darvanen

1

Поскольку вы используете SOAP запросы конечной точке неверен, он должен быть https://api.ewaypayments.com/soap.asmx или https://api.sandbox.ewaypayments.com/soap.asmx

+0

Ах да, конечно, эти значения были попыткой получить какую-то ошибку из системы. Первоначально они заканчивались в soap.asmx, спасибо, что указали это. – Darvanen

+0

О, мое плохое, конечная точка установлена ​​намного раньше в коде и хранится в '$ this-> url;' значения такие, как вы описали. Похоже, что в пространстве имен не должно быть soap.asmx в конце ... – Darvanen

+0

вы можете просто отказаться от пространства имен, которое это действительно не нужно. – Augwa

0

Для повышения производительности вы можете думать, чтобы отключить отладку NuSOAP.

Чтобы проверить, отредактировать файл /include/nusoap/nusoap.php и установить уровень отладки 0, как это:

['nusoap_base']->globalDebugLevel = 0;

Один шаг еще дальше, чтобы удалить все строки, начинающиеся с :

$this->debug(

или

$this->appendDebug(

Источник:

http://kb.omni-ts.com/entry/245/ 
0

Вы могли бы дать этот модуль попробовать: https://www.drupal.org/project/eway_integration

Мы сейчас работаем с Eway, чтобы проверить этот модуль вместе. Он работает с Drupal Commerce и реализует API RAPID 3.1 API eWay и совместим с PCI.