Revision: 11489
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at February 6, 2009 20:23 by xtheonex
Initial Code
<?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 "; $header .= "Host: www.paypal.com:80 "; // $header .= "Host: www.sandbox.paypal.com:80 "; $header .= "Content-Type: application/x-www-form-urlencoded "; $header .= "Content-Length: " . strlen($req) . " "; $fp = fsockopen ('www.paypal.com', 80, $errno, $errstr, 30); // $fp = fsockopen ('www.sandbox.paypal.com', 80, $errno, $errstr, 30); if (!$fp) { // Do some code when your server cannot communicate with PayPal! mail('[email protected]', 'IPN ERROR', "HTTP ERROR\n\n" . $res); } else { fputs ($fp, $header . $req); while (!feof($fp)) { $res = fgets ($fp, 1024); if (strcmp ($res, "VERIFIED") == 0) { if ($_POST['payment_status'] == 'Completed') { // Do some code when PayPal returns payment completed status! foreach ($_POST as $key => $value){ $emailtext .= $key . ": " . $value . "\n"; } mail('[email protected]', "IPN VARIABLES", $emailtext . "\n\nREQUEST STRING:\n" . $req); } else { // Do some code when PayPal returns a different status! foreach ($_POST as $key => $value) { $emailtext .= $key . ": " . $value . "\n"; } mail('[email protected]', "IPN VARIABLES", $emailtext . "\n\nREQUEST STRING:\n" . $req); } } elseif (strcmp ($res, "INVALID") == 0) { // Do some code when PayPal returns some error! foreach ($_POST as $key => $value){ $emailtext .= $key . ": " . $value . "\n"; } mail('[email protected]', "IPN VARIABLES", $emailtext . "\n\nREQUEST STRING:\n" . $req); } } fclose ($fp); } ?>
Initial URL
Initial Description
This is a basic shell for PayPal IPN. It is by no means a complete solution, but it should provide a good starting point for anyone that wants to work out IPN. Or it can be used as is to do basic IPN.
Initial Title
PayPal IPN Shell
Initial Tags
php
Initial Language
PHP