title: Paypal PDT - Receiving no response (PHP)
body: <p>After a user makes a payment they are returned to this page:</p>
  
  <pre><code>// read the post from PayPal system and add 'cmd'
  $req = 'cmd=_notify-synch';
  
  $tx_token = $_GET['tx'];
  $auth_token = "REMOVEDFROMQUESTION";
  $req .= "&amp;tx=$tx_token&amp;at=$auth_token";
  
  // 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";
  
  // url for paypal sandbox
  $fp = fsockopen ('www.sandbox.paypal.com', 80, $errno, $errstr, 30);    
  
  // url for payal
  // $fp = fsockopen ('www.paypal.com', 80, $errno, $errstr, 30);
  // If possible, securely post back to paypal using HTTPS
  // Your PHP server will need to be SSL enabled
  // $fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30);
  
  if (!$fp) {
      // HTTP ERROR
      echo "http error";
  } else {
      fputs ($fp, $header . $req);
      // read the body data
      $res = '';
      $headerdone = false;
      while (!feof($fp)) {
          $line = fgets ($fp, 1024);
          if (strcmp($line, "\r\n") == 0) {
              // read the header
              $headerdone = true;
          }
          else if ($headerdone) {
              // header has been read. now read the contents
              $res .= $line;
          }
      }
  
      // parse the data
      $lines = explode("\n", $res);
      $keyarray = array();
      if (strcmp ($lines[0], "SUCCESS") == 0) {
          for ($i=1; $i&lt;count($lines);$i++){
              list($key,$val) = explode("=", $lines[$i]);
              $keyarray[urldecode($key)] = urldecode($val);
          }
          // 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
          $firstname = $keyarray['first_name'];
          $lastname = $keyarray['last_name'];
          $itemname = $keyarray['item_name'];
          $amount = $keyarray['payment_gross'];
  
          echo ("&lt;p&gt;&lt;h3&gt;Thank you for your purchase!&lt;/h3&gt;&lt;/p&gt;");
  
          echo ("&lt;b&gt;Payment Details&lt;/b&gt;&lt;br&gt;\n");
          echo ("&lt;li&gt;Name: $firstname $lastname&lt;/li&gt;\n");
          echo ("&lt;li&gt;Item: $itemname&lt;/li&gt;\n");
          echo ("&lt;li&gt;Amount: $amount&lt;/li&gt;\n");
          echo ("");
      }
      else if (strcmp ($lines[0], "FAIL") == 0) {
          // log for manual investigation
          echo "fail";
      } else {
          echo "fail2";
      }
  }
  fclose ($fp);
  </code></pre>
  
  <p>Paypal is succesfully returning the user to the page with correct GET variables:</p>
  
  <pre><code>?status=success&amp;tx=203229VT863344T&amp;st=Pending&amp;amt=76.00&amp;cc=GBP&amp;cm=19&amp;item_number=
  </code></pre>
  
  <p>But when the script is run it returns "error2". When I try to output the response I get nothing.</p>
  
  <p>Thanks for the help.</p>