PayPal IPN

Wenn es sich um ein Linux-System handelt, dann versuch mal den Befehl locate:

Bash:
$ locate error.log

Ansonsten liegen die Logs in der Regel in /var/log, häufig ist dort ein Ordner apache oder httpd zu finden. Da liegen die normalerweise drin.
 
Es handelt sich um ein Linux-System. Wo soll ich den Befehl einfügen?


Ich habe folgende Ordner und Dateien:

backup
files
html
log
phptmp
quota.log


Im "log"-Ordner befinden sich nur:

access_log
access_log.1
access_log.2.gz
access_log.3.gz
....
....
access_log.52.gz
 
Hast du keinen Shell-Zugriff? Wenn du die error.log nicht finden kannst, bleibt noch die Logger-Klasse. Lade sie auf deinen Webspace hoch, füge ein

PHP:
include 'Logger.php';

Dann kannst du in die Datei app.log schreiben lassen:

PHP:
Logger::log("Fehlercodes usw... Zeichenketten halt");
 
Keine Ahnung wie ich das einbinde, damit ich nützliche Informationen mitlogge.

Logger::log( $res ) => 20110609-22:18:12 VERIFIED
 
hast du denn auch die authentication parameter angepasst?
Meines wissens unterscheiden sich die zugängangsdaten für sandbox und livesystem.


Vieleicht auch mal im accesslog gucken ob der IPN callback überhaupt erfolgt
 
Deine API calls haben einen USER, einen SIGNATURE und einen PWD parameter.

Die müssen logischerweise auf einen auf dem paypal live system freigeschalteten account zeigen.

Diese 3 daten unterscheiden sich normalerweise vom sandbox system! Sollten sie dir nicht bekannt sein, musst du dich mit deinem ansprechpartner bei paypal in verbindung setzen.
 
Eine Sofortige Zahlungsbestätigung (IPN) müsste doch auch ohne API möglich sein.

Alternative Option: PayPal Starter (ohne API-Programmierkenntnisse)
https://www.paypalobjects.com/de_DE/html/IntegrationCenter/ic_pps_home.html

Redirect:
PHP:
$str = "cmd=_xclick&business=" . urlencode(test@paypalemail.com) . "&no_shipping=0&no_note=1";
$str .= "&item_name=Test";
$str .= "&amount=10";
$str .= "&currency_code=EUR";
$str .= "&notify_url=" . urlencode('http://www.example.com/ppipn.php');
$str .= "&return=" . urlencode('http://www.example.com/success.html');
$str .= "&cancel_return=" . urlencode('http://www.example.com/cancel.html');
$str .= "&item_number=1";

if($test_mode == true) {
    header("Location: https://www.sandbox.paypal.com/cgi-bin/webscr?" . $str);
} else {
    header("Location: https://www.paypal.com/cgi-bin/webscr?" . $str);
}


IPN:
PHP:
$req = 'cmd=_notify-validate';

foreach ($_POST as $key => $value) {
	$value = urlencode(stripslashes($value));
	$req .= "&$key=$value";
}

$header  = "POST /cgi-bin/webscr HTTP/1.0\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n";

if($test_mode == true) {
	$fp = fsockopen ('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30);
} else {
	$fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30);
}


if (!$fp) {
} else {
	fputs ($fp, $header . $req);
	
	while (!feof($fp)) {
		$res = fgets ($fp, 1024);

		if (strcmp ($res, 'VERIFIED') == 0) {
		
mail($_POST['payer_email'], "Test", "Hallo Kunde", "From: Test <test@paypalemail.com>");
					
		} else if (strcmp ($res, 'INVALID') == 0) {
		}

	}

	fclose ($fp);
}

?>


So sieht mein Script aus und funktioniert wenn $test_mode => true.


Gruß proloser
 
Zuletzt bearbeitet:
Zurück