由于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发生变化前一周左右才能正常工作。
非常感谢提前
答案 0 :(得分:2)
否 - 看起来你的IPN处理程序本身在从PayPal收到IPN消息后没有返回正确的HTTP 200响应。这是序列:
看起来#2就是它失败的地方。我建议检查你的IPN脚本,以确保它在收到IPN消息后立即返回成功的响应(甚至在发送IPN进行验证之前)。