Я использую nusoap для подключения Eway Legacy Api. Внезапно Eway применяют TLS 1.2 на своей стороне. Итак, я установил open ssl 1.0 и TLS 1.2 на моем сервере.
С этого сервера я подключаю Eway fast api, который работает нормально. Так как для Legacy и Rapid api требуется TLS 1.2, а quick работает нормально, это означает, что с настройкой нашего сервера все в порядке. Но это устаревшее соединение API не работает.
Мне нужно применять TLS 1.2 с помощью кода, когда я подключаюсь к устаревшему API Eway с помощью nusoap.
Пример кода —
<?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-> есть содержимое ответа)
Я уверен в своих полномочиях, также команда поддержки eway также сказала мне, что для решения этой проблемы необходимо применить TLS 1.2. Но я не знаю, как применить TLS 1.2 в библиотеке nusoap.
Похоже, вы можете сказать 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
У меня нет способа проверить это, но я основал это на класс NuSOAP, найденный в GitHub. Это работает для CURL, поэтому он должен работать здесь.
Других решений пока нет …