Ich versuche, Paypal IPN eingerichtet zu bekommen und kann nicht herausfinden, was mit dem Code falsch ist, den ich unten geschrieben habe. Wenn ich versuche, es mit Paypal Sandbox IPN Simulator zu testen, gibt es zurück "IPN wurde nicht gesendet, und der Handshake wurde nicht überprüft. Bitte überprüfen Sie Ihre Informationen." Ich denke, dass das Problem etwas mit den Überschriften ist, die zu einem sanbox freundlichen Format geändert werden müssen, aber nicht genau herausfinden können, was ich ändern muss.Versuchen, Paypal IPN mit Sandbox zu testen, aber Handshake geht nicht durch
Dies ist die URL, die der Code unter: http://pmoore17.altervista.org/TWADrama/ticketsales1.php
Jede Hilfe ist willkommen! Vielen Dank!
<?php
// Read the notification from PayPal which comes in the form of a POST array and create the acknowledgement response
$req = 'cmd=_notify-validate'; // add 'cmd' to beginning of the acknowledgement you send back to PayPal
foreach ($_POST as $key => $value)
{ // Loop through the notification NV pairs
$value = urlencode(stripslashes($value)); // Encode the values
$req .= "&$key=$value"; // Add the NV pairs to the acknowledgement
}
// Assign the paypal payment notification values to local variables
if($_POST){
$last_name = $_POST['last_name'];
$first_name = $_POST['first_name'];
$quantity = $_POST['quantity'];
$payer_email = $_POST['payer_email'];}
//Set up the acknowledgement request headers (this is the updated version for http 1.1)
$header .= "POST /cgi-bin/webscr HTTP/1.1\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Host: www.paypal.com\r\n";
$header .= "Connection: close\r\n";
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
//Open a socket for the acknowledgement request
$fq = fsockopen ('www.paypal.com/cgi-bin/webscr', 80, $errno, $errstr, 30);
if(!$fq){
echo "HTTP ERROR";
}
else
{//start 1
// Post request back to PayPal for validation
fputs ($fq, $header . $req);
//once paypal receives the acknowledgement response, another message will be send containing the single word VERIFIED or INVALID
while (!feof($fq))
{ //start 2, while not EndOfFile
$res = fgets ($fq, 1024); // Get the acknowledgement response
$res = trim($res);
if (strcmp ($res, "VERIFIED") == 0)
{// start 3, Response is OK
$fn = "content.txt";
$fp = fopen($fn,"a+") or die ("Error opening file in write mode!");
fputs($fp,"last_name: ".$last_name.", ");
fputs($fp,"first_name: ".$first_name.", ");
fputs($fp,"quantity: ".$quantity.", ");
fputs($fp,"payer_email: ".$payer_email."\n");
fclose($fp) or die ("Error closing file!");
}//end 3
else if(strcmp ($res, "INVALID") == 0)
{//start 4
$fn = "content.txt";
$fp = fopen($fn,"a+") or die ("Error opening file in write mode!");
fputs($fp,"last_name: ".$last_name.", ");
fputs($fp,"first_name: ".$first_name.", ");
fputs($fp,"quantity: ".$quantity.", ");
fputs($fp,"payer_email: ".$payer_email."\n");
fclose($fp) or die ("Error closing file!");
}//end 4
} //end 2
fclose ($fq); //close file pointer
} //end 1
?>
Auch für die letzten paar Tage die 'notify_url' Override in Ihren Tasten/Links funktioniert nicht (es scheint). Ich erhalte die IPN-Benachrichtigungen seit den letzten Amazon/GoDaddy/anderen ausgefallenen "Cloud" -Jungen nicht mehr. Ich sage nicht, dass es etwas damit zu tun hat, ich sage nur den Moment. – kodeart
Sie brauchen nicht das gesamte SDK, Sie können nur den IPN-Code hier https://github.com/paypal/ipn-code-samples/tree/master/php erhalten. Seit einigen Tagen funktioniert der IPN-Simulator nicht mehr für mich, aber ich bekomme IPN Benachrichtigung, wenn Sie eine Zahlung an paypal.com oder sandbox.paypal.com machen – JBart