"; $from_email_address = "My Name "; // Set this to true to save a log file: $save_log_file = true; $log_file_dir = __DIR__ . "/logs"; // Here is some information on how to configure sendmail: // http://php.net/manual/en/function.mail.php#118210 require('PaypalIPN.php'); use PaypalIPN; $ipn = new PaypalIPN(); if ($enable_sandbox) { $ipn->useSandbox(); } $verified = $ipn->verifyIPN(); $data_text = ""; foreach ($_POST as $key => $value) { $data_text .= $key . " = " . $value . "\r\n"; } $test_text = ""; if ($_POST["test_ipn"] == 1) { $test_text = "Test "; } // Check the receiver email to see if it matches your list of paypal email addresses $receiver_email_found = false; foreach ($my_email_addresses as $a) { if (strtolower($_POST["receiver_email"]) == strtolower($a)) { $receiver_email_found = true; break; } } date_default_timezone_set("America/Los_Angeles"); list($year, $month, $day, $hour, $minute, $second, $timezone) = explode(":", date("Y:m:d:H:i:s:T")); $date = $year . "-" . $month . "-" . $day; $timestamp = $date . " " . $hour . ":" . $minute . ":" . $second . " " . $timezone; $dated_log_file_dir = $log_file_dir . "/" . $year . "/" . $month; $paypal_ipn_status = "VERIFICATION FAILED"; if ($verified) { $paypal_ipn_status = "RECEIVER EMAIL MISMATCH"; if ($receiver_email_found) { $paypal_ipn_status = "Completed Successfully"; // Process IPN // A list of variables are available here: // https://developer.paypal.com/webapps/developer/docs/classic/ipn/integration-guide/IPNandPDTVariables/ // This is an example for sending an automated email to the customer when they purchases an item for a specific amount: if ($_POST["item_name"] == "Example Item" && $_POST["mc_gross"] == 49.99 && $_POST["mc_currency"] == "USD" && $_POST["payment_status"] == "Completed") { $email_to = $_POST["first_name"] . " " . $_POST["last_name"] . " <" . $_POST["payer_email"] . ">"; $email_subject = $test_text . "Completed order for: " . $_POST["item_name"]; $email_body = "Thank you for purchasing " . $_POST["item_name"] . "." . "\r\n" . "\r\n" . "This is an example email only." . "\r\n" . "\r\n" . "Thank you."; mail($email_to, $email_subject, $email_body, "From: " . $from_email_address); } } } elseif ($enable_sandbox) { if ($_POST["test_ipn"] != 1) { $paypal_ipn_status = "RECEIVED FROM LIVE WHILE SANDBOXED"; } } elseif ($_POST["test_ipn"] == 1) { $paypal_ipn_status = "RECEIVED FROM SANDBOX WHILE LIVE"; } if ($save_log_file) { // Create log file directory if (!is_dir($dated_log_file_dir)) { if (!file_exists($dated_log_file_dir)) { mkdir($dated_log_file_dir, 0777, true); if (!is_dir($dated_log_file_dir)) { $save_log_file = false; } } else { $save_log_file = false; } } // Restrict web access to files in the log file directory $htaccess_body = "RewriteEngine On" . "\r\n" . "RewriteRule .* - [L,R=404]"; if ($save_log_file && (!is_file($log_file_dir . "/.htaccess") || file_get_contents($log_file_dir . "/.htaccess") !== $htaccess_body)) { if (!is_dir($log_file_dir . "/.htaccess")) { file_put_contents($log_file_dir . "/.htaccess", $htaccess_body); if (!is_file($log_file_dir . "/.htaccess") || file_get_contents($log_file_dir . "/.htaccess") !== $htaccess_body) { $save_log_file = false; } } else { $save_log_file = false; } } if ($save_log_file) { // Save data to text file file_put_contents($dated_log_file_dir . "/" . $test_text . "paypal_ipn_" . $date . ".txt", "paypal_ipn_status = " . $paypal_ipn_status . "\r\n" . "paypal_ipn_date = " . $timestamp . "\r\n" . $data_text . "\r\n", FILE_APPEND); } } if ($send_confirmation_email) { // Send confirmation email mail($confirmation_email_address, $test_text . "PayPal IPN : " . $paypal_ipn_status, "paypal_ipn_status = " . $paypal_ipn_status . "\r\n" . "paypal_ipn_date = " . $timestamp . "\r\n" . $data_text, "From: " . $from_email_address); } // Reply with an empty 200 response to indicate to paypal the IPN was received correctly header("HTTP/1.1 200 OK");