Экспресс-касса PayPal возвращает ответ в виде html в MVC .net

У меня было тестовое приложение, интегрированное с экспресс-оплатой 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;

Изменить: 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 & Charset = Windows-1252 и notify_version = 3.1 & merchant_return_link = click + here & form_charset = UTF-8 & cmd = _notify-validate

6
задан pramodtech 3 November 2011 в 07:40
поделиться