2016-07-26 45 views
0

我有一个网站,使用贝宝作为付款选项的在线交易。结账和贝宝方面的购物车计算工作正常,但我没有收到来自贝宝沙箱的任何IPN消息。写完日志后,我发现参数formdata为空。即使使用IPN历史记录进行检查,它也会显示IPN消息的状态为正在重试... IPN通知网址也已设置。 以下是侦听器代码。Paypal:IPN监听器没有收到IPN消息

[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; 
    } 

这是工作之前,但不知道什么阻止了它。 作为Paypal支付网关的新手,任何帮助将不胜感激。

+0

有没有人得到这个工作... –

回答

1

从昨天开始,paypal存在一定的问题。我希望这是一个回声问题,它将尽快修复。我自己也有沙箱问题,但之前也发生过。

+0

我也有沙盒模式的问题......任何人都可以证实这一点?我正在使用.NET SDK和自适应付款... – zzare

0

我也有沙盒模式的问题......任何人都可以证实这一点?我正在使用.NET SDK和自适应付款... 编辑:今天再次工作;)