Ejemplo n.º 1
0
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                //Read The IPN POST
                string strFormValues = Encoding.ASCII.GetString(Request.BinaryRead(Request.ContentLength));
                string strNewRequest;

                //Create IPN verification request
                HttpWebRequest req = WebRequest.Create("https://www.sandbox.paypal.com/cgi-bin/webscr") as HttpWebRequest;

                req.Method = "POST";
                req.ContentType = "application/x-www-form-urlencoded";
                strNewRequest = strFormValues + "&cmd=_notify-validate";
                req.ContentLength = strNewRequest.Length;

                StreamWriter swOut = new StreamWriter(req.GetRequestStream(), Encoding.ASCII);
                swOut.Write(strNewRequest);
                swOut.Close();

                HttpWebResponse httwebresponseResponse = req.GetResponse() as HttpWebResponse;
                Stream stIPNResponseStream = httwebresponseResponse.GetResponseStream();
                Encoding encEncode = System.Text.Encoding.GetEncoding("utf-8");
                StreamReader srStream = new StreamReader(stIPNResponseStream, encEncode);

                NVPCodec nvpResponse = new NVPCodec();
                //Getting Name Value Pairs Collection
                nvpResponse.Decode(strFormValues);

                string strIPNResponse = srStream.ReadToEnd();
                Label lblMessage = new Label();
                lblMessage.Text = strIPNResponse;
                Page.Form.Controls.Add(lblMessage);

                //Creating new database object
                MyTestDBEntities MyTestDB = new MyTestDBEntities();

                IPN_Main ipn_main = new IPN_Main() { IPN_Status = strIPNResponse, DateTimeStamp = DateTime.Now, RawString = strFormValues };
                MyTestDB.IPN_Main.AddObject(ipn_main);
                MyTestDB.SaveChanges();

                for (int intCounter = 0; intCounter < nvpResponse.Count; ++intCounter)
                {
                    IPN_Variables ipn_variables = new IPN_Variables() { IPN_ID = ipn_main.IPN_ID, Name = nvpResponse.GetKey(intCounter), Variable = nvpResponse.Get(intCounter) };
                    MyTestDB.IPN_Variables.AddObject(ipn_variables);
                    //Writing to debug stream for debugging pupose
                    string strTemp = nvpResponse.GetKey(intCounter) + nvpResponse.Get(intCounter) + Environment.NewLine;
                    Debug.Write(strTemp);
                }

                MyTestDB.SaveChanges();
                srStream.Close();
            }
            catch (Exception exErrors)
            {
                //generic exception handling: adding label on page with exception details
                Label lblErrorMessage = new Label();
                lblErrorMessage.Text = "Exception: " + exErrors.Message + "<br/>" + exErrors.ToString();
                form1.Controls.Add(lblErrorMessage);

                Debug.WriteLine("Exception: " + exErrors.Message + "\n\t" + exErrors.ToString());
            }
        }
Ejemplo n.º 2
0
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                //Read The IPN POST
                string strFormValues = Encoding.ASCII.GetString(Request.BinaryRead(Request.ContentLength));
                string strNewRequest;

                //Create IPN verification request
                HttpWebRequest req = WebRequest.Create("https://www.sandbox.paypal.com/cgi-bin/webscr") as HttpWebRequest;

                req.Method        = "POST";
                req.ContentType   = "application/x-www-form-urlencoded";
                strNewRequest     = strFormValues + "&cmd=_notify-validate";
                req.ContentLength = strNewRequest.Length;

                StreamWriter swOut = new StreamWriter(req.GetRequestStream(), Encoding.ASCII);
                swOut.Write(strNewRequest);
                swOut.Close();

                HttpWebResponse httwebresponseResponse = req.GetResponse() as HttpWebResponse;
                Stream          stIPNResponseStream    = httwebresponseResponse.GetResponseStream();
                Encoding        encEncode = System.Text.Encoding.GetEncoding("utf-8");
                StreamReader    srStream  = new StreamReader(stIPNResponseStream, encEncode);

                NVPCodec nvpResponse = new NVPCodec();
                //Getting Name Value Pairs Collection
                nvpResponse.Decode(strFormValues);

                string strIPNResponse = srStream.ReadToEnd();
                Label  lblMessage     = new Label();
                lblMessage.Text = strIPNResponse;
                Page.Form.Controls.Add(lblMessage);

                //Creating new database object
                MyTestDBEntities MyTestDB = new MyTestDBEntities();

                IPN_Main ipn_main = new IPN_Main()
                {
                    IPN_Status = strIPNResponse, DateTimeStamp = DateTime.Now, RawString = strFormValues
                };
                MyTestDB.IPN_Main.AddObject(ipn_main);
                MyTestDB.SaveChanges();

                for (int intCounter = 0; intCounter < nvpResponse.Count; ++intCounter)
                {
                    IPN_Variables ipn_variables = new IPN_Variables()
                    {
                        IPN_ID = ipn_main.IPN_ID, Name = nvpResponse.GetKey(intCounter), Variable = nvpResponse.Get(intCounter)
                    };
                    MyTestDB.IPN_Variables.AddObject(ipn_variables);
                    //Writing to debug stream for debugging pupose
                    string strTemp = nvpResponse.GetKey(intCounter) + nvpResponse.Get(intCounter) + Environment.NewLine;
                    Debug.Write(strTemp);
                }

                MyTestDB.SaveChanges();
                srStream.Close();
            }
            catch (Exception exErrors)
            {
                //generic exception handling: adding label on page with exception details
                Label lblErrorMessage = new Label();
                lblErrorMessage.Text = "Exception: " + exErrors.Message + "<br/>" + exErrors.ToString();
                form1.Controls.Add(lblErrorMessage);

                Debug.WriteLine("Exception: " + exErrors.Message + "\n\t" + exErrors.ToString());
            }
        }