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()); } }