I am trying to integrate Paypal and I do not understand how it is right. When the site is redirected to Paypal, it displays a web page (the image I added with this message). Please someone help me in this mess because I am doing this for the first. Please someone tell me where I can be wrong. alt text http://img341.imageshack.us/img341/6920/captureqt.jpg
I used this class to integrate Paypal into my website. But I donβt know why I donβt get the desired thing.
/ ************************************************* ******************************** * IPN integration class Paypal IPN
- Posted by: Micah Carrick
- Email: email@micahcarrick.com
- Website: http://www.micahcarrick.com
*
- File: paypal.class.php
- Version: 1.3.0
- Copyright: (c) 2005 - Mika Carrick.
- You are free to use, distribute and modify this software.
- in accordance with the terms of the public GNU license. Cm.
- license.txt file included.
HISTORY VERION:
- v1.3.0 [10.10.2005] - Fixed so that single quotes are processed
- the right way, not just removing them. it
- was necessary because the user could still put
- quotes.
- v1.2.1 [05/06/2005] - The typo from the previous correction is fixed :) *
- v1.2.0 [05.31.2005] - added additional ability to delete all quotation marks
- from PayPal messages. IPN will return.
- incorrect sometimes when quotation marks are used in certian
- fields. *
- v1.1.0 [05.15.2005] - Changed the form output in submit_paypal_post
- , javascript,
- .
*
v1.0.0 [04.16.2005] -
*
:
*
- . . www.micahcarrick.com .
- .
*
- paypal
- (IPN) PayPal.
- paypal "plug" n "play".
- ( ), paypal
- , / paypal,
- , .
* - paypal,
- .
- ,
- - - . PHP-
- http://sourceforge.net/projects/paypal.
- $p = new paypal_class;
- $p- > add_field ('business', 'somebody@domain.com');
- $p- > add_field ('first_name', $_POST ['first_name']);
- ... ( )
- $p- > submit_paypal_post();
*
- IPN, IPN:
*
- $p = new paypal_class;
- if ($ p- > validate_ipn()) {
- ... ( IPN. ipn_data())
- }
*
*
- paypal, - :
*
- http://www.paypal.com/en_US/pdf/integration_guide.pdf.
- , ,
- paypal ( add_field() ),
- IPN ( ipn_data()
- ). .
*
- "" .
test account (s) that allows you to test your site from both a prospective seller and a buyer. Instructions for this are available at https://developer.paypal.com/ , as well as an excellent forum where you can ask all your questions about integration into PayPal. Make sure that you follow all the guidelines for setting up a sandbox test environment, including adding fake bank accounts and credit cards.
* /
class paypal_class {
var $ last_error; // contains the last error detected
var $ ipn_log; // bool: write IPN results to a text file?
var $ ipn_log_file; // IPN log file name var $ ipn_response; // contains the IPN response from paypal
var $ ipn_data = array (); // the array contains POST values ββfor IPN
var $ fields = array (); // the array contains fields to send to paypal
paypal_class () function {
$this->paypal_url = 'https://www.sandbox.paypal.com/cgi-bin/webscr';
$this->last_error = '';
$this->ipn_log_file = 'ipn_results.log';
$this->ipn_log = true;
$this->ipn_response = '';
$this->add_field('rm','2');
$this->add_field('cmd','_xclick');
}
function add_field ($ field, $value) {
$this->fields["$field"] = $value;
}
function submit_paypal_post() {
echo "<html>\n";
echo "<head><title>Processing Payment...</title></head>\n";
echo "<body onLoad=\"document.forms['paypal_form'].submit();\">\n";
echo "<center><h2>Please wait, your order is being processed and you";
echo " will be redirected to the paypal website.</h2></center>\n";
echo "<form method=\"post\" name=\"paypal_form\" ";
echo "action=\"".$this->paypal_url."\">\n";
foreach ($this->fields as $name => $value) {
echo "<input type=\"hidden\" name=\"$name\" value=\"$value\"/>\n";
}
echo "<center><br/><br/>If you are not automatically redirected to ";
echo "paypal within 5 seconds...<br/><br/>\n";
echo "<input type=\"submit\" value=\"Click Here\"></center>\n";
echo "</form>\n";
echo "</body></html>\n";
} // ---------------------------------------- // /* function setStatus() {
$db = new Connection();
$con = $db->getConnection();
$query="insert into paypal_Result(`mc_gross`,`protection_eligibility`) values ('1','2')";
$rs=mysql_query($query,$con);
if($rs != "")
{
return true;
}
else
{
return false;
}
} */
//----------------------------------------
function validate_ipn() {
$url_parsed=parse_url($this->paypal_url);
$post_string = '';
foreach ($_POST as $field=>$value) {
$this->ipn_data["$field"] = $value;
$post_string .= $field.'='.urlencode(stripslashes($value)).'&';
}
$post_string.="cmd=_notify-validate";
$fp = fsockopen($url_parsed[host],"80",$err_num,$err_str,30);
if(!$fp) {
$this->last_error = "fsockopen error no. $errnum: $errstr";
$this->log_ipn_results(false);
return false;
} else {
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");
while(!feof($fp)) {
$this->ipn_response .= fgets($fp, 1024);
}
fclose($fp);
}
if (eregi("VERIFIED",$this->ipn_response)) {
$this->log_ipn_results(true);
return true;
} else {
$this->last_error = 'IPN Validation Failed.';
$this->log_ipn_results(false);
return false;
}
}
log_ipn_results ($ success) {
if (!$this->ipn_log) return;
$text = '['.date('m/d/Y g:i A').'] - ';
if ($success) $text .= "SUCCESS!\n";
else $text .= 'FAIL: '.$this->last_error."\n";
$text .= "IPN POST Vars from Paypal:\n";
foreach ($this->ipn_data as $key=>$value) {
$text .= "$key=$value, ";
}
$text .= "\nIPN Response from Paypal Server:\n ".$this->ipn_response;
$fp=fopen($this->ipn_log_file,'a');
fwrite($fp, $text . "\n\n");
fclose($fp);
}
dump_fields() {
// Used for debugging, this function will output all the field/value pairs
// that are currently defined in the instance of the class using the
// add_field() function.
echo "<h3>paypal_class->dump_fields() Output:</h3>";
echo "<table width=\"95%\" border=\"1\" cellpadding=\"2\" cellspacing=\"0\">
<tr>
<td bgcolor=\"black\"><b><font color=\"white\">Field Name</font></b></td>
<td bgcolor=\"black\"><b><font color=\"white\">Value</font></b></td>
</tr>";
ksort($this->fields);
foreach ($this->fields as $key => $value) {
echo "<tr><td>$key</td><td>".urldecode($value)." </td></tr>";
}
echo "</table><br>";
}
}