我正在尝试重新编写一个Drupal模块,该模块落后于它所连接的网关的API.
我认为导致问题的代码的剥离版本如下:
$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一直是假的.如果我把这样的东西放到我的代码中,它也会一直返回空:
$error = $client->getError();
watchdog('connection_message', $error);
我有点超出我的深度,在我的Apache日志或Drupal看门狗中没有任何错误消息我看不到前进的方向.
解决方法:
在本地开发时,请检查PHP.ini文件中的error_reporting,display_errors设置是否分别设置为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 (production)
https://api.sandBox.ewaypayments.com/soap.asmx (sandBox)
4.类似的eWAY API项目,您可以进行逆向工程:
> Commerce eWAY for Drupal(上一版本是2014年3月)
> eWAY-RapidAPI(使用JSON和cURL)
> eWay-PHP-API(使用XML和cURL)
> eWay Payment Gateway(使用SOAPClient)