У меня было тестовое приложение, интегрированное с экспресс-проверкой Paypal, и оно работало нормально.Но сейчас, похоже, возникает проблема.После успешной оплаты на PayPal, когда мой обработчик IPN проверяет ответ, PayPal возвращает ответ в виде HTML-страницы вместо «ПРОВЕРЕНО» ИЛИ «НЕДОПУСТИМО», и из-за этого я не могу подтвердить платеж.Есть ли какие-либо изменения в Paypal в последнее время для экспресс-оплаты?Ниже приведен полный код
<form id="Paypal" name="Paypal" action="https://www.sandbox.paypal.com/cgi-bin/webscr"
method="post">
@Html.Hidden("cmd", "_xclick")
@Html.Hidden("business", "myemail@test.com")
@Html.Hidden("item_name", "Payment for course registration")
@Html.Hidden("amount", 100 )
@Html.Hidden("no_shipping", "1")
@Html.Hidden("return", "http://localhost:49319/cart/IPN")
@Html.Hidden("rm", "2")
@Html.Hidden("notify_url", "http://localhost:49319/cart/IPN")
@Html.Hidden("cancel_return", "http://localhost:49319/cart/PaymentFailure")
@Html.Hidden("currency_code", "CAD")
@Html.Hidden("tax_cart", "1")
@Html.Hidden("custom", "12")
<div class="checkout-button">
<input type="image" src="https://www.paypal.com/en_US/i/btn/btn_xpressCheckout.gif"
align="left" style="margin-right: 7px;" />
</div>
</form>
Код обработчика IPN:
string paypalUrl = useSandbox ? "https://www.sandbox.paypal.com/cgi-bin/webscr"
: "https://www.paypal.com/cgi-bin/webscr";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(paypalUrl);
// Set values for the request back
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
byte[] param = Request.BinaryRead(Request.ContentLength);
string strRequest = Encoding.ASCII.GetString(param);
StringBuilder sb = new StringBuilder();
sb.Append(strRequest);
foreach (string key in formVals.Keys)
{
sb.AppendFormat("&{0}={1}", key, formVals[key]);
}
strRequest += sb.ToString();
req.ContentLength = strRequest.Length;
//for proxy
//WebProxy proxy = new WebProxy(new Uri("http://urlort#");
//req.Proxy = proxy;
//Send the request to PayPal and get the response
string response = "";
using (StreamWriter streamOut = new StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII))
{
streamOut.Write(strRequest);
streamOut.Close();
using (StreamReader streamIn = new StreamReader(req.GetResponse().GetResponseStream()))
{
response = streamIn.ReadToEnd();
}
}
return response;
Редактировать: Вот строка запроса, отправленная Paypal
CONTEXT = wtgSziM4C5x0SI-9CmKcv2vkSeTLK5P_g6HqzC__YTYkcqziFNcB84p79Ja & myAllTextSubmitID = & CMD = _flow & transaction_subject = 12 & txn_type = web_accept & PAYMENT_DATE = 01% 3A59% 3A21 + мая + 02% 2C + 2011 + PDT & last_name = User & residence_country = CA & pending_reason = paymentreview & item_name = Платежное + для + конечно + регистрация & payment_gross = & mc_currency = CAD и бизнес = pramod_1298956597_biz% 40sumerusolutions.com & payment_type= мгновенная & protection_eligibility = Ineligible & payer_status = проверено и verify_sign = Ag7LtkvrF1u9.1ScLJwRM4btR1G1A16qsCs-xUl6EpI1rE1UWpodXJsc & txn_id = 15Y20623GD922445F & payer_email = pramod_1298961722_per% 40sumerusolutions.com и налог = 0,00 & test_ipn = 1 & first_name = Test & receiver_email = pramod_1298956597_biz% 40sumerusolutions.com и количество = 1 & payer_id = Z2MRT3Q9L6E28 & receiver_id = RT3M59WESZHEE & ITEM_NUMBER = & payment_status = Pending & handling_amount = 0,00 & доставка = 0,00 & mc_gross =850,00 и пользовательские = 12 & кодировка = окна-1252¬ify_version = 3,1 & merchant_return_link = нажмите + здесь и form_charset = UTF-8CONTEXT = wtgSziM4C5x0SI-9CmKcv2vkSeTLK5P_g6HqzC__YTYkcqziFNcB84p79Ja & myAllTextSubmitID = & CMD = _flow & transaction_subject = 12 & txn_type = web_accept & PAYMENT_DATE = 01% 3A59% 3A21 + мая + 02% 2C + 2011 + PDT & last_name = User & residence_country = CA & pending_reason= paymentreview & item_name = Платежное + для + конечно + регистрация & payment_gross = & mc_currency = CAD и бизнес = pramod_1298956597_biz% 40sumerusolutions.com & payment_type = мгновенная & protection_eligibility = Ineligible & payer_status = проверено и verify_sign = Ag7LtkvrF1u9.1ScLJwRM4btR1G1A16qsCs-xUl6EpI1rE1UWpodXJsc & txn_id = 15Y20623GD922445F & payer_email = pramod_1298961722_per% 40sumerusolutions.com и налог = 0,00 & test_ipn = 1 & first_name = Test & receiver_email = pramod_1298956597_biz%40sumerusolutions.com и количество = 1 & payer_id = Z2MRT3Q9L6E28 & receiver_id = RT3M59WESZHEE & ITEM_NUMBER = & payment_status = Pending & handling_amount = 0,00 & доставка = 0,00 & mc_gross = 850,00 & заказ = 12 & кодировок = окна-1252¬ify_version = 3,1 & merchant_return_lчернила = нажмите + здесь и form_charset = UTF-8 & CMD = _notify-Validate