Фон
Я занялся обновлением сайта, на котором работала очень старая версия PHP. После перемещения сайта с 5.3 до 7.1 я заметил, что authorize.net продолжает рассылать электронные письма с указанием:
мы больше не допустим TLS 1.0 и 1.1
В нем говорится, что он полностью перестанет работать в течение следующих нескольких недель, и я не уверен, как узнать, использует ли сайт эту устаревшую версию TLS или нет. Я предполагаю, что я должен быть в состоянии знать классы authorize.net в приложении. Но код никак не ссылается TLS
, Я также предположил, что могу знать по используемым конечным точкам, но мне еще предстоит увидеть что-либо касающееся используемой версии TLS, имеющее отношение к используемой конечной точке.
Кто-нибудь знает надежный способ тестирования и знает, действительно ли мы используем более старую версию TLS на нашем сайте? Или, если это возможно, мы используем на сайте очень старую версию authorize.net, которая вообще не использует TLS?
Пример кода
Это начало нескольких классов, используемых в приложении. Может быть, у кого-то есть понимание того, что указывает на версию TLS
вы используете по версии authorize.net api
ты используешь.
class.aim.cc.license.php
<?php
/*********************/
/* */
/* Dezend for PHP5 */
/* NWS */
/* Nulled.WS */
/* */
/*********************/
class authnetcc
{
var $fields = array( );
var $license_key;
var $gateway_url = "https://secure.authorize.net/gateway/transact.dll";
var $proxy_url;
var $proxy_port;
var $secure_source = false;
var $error_code;
var $error_message;
var $error_field;
...
AIM.class.php
<?php
/**
* CLASS AIM
*
*
*/
class AIM {
// login credentials that Authorize.net uses for verification
var $login_id = '';
var $trans_key = '';
// server
var $server = '';
// credit card information
var $cc_name = '';
var $cc_number = '';
var $cc_month = '';
var $cc_year = '';
var $cc_code = '';
var $cc_type = '';
// error stack array
var $errorStack = array();
// modes
var $testMode = false;
var $debugMode = false;
var $errorRetries = 2;
// buyer information
var $buyer = array();
// response information
var $status = '';
var $subcode = '';
var $response_code = '';
var $response_text = '';
var $approval_code = '';
var $md5hash = '';
var $code = '';
var $remaining = array();
// constructor
function __construct($login_id, $trans_key) {
$this->login_id = $login_id;
$this->trans_key = $trans_key;
$this->setTesting(0);
}
...
Это не проблема кодирования. Authorize.Net отправляет эти письма более года. Они, как и любой другой PCI-совместимый платежный шлюз, должны использовать TLS 1.2 или выше, чтобы оставаться PCI-совместимым, и это означает, что все их клиенты также должны быть совместимы. Это то, что вы настраиваете на своем сервере, а не в своем коде PHP. Если вы используете провайдера общего веб-хостинга, вам нужно связаться с ним и попросить переместиться на сервер, который поддерживает TLS 1.2, или найти новый хост, который его поддерживает.
К вашему сведению, вы также должны использовать новый URL Akamai для их API, который также должен быть обновлен. Правильный URL для использования в будущем https://api2.authorize.net/xml/v1/request.api
,
Других решений пока нет …