Возможно, я бы начал проверять, выдал ли curl
какие-либо ошибки. В этом случае PHP дает вам curl_errno($ch)
и curl_error($ch)
, которые будут возвращать сообщение или, соответственно, код ошибки.
На случай, если в этом нет ничего подозрительного. Возможно, я бы попытался проверить, если вы можете запустить выше из вашего CLI на сервере. (требуется S SH доступ к нему)
curl -H "User-Agent: ..." "https://www.paypal.com/cgi-bin/webscr?cmd=_notify-validate"
Надеюсь, это даст вам хорошую отправную точку. Пожалуйста, дайте мне знать, если это поможет или вам нужно больше идей.
Редактировать # 2: После добавления комментариев от автора:
cUrl действительно возвращает ошибку: ошибка 35, и сообщение об ошибке выглядит следующим образом:
error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version
В этом случае я бы предположил, что ваша система устарела и не поддерживает шифры SSL из PayPal. Вы можете попытаться принудительно указать указанную c версию TLS. На сегодняшний день веб-серверы PayPal поддерживают только TLS1.2 или TLS1.3. Вот как вы можете заставить его:
curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);
или
curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_3);
Additionaly @Preston PHX упомянул в комментарии хорошие ссылки на эту проблему, поступающие из PayPal: