Paypal响应未在Paypal IPN的notify_url页面上发布

时间:2012-03-31 12:26:43

标签: asp.net c#-4.0 paypal-ipn paypal-sandbox

我正在尝试测试我的paypal应用程序,并将我的paypal notify_url指定为www.xx.com/paypal.aspx。我应该从沙盒paypal得到回应。但我在paypal.aspx页面上没有得到任何东西。我的repsonse处理代码是:

protected void Page_Load(object sender, EventArgs e)
    {
        string connStr = ConfigurationManager.ConnectionStrings["MainConnStr"].ConnectionString;
        con = new SqlConnection(connStr);
        con.Open();
        //Post back to either sandbox or live
        string strSandbox = "https://www.sandbox.paypal.com/cgi-bin/webscr";
        // string strLive = "https://www.paypal.com/cgi-bin/webscr";
        HttpWebRequest req = (HttpWebRequest)WebRequest.Create(strSandbox);

        //Set values for the request back
        req.Method = "POST";
        req.ContentType = "application/x-www-form-urlencoded";
        byte[] param = Request.BinaryRead(HttpContext.Current.Request.ContentLength);
        string strRequest = Encoding.ASCII.GetString(param);
        strRequest += "&cmd=_notify-validate";
        req.ContentLength = strRequest.Length;


StreamWriter streamOut = new StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII);
    streamOut.Write(strRequest);
    streamOut.Close();
    StreamReader streamIn = new StreamReader(req.GetResponse().GetResponseStream());
    string strResponse = streamIn.ReadToEnd();
    streamIn.Close();

    if (strResponse == "VERIFIED")
    {
       //Insert statement
    }


else if (strResponse == "INVALID")
    {
        //UPDATE YOUR DATABASE

        StreamWriter swr = new StreamWriter(Server.MapPath("Textfile.txt"));
        swr.WriteLine("---- not verified(" + DateTime.Now.ToString() + ")--");
        swr.Dispose();
    }
    else
    {  //UPDATE YOUR DATABASE

        //TextWriter txWriter = new StreamWriter(Server.MapPath("../uploads/") + Session["orderID"].ToString() + ".txt");
        //txWriter.WriteLine("Invalid");
        ////log response/ipn data for manual investigation
        //txWriter.Close();
    }

付款已完全处理。我也被引导到感谢页面。请帮助

由于

1 个答案:

答案 0 :(得分:0)

首先,您必须确保传递给PayPal的URL作为notify_url值是一个公开有效且可解析的URL。这意味着,请确保您没有向其发送内部网络URL或计算机名称(即localhost,my_computer_name,mypcname.mynetwork.com)。检查并确保您没有创建错误名称或网络配置不正确的简单方法是将您发送给PayPal的任何URL作为notify_url值,并让您网络外部的朋友尝试访问他们浏览器中的URL。如果他们收到连接错误,您必须重新考虑网络配置或命名,然后才能让PayPal看到您的计算机。

其次,如果您使用调试器在Visual Studio中运行上述代码并在Web服务器中构建,则可能仅限于它仅在请求的站点名称为“localhost”时才响应请求。请参阅以下Microsoft文章,了解如何设置代码以在IIS的实际实例中运行。

http://msdn.microsoft.com/en-us/library/58wxa9w5.aspx