由于 PayPal 在过去几周内对其开发人员 API 进行了一些更改,我注意到开发人员中心的 IPN 模拟器不再像我预期的那样响应测试 IPN。现在,它正在吐出消息:
“IPN 传递失败:无法提取响应:找不到 Content-Type”
测试 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 请求转发到我的本地开发服务器,因为微软的开发测试服务器(非常愚蠢)只能在本地访问。我不知道这是否会影响结果,但在 PayPal 更改前一周左右,它确实运行良好。
提前谢谢了