2014-10-10 86 views
0

這個問題剛剛出現:我無法從PayPal沙箱(IPN)得到迴應。Sanbox Paypal IPN不發送回覆,與現場網站工作正常Paypal

我使用下面的代碼:

import requests 
params = {} #all params paypal sent via IPN, empty here for sake of brevity 
params['cmd'] = "_notify-validate" 
r = requests.post("https://www.sandbox.paypal.com/cgi-bin/webscr", params = params) 

這會返回一條錯誤消息,「連接被對方​​復位」

注意,此代碼前工作正常,如果我用的是活的網站貝寶URL而不是沙箱,那麼我仍然會得到響應而不是連接錯誤。

任何人都可以驗證這是否是PayPal的問題?我的代碼沒有任何更改,但從昨天起,我的測試使用沙箱的任何工作都不再有效。

+0

我現在有完全相同的問題... – Booski 2014-10-12 01:09:06

回答

1

它實際上是我的Python代碼的問題。奇怪的是,我沒有改變請求模塊,但它停止使用相同的代碼。

一旦我改變了通過'data'參數發送IPN變量,而不是'params',那麼我就能夠像正常一樣接收到響應。

r = requests.post("https://www.sandbox.paypal.com/cgi-bin/webscr", data = params) 
2

PayPal當前在沙箱環境中沒有遇到IPN問題。我已經測試過,並且無法重現所描述的問題。您是否可以嘗試測試下面的代碼,看看您是否有相同的結果?

<?php 
 

 
// change email from [email protected] to a valid one. 
 

 
// read the post from PayPal system and add 'cmd' 
 
if($_SERVER['REQUEST_METHOD']!="POST") die("No data"); 
 
$req = 'cmd=_notify-validate'; 
 
foreach ($_POST as $key => $value) { 
 
$value = urlencode(stripslashes($value)); 
 
$req .= "&$key=$value"; 
 
} 
 

 
// post back to PayPal system to validate 
 
$url=(!isset($_POST['test_ipn'])) ? 'https://www.paypal.com/cgi-bin/webscr' : 'https://www.sandbox.paypal.com/cgi-bin/webscr'; 
 

 
    $curl_result=$curl_err=''; 
 
    $ch = curl_init(); 
 
    curl_setopt($ch, CURLOPT_URL,$url); 
 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
 
    curl_setopt($ch, CURLOPT_POST, 1); 
 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $req); 
 
    curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/x-www-form-urlencoded", "Content-Length: " . strlen($req))); 
 
    curl_setopt($ch, CURLOPT_HEADER , 0); 
 
    curl_setopt($ch, CURLOPT_VERBOSE, 1); 
 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
 
    curl_setopt($ch, CURLOPT_TIMEOUT, 30); 
 
    $curl_result = @curl_exec($ch); 
 
    $curl_err = curl_error($ch); 
 
    curl_close($ch); 
 

 
//are we verified? If so, let's process the IPN 
 
if (strpos($curl_result, "VERIFIED")!==false) 
 
{ 
 
//do your IPN stuff here 
 
$mail_From = "From: [email protected]"; // enter an email address alias here example [email protected] please note this does not need to be a real email address 
 
$mail_To = "[email protected]"; //enter the email address you want to receive the email at 
 
$mail_Subject = "VERIFIED IPN"; 
 
$mail_Body = $req; 
 

 
foreach ($_POST as $key => $value){ 
 
$emailtext .= $key . " = " .$value ."\r\n\r\n"; 
 
} 
 

 
mail($mail_To, $mail_Subject, $emailtext . "\r\n\r\n" . $mail_Body, $mail_From); 
 
} 
 
else{ 
 
$mail_From = "From: [email protected]"; 
 
$mail_To = "[email protected]"; 
 
$mail_Subject = "INVALID IPN"; 
 
$mail_Body = $req; 
 

 
$emailtext = "you didn't get anything"; 
 
mail($mail_To, $mail_Subject, $emailtext . "\r\n\r\n" . $mail_Body, $mail_From); 
 
} 
 

 
?>

還是去GitHub的倉庫可以找到更多的IPN樣品。

https://github.com/paypal/ipn-code-samples