2013-03-19 50 views
0

我已經在PHP中集成了PayPal和IPN,在新的Paypal開發之前,它重定向到沙箱,併成功用沙箱登錄,它允許測試付款,現在它重定向到beta開發人員站點而不是要測試的支付,PayPal與IPN在PHP不工作在新的測試版開發人員沙箱

以下是PHP類貝寶我用,提前

class paypal_class { 
var $error; // holds the error encountered 
var $ipn_log; // log IPN results 
var $ipn_log_file; // filename of the IPN log 
var $ipn_response; // holds the IPN response from PayPal 
var $ipn_data = array(); // contains the POST values for IPN 
var $fields = array(); // holds the fields to submit to PayPal 
function paypal_class() { 
// constructor. 
$this->paypal_url = 'https://www.paypal.com/cgi-bin/webscr'; 
$this->error = ''; 
$this->ipn_log_file = '.ipn_results.log'; 
$this->ipn_log = true; 
$this->ipn_response = ''; 
$this->add_field('rm','2'); // Return method = POST 
$this->add_field('cmd','_xclick'); 
} 
function add_field($field, $value) { 
// adds a key=>value pair to the fields array 
$this->fields["$field"] = $value; 
} 
function submit_paypal_post() { 
// generates an HTML page consisting of 
// a form with hidden elements which is submitted to PayPal 
echo "<html>\n"; 
echo "<head><title>Processing...</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 validate_ipn() { 
// parse the paypal URL 
$url_parsed=parse_url($this->paypal_url); 
// generate the post string from the _POST vars 
$post_string = ''; 
foreach ($_POST as $field=>$value) { 
$this->ipn_data["$field"] = $value; 
$post_string .= $field.'='.urlencode (stripslashes ($value)).'&'; 
} 
$post_string .= "cmd=_notify-validate"; 
// open the connection to paypal 
$fp = fsockopen($url_parsed[host],"80",$err_num,$err_str,30); 
if(!$fp) { 
// Print the error if not able to open the connection. 
$this->error = "Error no. $errnum: $errstr"; 
$this->log_ipn_results(false); 
return false; 
} else { 
// Post 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",$this->ipn_response)) { 
// Valid IPN. 
$this->log_ipn_results(true); 
return true; 
} else { 
// Invalid IPN. 
$this->error = 'IPN Validation Failed.'; 
$this->log_ipn_results(false); 
return false; 
} 
} 
function log_ipn_results($success) { 
if (!$this->ipn_log) return; 
// Timestamp 
$text = '['.date('m/d/Y g:i A').'] - '; 
// Success or failure 
if ($success) $text .= "SUCCESS!\n"; 
else $text .= 'FAIL: '.$this->error."\n"; 
// Log the POST variables 
$text .= "IPN POST Values from Paypal:\n"; 
foreach ($this->ipn_data as $key=>$value) { 
$text .= "$key=$value, "; 
} 
// response from the paypal server 
$text .= "\nIPN Response from Paypal Server:\n ".$this->ipn_response; 
// Write to log 
$fp=fopen($this->ipn_log_file,'a'); 
fwrite($fp, $text . "\n\n"); 
fclose($fp); // close file 
} 
} 

感謝,

+0

嘗試之前開放的瀏覽器清除cookie和緩存,並打算developer.paypal.com – 2013-03-19 13:20:54

回答

0

寶已經做了一些改動。現在在https://developer.paypal.com/上創建一個帳戶我使用了與使用沙箱相同的電子郵件ID。在https://developer.paypal.com/ 點擊註冊程序登錄的應用程序後 點擊Sandbox帳戶 通過單擊「創建帳戶」按鈕

貝寶創建導入「導入數據」鏈接以前的沙箱數據點擊或創建新的測試帳戶在註冊時的默認商家帳戶。 要查看任何沙箱帳戶,只需點擊它。新的選項將可用。瀏覽這些功能。

在這裏,你已經準備好再次使用沙箱細節

相關問題