asp.net web api-Paypal:IPN侦听器未接收IPN消息



我有一个网站,可以使用贝宝作为支付选项进行在线交易。paypal端的结账和购物车计算正在工作,但我没有收到任何来自paypal沙盒的IPN消息。在写日志后,我发现参数formdata为null。甚至检查了IPN历史记录,它显示IPN消息的状态为重试。。。IPN通知url也已设置。下面是侦听器代码。

[Route("IPN")]
    public IHttpActionResult IPN(FormDataCollection formData)
    {
        var formVals = new Dictionary<string, string>();
        formVals.Add("cmd", "_notify-validate");
        string response = GetPayPalResponse(formVals, formData);
        if (response.ToUpper().Trim() == "VERIFIED")
        {
            //entry into database
            }
            else
            {
                return InternalServerError();
            }
        return InternalServerError();
    }
string GetPayPalResponse(Dictionary<string, string> formVals, FormDataCollection formData)
    {
        string paypalUrl = GetPayPalURL();
        HttpWebRequest req = (HttpWebRequest)WebRequest.Create(paypalUrl);
        // Set values for the request back
        req.Method = "POST";
        req.ContentType = "application/x-www-form-urlencoded";
        Encoding encoding = Encoding.UTF8;
        StringBuilder sb = new StringBuilder();
        foreach (var entry in formData.ToList())
        {
            sb.AppendFormat("{0}={1}&", entry.Key, encoding.GetString(encoding.GetBytes(entry.Value)));
        }
        string strRequest = sb.ToString();
        strRequest += "cmd=_notify-validate";
        req.ContentLength = strRequest.Length;
        //Send the request to PayPal and get the response
        StreamWriter streamOut = new StreamWriter(req.GetRequestStream());
        streamOut.Write(strRequest);
        streamOut.Close();
        StreamReader streamIn = new StreamReader(req.GetResponse().GetResponseStream());
        string strResponse = streamIn.ReadToEnd();
        streamIn.Close();
        return strResponse;
    }

这以前是有效的,但不知道是什么阻止了它。作为贝宝支付网关的新手,任何帮助都将不胜感激。

自昨天以来,贝宝出现了一些问题。我希望这是一个临时问题,它会尽快得到解决。我自己也有沙盒的问题,但以前也发生过。

我也有沙盒模式的问题。。。其他人能证实这一点吗?我正在使用.NET SDK和自适应支付。。。编辑:今天又开始工作了;)

最新更新