954,580 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

Paypal Subscription IPN problems. Can't get the subscribers Id

Hello. I'm having the most difficult time trying to get the Paypals IPN subscription

Id. This is my IPN  page.

<?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.0\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
$fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30);


 

if (!$fp) {
// HTTP ERROR
} else {
fputs ($fp, $header . $req);
while (!feof($fp)) {
$res = fgets ($fp, 1024);
if (strcmp ($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
  if("susbcr_signup" == $_POST['txn_type']){

      $_id = $_POST['subscr_id'];
  

 
    $websites= "websites";
    $database = "k29803_1";
   mysql_connect("localhost", $username, $password) or die(mysql_error());
   mysql_select_db($database);

  $query = "SELECT * FROM users WHERE username= 'drahoslava' AND password = 'drah0slava'";
  $results = mysql_query($query)or die(mysql_error());
    if(mysql_num_rows($results)==1){
        $add_credits = "UPDATE users SET hash = '$_id'
        WHERE username= 'drahoslava' AND password = 'drah0slava'";
        mysql_query($add_credits) or die(mysql_error());
      echo 'done';
         

      }

}
else if (strcmp ($res, "INVALID") == 0) {
// log for manual investigation
}
}
fclose ($fp);
}
  }
  ?>


This is my form

<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="6ZZUDQCUUXGMS">
  <input type="hidden" name="item_name" value="Baseball Hat Monthly">
  <input type="hidden" name="item_number" value="123">
<input type="hidden" name="notify_url" value="http://www.germcode.kodingen.com/ipn.php" />

<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_subscribeCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form>


The Mysql Table doesnt update.. What could be the problem. *I do have auto return on

codegerm
Newbie Poster
2 posts since Sep 2011
Reputation Points: 10
Solved Threads: 0
 
<?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.0\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
$fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30);

if (!$fp) {
	// HTTP ERROR
} else {
	fputs ($fp, $header . $req);
	while (!feof($fp)) {
		$res = fgets ($fp, 1024);
		if (0 == strcmp($res, "VERIFIED")) {
			// 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
			if("susbcr_signup" == $_POST['txn_type']){
				$_id = $_POST['subscr_id'];
				$websites= "websites";
				$database = "k29803_1";
				$link = mysql_connect("localhost", $username, $password) or die(mysql_error());
				mysql_select_db($database, $link);
				 
				$query = "SELECT * FROM users WHERE username= 'drahoslava' AND password = 'drah0slava'";
				$results = mysql_query($query, $link)or die(mysql_error());
				if(1==mysql_num_rows($results)){
					$add_credits = "UPDATE users SET hash = '$_id'
					WHERE username= 'drahoslava' AND password = 'drah0slava'";
					mysql_query($add_credits, $link) or die(mysql_error());
					echo 'done';
				}
				mysql_free_result($results);
			} elseif (0 == strcmp($res, "INVALID")) {
			// log for manual investigation
			}
		}
	}
	fclose($fp);
}

?>


fclose needs to move, and mysql_free_result needs to be added. common mistake with mysql_free_result, the examples don't have it, but they should, code doesn't work without it.

jmichae3
Junior Poster
106 posts since Jul 2011
Reputation Points: 14
Solved Threads: 11
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You
View similar articles that have also been tagged: