2013-03-08 120 views
-1

昨天上午,在PayPal更新其开发站点之前,我正在开发我的IPN侦听器脚本,使用模拟器能够成功发送测试IPN消息。在他们改变网站之后,模拟器现在为相同的脚本返回http 401错误。我没有改变任何东西,甚至尝试致电贝宝支持。该技术人员表示,他们在更新网站时并不知道IPN的任何问题或更改。我的脚本是经典的asp。IPN模拟器返回401错误

我还尝试使用PHP和ASP.NET中的开发站点上可用的演示脚本之一,并收到相同的401错误代码。我在一个Windows平台上与GoDaddy进行托管,但正如我所说的,在网站更改之前,一切正常。

有没有其他人有这个问题?任何建议?以下是我在我的页面上使用的代码。

<%@LANGUAGE="VBScript"%> 
<% 
Dim Item_name, Item_number, Payment_status, Payment_amount 
Dim Txn_id, Receiver_email, Payer_email 
Dim objHttp, str 

'read post from PayPal system and add 'cmd' 
str = Request.Form & "&cmd=_notify-validate" 

'post back to PayPal system to validate 
'PayPal Sandbox settings 
set objHttp = Server.CreateObject("Msxml2.ServerXMLHTTP") 
'set objHttp = Server.CreateObject("Msxml2.ServerXMLHTTP.4.0") 
'set objHttp = Server.CreateObject("Microsoft.XMLHTTP") 
'PayPal Sandbox settings 
objHTTP.Open "POST", "https://www.sandbox.paypal.com/cgi-bin/webscr" , false 
objHTTP.setRequestHeader "Host", "www.sandbox.paypal.com" 
objHttp.setRequestHeader "Content-type", "application/x-www-form-urlencoded" 
objHttp.Send str 


'assign posted variables to local variables 
Item_name = Request.Form("item_name") 
Item_number = Request.Form("item_number") 
Payment_status = Request.Form("payment_status") 
Payment_amount = Request.Form("mc_gross") 
Payment_currency = Request.Form("mc_currency") 
Txn_id = Request.Form("txn_id") 
Receiver_email = Request.Form("receiver_email") 
Payer_email = Request.Form("payer_email") 

'Check notification validation 
if (objHttp.status <> 200) then 
'HTTP error handling 
elseif (objHttp.responseText = "VERIFIED") then 
'check that Payment_status=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 
elseif (objHttp.responseText = "INVALID") then 
'log for manual investigation 
else 
'error 
end if 
Set objHttp = nothing 
%> 
+0

我只是想分享一下,问题是从PayPal的一方解决的。一旦他们纠正了有关Sandbox和IPN模拟器的问题,我的HTTP 401错误就消失了。希望这可以帮助其他人的问题。 – 2013-03-14 20:59:45

回答

0

是的,这是目前正在研究的问题。 IPN模拟器生成的数据似乎会在您针对IPN数据验证IPN数据时,对www.paypal.com/www.sandbox.paypal.com引起HTTP 400响应。在我们为你解决这个问题的时候坚持下去。对于这些对您造成的任何问题的歉意。

编辑:
原因似乎是一个流氓'cmd ='在IPN POST数据内。这导致我们的IPN验证服务返回一个HTTP 400.
您可以在过渡期间从IPN POST数据中删除“& cmd =”,或者如果您可以等一会儿,我们将推出一个修复程序这要尽快生产。

+0

感谢您的有益回应。然而,我的问题是401错误,而不是400错误。我尝试了从脚本中删除'&cmd ='的临时修复,但仍然收到401未经授权的错误。在开发者网站改变之前,我没有这个问题。这是什么,我需要等待,而PP修复他们的事情结束?再次感谢。 – 2013-03-09 03:09:17

+0

啊,道歉。我认为这是一个错字。你能编辑你的问题,包括完整的HTTP请求和响应吗? – Robert 2013-03-09 12:07:29

+0

老实说,我不确定如何包含完整的HTTP请求和响应。我在更新之前使用了此脚本来验证IPN功能是否正常。我很乐意收录你需要的信息,我只是不知道如何给你。 – 2013-03-09 16:16:20

0

同样在这里的问题,

我觉得头接收比它应该的IPN被发送,我是第期望接收空值的字段或不同的更多信息。这是一个错误?

相关问题