Я не бегло говорю в Razor, но вот как я делаю свою веб-форму asp.net.Я полагаю, что это было с другого сайта (или большей части в любом случае), и я, к сожалению, не помню, где.Таким образом, я не считаю, что я должен знать основы этого кода.
string strLive = "https://www.paypal.com/cgi-bin/webscr";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(strLive);
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();
NameValueCollection ppDetails = HttpUtility.ParseQueryString(strRequest);
if (strResponse == "VERIFIED"){
if (ppDetails["payment_status"] == "Completed"){
//yay, give them goodies
} else if (strResponse == "INVALID"){
//log IP and possibly block them from your web services if malicious
} else {
//log response/ipn data for manual investigation
}
}
Основное различие заключается в том, что вы используете UTF8, а код, который у меня работает, использует ASCII.Я также добавил часть 'ppDetails', чтобы дать вам представление о том, как обрабатывать переменные.
Надеюсь, это поможет.У меня ушло навсегда выяснить IPN Paypal, и как только я это сделал, я чувствовал себя так глупо.