運行正常兩年的perl腳本在回發IPN消息時剛剛開始返回「500 SSL握手失敗」錯誤。我的主機服務支持SHA 256,TLS 1.2和HTTP/1.1。我正在使用我的主機服務的共享證書。 代碼(來自PayPal的示例腳本):Perl PayPal IPN偵聽器返回「500 SSL握手失敗」消息
# read post from PayPal system and add 'cmd'
read (STDIN, $query, $ENV{'CONTENT_LENGTH'});
$query .= '&cmd=_notify-validate';
# post back to PayPal system to validate
$ua = LWP::UserAgent->new(ssl_opts => { verify_hostname => 1 });
$req = HTTP::Request->new('POST', 'https://www.sandbox.paypal.com/cgi-bin/webscr');
$req->content_type('application/x-www-form-urlencoded');
$req->header(Host => 'www.sandbox.paypal.com');
$req->content($query);
$res = $ua->request($req);
if ($res->is_error) {
# HTTP error
$retmsg = "HTTP Error:<br />";
$retmsg .= $res->status_line();
}
...
我最好如何解決呢?
很難說沒有更多的細節,但我的猜測是,你使用的是舊版本的LWP/IO :: Socket :: SSL或OpenSSL。在這種情況下,你的服務器支持的並不重要。請添加libs的版本:'perl -MLWP :: UserAgent -MIO :: Socket :: SSL -e'printf'openssl =%x \ nio-ssl =%s \ nlwp =%s \ nperl =%s \ n「,Net :: SSLeay :: OPENSSL_VERSION_NUMBER(),IO :: Socket :: SSL-> VERSION,LWP :: UserAgent-> VERSION,$^V'' –
@Steffen非常感謝您的建議。當我執行此命令時,在E-E行之前的任何位置收到消息「無法找到字符串終止符」。「我看不到任何語法問題。我錯過了什麼? – VanScott
無論出於何種原因剪切+粘貼似乎都會添加一些奇怪的字符。嘗試使用http://pastebin.com/gqjcCvsT –