So, I’ve read the IPN documentation and I’ve read tons of examples that I’ve found. I’ve tried a few different solutions, and after them not working, I’ve simply copy and pasted exactly what is documented on the PayPal IPN page. As such, it’s STILL not working. My IPN History shows that it’s continuing to resend the message. Code below – what is missing?
protected void Page_Load(object sender, EventArgs e)
{
const string postUrl = "https://www.paypal.com/cgi-bin/webscr";
var req = (HttpWebRequest)WebRequest.Create(postUrl);
//Set values for the request back
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
var param = Request.BinaryRead(HttpContext.Current.Request.ContentLength);
var strRequest = Encoding.ASCII.GetString(param);
var ipnPost = strRequest;
strRequest += "&cmd=_notify-validate";
req.ContentLength = strRequest.Length;
//for proxy
//WebProxy proxy = new WebProxy(new Uri("http://url:port#"));
//req.Proxy = proxy;
//Send the request to PayPal and get the response
var streamOut = new StreamWriter(req.GetRequestStream(), Encoding.ASCII);
streamOut.Write(strRequest);
streamOut.Close();
// ReSharper disable AssignNullToNotNullAttribute
var streamIn = new StreamReader(req.GetResponse().GetResponseStream());
// ReSharper restore AssignNullToNotNullAttribute
var strResponse = streamIn.ReadToEnd();
streamIn.Close();
// logging ipn messages... be sure that you give write
// permission to process executing this code
//
if (strResponse == "VERIFIED")
{
//check the payment_status is Completed
//check that txn_id has not been previously processed
//check that receiver_email is your Primary PayPal email
//check that payment_amount/payment_currency are correct
//process payment
var mailer = new Emailer();
mailer.SendMail("from@domain.com", "to@domain.com", "Thank you!",
"Thank you for your sponsorship. Good luck on your results!<br /><br />" + ipnPost);
}
else if (strResponse == "INVALID")
{
//log for manual investigation
}
}
Turns out it was an error with my email sender. The address I was sending from was not verified in my AWS account.