Paypal Sandbox IPN не обнаруживает тип контента

Последние несколько часов я пытался выяснить, почему симулятор IPN Paypal Sandbox не обнаруживает тип контента по моему запросу назад. Я не модифицировал код, в котором сделан обратный запрос, поэтому странно, что он не проходит правильно.

В марте был похожий вопрос, хотя ответ, который он отметил, похоже, не помог мне.

Кто-нибудь имеет представление о том, почему это происходит? Это случилось с кем-то еще недавно?

public class PaypalIPN : IHttpHandler, IRequiresSessionState {

    public void ProcessRequest (HttpContext context)
    {
        //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 = context.Request.BinaryRead(HttpContext.Current.Request.ContentLength);
        string strRequest = Encoding.ASCII.GetString(param);
        strRequest += "&cmd=_notify-validate";
        req.ContentLength = strRequest.Length;

        //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();
        ...

2 ответа

Решение

Итак, использование ASHX не сработало, но, очевидно, когда я переключился на файл ASPX, он волшебным образом работал. Я не уверен, что ASHX имеет, что не работает, но ASPX был решением.

Я только что столкнулся с той же проблемой, реализующей IPN Listener в Play2 (Scala).

Пожалуйста, обратите внимание. Это не тип контента вашего запроса обратно в Paypal, на который он жалуется, это ответ, который вы возвращаете на исходный запрос Paypal IPN, который он отправляет службе прослушивания.

Я возвращал play.api.mvc.SimpleResult.Ok() (который отображается на Http 200), но получал сообщение "IPN не обнаруживает тип содержимого".

Почесав голову и убедившись, что я немедленно возвращаю 200, я перечитал документацию и заметил: "Ваш слушатель возвращает пустой ответ HTTP 200".

Так что вместо этого я попробовал play.api.mvc.SimpleResult.Ok(""), и эй до того, как это сработало!

Таким образом, кажется, что вы должны отправить некоторый контент (пустую строку) с ответом 200, чтобы тестовый сервис был счастлив.

Другие вопросы по тегам