Paypal IPN Donations Paypal IPN Donations wordpress wordpress

Paypal IPN Donations


Here is the script I mentioned:

<?php// read the post from PayPal system and add 'cmd'$req = 'cmd=_notify-validate';foreach ($_POST as $key => $value) {$value = urlencode(stripslashes($value));$req .= "&$key=$value";}// post back to PayPal system to validate$header = "POST /cgi-bin/webscr HTTP/1.1\r\n";    // If testing on Sandbox use: $header .= "Host: www.sandbox.paypal.com\r\n";$header .= "Connection: close\r\n";//$header .= "Host: www.paypal.com:443\r\n";$header .= "Content-Type: application/x-www-form-urlencoded\r\n";$header .= "Content-Length: " . strlen($req) . "\r\n\r\n";    // If testing on Sandbox use:$fp = fsockopen ('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30);// assign posted variables to local variables$item_name = $_POST['item_name'];$item_number = $_POST['item_number'];$payment_status = $_POST['payment_status'];$payment_amount = $_POST['mc_gross'];$payment_currency = $_POST['mc_currency'];$txn_id = $_POST['txn_id'];$receiver_email = $_POST['receiver_email'];$payer_email = $_POST['payer_email'];if (!$fp) {// HTTP ERROR} else {fputs ($fp, $header . $req);while (!feof($fp)) {$res = fgets ($fp, 1024);if (strcmp (trim($res), "VERIFIED") == 0) {// check the payment_status is Completed// check that txn_id has not been previously processed// check that receiver_email is your Primary PayPal email// check that payment_amount/payment_currency are correct// process payment$mail_From = "From: address-here";$mail_To = "address-here";$mail_Subject = "VERIFIED IPN";$mail_Body = $req;//error_log($res, 1, "address-here");foreach ($_POST as $key => $value){$emailtext .= $key . " = " .$value ."\n\n";}mail($mail_To, $mail_Subject, $emailtext . "\n\n" . $mail_Body, $mail_From);}else if (strcmp (trim($res), "INVALID") == 0) {$mail_From = "From: address-here";$mail_To = "address-here";$mail_Subject = "INVALID IPN";$mail_Body = $req;//error_log($res, 1, "address-here");foreach ($_POST as $key => $value){$emailtext .= $key . " = " .$value ."\n\n";}mail($mail_To, $mail_Subject, $emailtext . "\n\n" . $mail_Body, $mail_From);}}fclose ($fp);}?>

In the "address-here" sections are where you'll need to add in the appropriate e-mail address. This posts everything back to PayPal and it just returned a "VERIFIED" response back.

It's all set for the Sandbox now.