Hallo Evi
Der Informationsfluss vom PayPal Server an Bakery funktioniert nur zu 100%, wenn PayPal Instant Payment Notification IPN funktioniert. IPN benutzt in Bakery die PHP-Funktion fsockopen() über Port 80.
Falls die im letzten Post genannte Debugging-Methode - aus welchen Gründen auch immer - nicht funktioniert, kopiere den unten stehenden Code in einen leere Datei, benenne sie beispielsweise
test.php, lade sie auf den gleichen Server auf dem auch Bakery läuft und rufe sie im Browser auf.
WICHTIG:Denk daran, die
Änderungen an der Datei ipn.php (Reply #8) wieder rückgängig zu machen!
<?php
$url = 'www.paypal.com';
$output = '';
$fp = fsockopen($url, 80, $errno, $errstr, 30);
if (!$fp) {
echo "<h1>Fehler</h1>$errstr ($errno)<br />\n";
} else {
$out = "GET / HTTP/1.1\r\n";
$out .= "Host: $url\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp)) {
$output .= fgets($fp, 128);
}
fclose($fp);
}
echo '<pre>' . $output . '</pre>';
?>
Dieser Code dient dazu, die Verbindung zum PayPal-Server mittels der PHP-Funktion fsockopen() über Port 80 zu testen.
Der Aufruf sollte im Browser folgende (oder sinngemässe) Antwort zurückgeben:
HTTP/1.1 301 Moved Permanently
Date: Tue, 06 Dec 2011 13:04:13 GMT
Server: Apache
X-Frame-Options: SAMEORIGIN
Set-Cookie: cwrClyrK4LoCV1fydGb AxiNL6iG=%7cP2hrfPKbkawEjYLthP25yKDJzFjiTzaGF9cX9phzb0C7-5aHFryR4uELdnEtXwKiWfyJKW%7c9Sog9BzzdqfIJ0HJYggVoarqezv97LZc_Fe6LyEyxYvj0vXlOJeeLaIn1Jj3NHTzlxqSuW%7c; domain=.paypal.com; path=/; HttpOnly
Set-Cookie: cookie_check=yes; expires=Fri, 03-Dec-2021 13:04:13 GMT; domain=.paypal.com; path=/; HttpOnly
Location: https://www.paypal.com/
Vary: Accept-Encoding
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html
0
Falls du eine Fehlermeldung wie die unten stehende oder ähnlich erhältst, ist die Verbindung via fsockopen() nicht möglich. Dies kann verschiedene Gründe haben. Oft liegt es daran, dass der Internet Service Provider ISP (Hosting) keine Verbindung über Port 80 zulässt.
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, info@example.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.
Apache Server at www.example.com Port 80
Nimm mit dem Support deines ISP Kontakt auf und sage ihm, dass du mit der PHP-Funktion fsockopen() für den Zahlungsvorgang bei PayPal eine Abfrage machen musst, die auf deinem Server nicht funktioniert. Dein ISP sollte in der Lage sein die Server Konfiguration so zu ändern, dass die Abfrage über Port 80 problemlos läuft.
Gruss Christoph