I believe I figured this out. In administrator/components/com_virtuemart/notify.php make the following changes:
Change:
Line 32: header("HTTP/1.0 200 OK");
To:
Line 32: header("HTTP/1.1 200 OK");
Change:
$header = "POST $uri HTTP/1.0\r\n";
$header.= "User-Agent: PHP/".phpversion()."\r\n";
$header.= "Referer: ".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].@$_SERVER['QUERY_STRING']."\r\n";
$header.= "Server: ".$_SERVER['SERVER_SOFTWARE']."\r\n";
$header.= "Host: ".$hostname.":80\r\n";
$header.= "Content-Type: application/x-www-form-urlencoded\r\n";
$header.= "Content-Length: ".strlen($workstring)."\r\n";
$header.= "Accept: */*\r\n\r\n";
To:
$header = "POST /cgi-bin/webscr HTTP/1.1\r\n";
$header.= "User-Agent: PHP/".phpversion()."\r\n";
$header.= "Referer: ".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].@$_SERVER['QUERY_STRING']."\r\n";
$header.= "Server: ".$_SERVER['SERVER_SOFTWARE']."\r\n";
$header.= "Host: www.paypal.com\r\n";
$header.= "Content-Type: application/x-www-form-urlencoded\r\n";
$header.= "Content-Length: " . strlen($req) . "\r\n";
// $header.= "Accept: */*\r\n\r\n";
$header .= "Connection: close\r\n\r\n";
Change:
$fp = fsockopen ( $hostname, 80, $errno, $errstr, 30);
To:
$fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30);
Change:
if (eregi ( "VERIFIED", $res) || @PAYPAL_VERIFIED_ONLY == '0' ) {
To:
if (eregi ( "VERIFIED", trim($res)) || @PAYPAL_VERIFIED_ONLY == '0' ) {
Change:
elseif (eregi ("INVALID", $res)) {
To:
elseif (eregi ("INVALID", trim($res))) {
My test transaction worked... so I'm hoping it's all set. If anyone can see anything wrong, please let me know.