Created
March 2, 2013 11:55
-
-
Save craftfortress/5070679 to your computer and use it in GitHub Desktop.
PayPal ASP.Net C#
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ASP .NET C# | |
using System; | |
using System.IO; | |
using System.Text; | |
using System.Net; | |
using System.Web; | |
public partial class csIPNexample : System.Web.UI.Page | |
{ | |
protected void Page_Load(object sender, EventArgs e) | |
{ | |
//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; | |
//for proxy | |
//WebProxy proxy = new WebProxy(new Uri("http://url:port#")); | |
//req.Proxy = proxy; | |
//Send the request to PayPal and get the response | |
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") | |
{ | |
//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 | |
} | |
else if (strResponse == "INVALID") | |
{ | |
//log for manual investigation | |
} | |
else | |
{ | |
//log response/ipn data for manual investigation | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment