eBusiness eBooks logo

      

IPN SCRIPT

 <?php

### THIS FILE HANDLES PAYPAL IPN POSTS.
### SCROLL DOWN BELOW THESE VARIABLES TO READ
### THE CUSTOMIZATION AND SETUP INSTRUCTIONS FOR THIS SCRIPT




#######################################################
### STANDARD INSTANT PAYMENT NOTIFICATION VARIABLES ###
#######################################################

$receiver_email = $_POST['receiver_email']; ### THE PAYMENT RECIEVER, i.e. YOU
$item_name = $_POST['item_name'];
$item_number = $_POST['item_number'];
$quantity = $_POST['quantity'];
$invoice = $_POST['invoice'];
$payment_status = $_POST['payment_status'];
$pending_reason = $_POST['pending_reason'];
$payment_date = $_POST['payment_date'];
$settle_amount = $_POST['settle_amount'];
$settle_currency = $_POST['settle_currency'];
$exchange_rate = $_POST['exchange_rate'];
$payment_gross = $_POST['payment_gross'];
$payment_fee = $_POST['payment_fee'];
$mc_gross = $_POST['mc_gross'];
$mc_fee = $_POST['mc_fee'];
$mc_currency = $_POST['mc_currency'];
$txn_id = $_POST['txn_id'];
$txn_type = $_POST['txn_type'];
$first_name = $_POST['first_name']; ### BUYER
$last_name = $_POST['last_name']; ### BUYER
$address_street = $_POST['address_street']; ### BUYER
$address_city = $_POST['address_city']; ### BUYER
$address_state = $_POST['address_state']; ### BUYER
$address_zip = $_POST['address_zip']; ### BUYER
$address_country = $_POST['address_country']; ### BUYER
$address_status = $_POST['address_status']; ### BUYER
$payer_email = $_POST['payer_email']; ### THE BUYER
$payer_id = $_POST['payer_id'];
$payer_status = $_POST['payer_status'];
$payment_type = $_POST['payment_type'];
$notify_version = $_POST['notify_version'];
$verify_sign = $_POST['verify_sign'];

########################
### END OF VARIABLES ###
########################






### INSTRUCTIONS:

### ADD THE FOLOWING HIDDEN FORM INPUT TO YOUR PAYPAL BUY NOW BUTTON:
### <input type="hidden" name="notify_url" value="http://yourserver.com/ipn.php">
### MAKE SURE THE URL POINTS TO THIS SCRIPT ON YOUR SERVER. NOW WHEN PURCHASES ARE MADE
### THROUGH YOUR PAYPAL BUY NOW BUTTON, PAYPAL WILL CONTACT THIS IPN SCRIPT.

### IPN SCRIPTS CAN BE SET UP TO HANDLE ANY NUMBER OF BACKEND TASKS ON YOUR SITE.
### THIS SCRIPT IS SIMPLE, AND DESIGNED TO DO JUST ONE THING, SEND AN EMAIL AFTER 
### A TRANSACTION HAS BEEN MADE.

### CUSTOMIZE THE FOLLOWING EMAILS HOWEVER YOU WISH. BUT FOLLOW THESE SIMPLE RULES
### SO THAT YOU DO NOT "BREAK" THE SCRIPT:
### 1. DO NOT HIT THE 'ENTER' OR 'RETURN' KEY TO CREATE A LINE BREAK IN YOUR MESSAGE.
### SIMPLY TYPE \n TO CREATE A LINE BREAK IN YOUR MESSAGE. YOU CAN TYPE SEVERAL IN
### A ROW FOR SEVERAL LINE BREAKS \n\n\n
### 2. DO NOT USE DOUBLE QUOTES IN YOUR MESSAGE UNLESS YOU FIRST 'ESCAPE' THEM WITH 
### A / IN FRONT OF EACH DOUBLE QUOTE, FOR EXAMPLE: This is the \"correct\" way.
### THIS IS BECAUSE DOUBLE QUOTES DEFINE THE BEGINNING AND END ON THE MESSAGE.
### A GOOD WAY NOT TO MESS THIS UP IS TO NOT USE DOUBLE QUOTES AT ALL.
### 3. YOU CAN INCLUDE ANY PIECE OF SALE INFORMATION IN THE MESSAGE BY TYPING THE
### NAME OF ITS VARIABLE, FOR EXAMPLE: Thanks you $first_name $last_name.
### LOOK ABOVE THESE INSTRUCTIONS FOR A LIST OF THE VARIABLES USED.





### VALID SALE EMAIL MESSAGE
$valid_subject = "Thanks For Your Purchase from Oursite!";
$valid_message = "Thank You for your purchase of Product Name. You can download your product at: http://www.trading-web-solutions.com\nThanks Again,\nMark Kenny\nYourSiteName\nhttp://www.YourSiteName.com";



### INVALID SALE EMAIL MESSAGE
$invalid_subject = "We're Sorry!";
$invalid_message = "We are sorry but your attempt to purchase $item_name resulted in an invalid PayPal transaction. Please contact the site you purchased from for details.\n\nThanks Anyway,\nYourSiteName.com.";



###############################
### NO MORE EDITING NEEDED! ###
###############################


if(phpversion() <= "4.0.6") { $_POST = ($HTTP_POST_VARS); }

$req = 'cmd=_notify-validate';
foreach ($_POST as $key => $value) {
$value = urlencode(stripslashes($value));
$req .= "&$key=$value"; }

$fp = fsockopen ("www.paypal.com", 80, $errno, $errstr, 30);
$header .= "POST /cgi-bin/webscr HTTP/1.0\r\n";
#$header .= "Host: www.paypal.com\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " . strlen ($req) . "\r\n\r\n";

if (!$fp) { exit; }

else {

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

######### IPN is Genuine and VERIFIED
if (strcmp ($res, "VERIFIED") == 0) {
if ($payment_status != "Refunded") {
mail($payer_email,$valid_subject,$valid_message,"From: $receiver_email"); } }

######### IPN is INVALID for this service
elseif (strcmp ($res, "INVALID") == 0) {
mail($payer_email,$invalid_subject,$invalid_message,"From: $receiver_email"); }

} ### Terminate the Socket connection and Exit
fclose ($fp);
exit;
}

?>