我正在使用nusoap连接Eway传统Api。突然Eway强制执行TLS 1.2。所以我在我的服务器中设置了开放的ssl 1.0和TLS 1.2。
从那台服务器我连接Eway rapid api,工作正常。由于Legacy和Rapid api都需要TLS 1.2,而且快速工作正常,这意味着我们的服务器设置即可。但是这个传统的api连接无效。
当我使用nusoap连接Eway传统API时,我需要通过代码强制执行TLS 1.2。
代码示例 -
<?php
$client = new nusoap_client("https://www.eway.com.au/gateway/rebill/manageRebill.asmx");
$client->namespaces['man'] = 'http://www.eway.com.au/gateway/rebill/manageRebill';
$headers = "<man:eWAYHeader><man:eWAYCustomerID>****</man:eWAYCustomerID><man:Username>****</man:Username><man:Password>****</man:Password></man:eWAYHeader>";
$client->setHeaders($headers);
$requestbody = array();
$soapactionUrl = 'http://www.eway.com.au/gateway/rebill/manageRebill/';
$requestbody['man:RebillCustomerID'] = $eway_rebill_customer_id;
$requestbody['man:RebillID'] = $eway_rebill_id;
$soapaction = 'QueryRebillEvent';
$client = $this->_creatEwayRebillRequestHeader();
$result = $client->call('man:'.$soapaction, $requestbody, '', $soapactionUrl.$soapaction,true);
$err_msg = $client->getError();
echo $err_msg;
?>
错误按摩我得到的是 -
wsdl错误:获取
https://www.eway.com.au/gateway/rebill/manageRebill.asmx
- HTTP错误:不支持的HTTP响应状态403禁止(soapclient-&gt;响应包含响应内容)
我确信我的凭据,eway支持团队也告诉我强制执行TLS 1.2来解决问题。但我不知道如何在nusoap库中强制执行TLS 1.2。
答案 0 :(得分:1)
看来你可以告诉NuSOAP使用CURL。因此,稍微修改设置应该可以做到这一点
$client = new nusoap_client("https://www.eway.com.au/gateway/rebill/manageRebill.asmx");
$client->setUseCURL(true);
$client->setCurlOption(CURLOPT_SSLVERSION, '6'); // TLS 1.2
我没有办法对此进行测试,但我的基础是the NuSOAP class found in GitHub。这适用于CURL,所以它应该在这里工作。