예제 #1
0
 function validateIPN($data)
 {
     // parse the paypal URL
     $url = plgPaymentPaypalHelper::buildPaypalUrl();
     $this->paypal_url = $url;
     $url_parsed = parse_url($url);
     // generate the post string from the _POST vars aswell as load the
     // _POST vars into an arry so we can play with them from the calling
     // script.
     // append ipn command
     // open the connection to paypal
     $fp = fsockopen($url_parsed['host'], "80", $err_num, $err_str, 30);
     // $fp = fsockopen ($this->paypal_url, 80, $errno, $errstr, 30);
     if (!$fp) {
         // could not open the connection.  If loggin is on, the error message
         // will be in the log.
         $this->last_error = "fsockopen error no. {$errnum}: {$errstr}";
         plgPaymentPaypalHelper::log_ipn_results(false);
         return false;
     } else {
         $post_string = '';
         foreach ($data as $field => $value) {
             $this->ipn_data["{$field}"] = $value;
             $post_string .= $field . '=' . urlencode(stripslashes($value)) . '&';
         }
         $post_string .= "cmd=_notify-validate";
         // Post the data back to paypal
         fputs($fp, "POST {$url_parsed['path']} HTTP/1.1\r\n");
         fputs($fp, "Host: {$url_parsed['host']}\r\n");
         fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
         fputs($fp, "Content-length: " . strlen($post_string) . "\r\n");
         fputs($fp, "Connection: close\r\n\r\n");
         fputs($fp, $post_string . "\r\n\r\n");
         // loop through the response from the server and append to variable
         while (!feof($fp)) {
             $this->ipn_response .= fgets($fp, 1024);
         }
         fclose($fp);
         // close connection
     }
     if (eregi("verified", $post_string)) {
         // Valid IPN transaction.
         plgPaymentPaypalHelper::log_ipn_results(true);
         return true;
     } else {
         // Invalid IPN transaction.  Check the log for details.
         $this->last_error = 'IPN Validation Failed.';
         plgPaymentPaypalHelper::log_ipn_results(false);
         return false;
     }
 }
예제 #2
0
 function onTP_Storelog($data)
 {
     $log = plgPaymentPaypalHelper::Storelog($this->_name, $data);
 }
예제 #3
0
 /**
  * Store log
  *
  * @param   array  $data  data.
  *
  * @since   2.2
  * @return  list.
  */
 function onTP_Storelog($data)
 {
     $log_write = $this->params->get('log_write', '0');
     if ($log_write == 1) {
         $log = plgPaymentPaypalHelper::Storelog($this->_name, $data);
     }
 }