IPN模拟器“无法提取响应:未找到内容类型”

时间:2013-03-15 00:22:32

标签: paypal paypal-ipn paypal-sandbox

由于PayPal在过去几周内对其开发人员API进行了一些更改,我注意到开发人员中心的IPN模拟器不再像我预期的那样响应测试IPN。现在,它正在吐出消息:

“IPN传送失败:无法提取响应:未找到内容类型”

测试IPN本身似乎实际执行得很好 - 我的IPN控制器(在ASP中)正在接收IPN,回复它,而PayPal正在响应“验证”,正如我所料

这只是一个模拟器前端错误,还是我在这里遗漏了什么?我的代码是(据我所知)肯定发送ContentType标头,就像它一直以来一样:

req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded"; <-- ## HEADER IS PRESENT ##
byte[] param = Request.BinaryRead(HttpContext.Request.ContentLength);
string strRequest = Encoding.ASCII.GetString(param);
strRequest += "&cmd=_notify-validate";
req.ContentLength = strRequest.Length;

值得注意的是,我使用nginx作为代理将IPN请求转发到我的本地开发服务器,因为Microsoft的开发测试服务器(非常愚蠢)只能在本地访问。我不知道这是否会影响结果,但 在PayPal发生变化前一周左右才能正常工作。

非常感谢提前

1 个答案:

答案 0 :(得分:2)

否 - 看起来你的IPN处理程序本身在从PayPal收到IPN消息后没有返回正确的HTTP 200响应。这是序列:

  1. PayPal发送IPN消息
  2. 您的IPN处理程序收到IPN消息并返回HTTP 200(没有响应中的数据)
  3. 您的IPN处理程序向PayPal发送POST消息以进行验证。
  4. 看起来#2就是它失败的地方。我建议检查你的IPN脚本,以确保它在收到IPN消息后立即返回成功的响应(甚至在发送IPN进行验证之前)。