Симулятор IPN "Невозможно извлечь ответ: тип содержимого не найден"

Так как PayPal за последние пару недель выложил некоторые изменения в свои API для разработчиков, я заметил, что симулятор IPN в центре разработчиков больше не отвечает на тестовые IPN, как я и ожидал. Теперь он выплевывает сообщение:

"Ошибка доставки IPN: невозможно извлечь ответ: не найден тип содержимого"

Кажется, что сам тестовый IPN действительно работает нормально - мой контроллер IPN (в ASP) получает IPN, возвращает его обратно, а PayPal отвечает "VERIFIED", как я и ожидал.

Это просто ошибка интерфейса симулятора, или я что-то здесь упускаю? Мой код (насколько я могу судить) определенно отправляет заголовок ContentType, как это всегда было:

req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded"; <-- ## HEADER IS PRESENT ##
byte[] param = Request.BinaryRead(HttpContext.Request.ContentLength);
string strRequest = Encoding.ASCII.GetString(param);
strRequest += "&cmd=_notify-validate";
req.ContentLength = strRequest.Length;

Стоит отметить, что я использую nginx в качестве прокси для пересылки запросов IPN на мой локальный сервер разработки, поскольку тестовый сервер Microsoft для разработки (очень глупо) доступен только локально. Я не знаю, может ли это повлиять на результат, но он работал нормально всего неделю назад, прежде чем изменения PayPal.

Спасибо заранее

1 ответ

Решение

Нет - похоже, что ваш обработчик IPN не возвращает правильный ответ HTTP 200 после получения сообщения IPN от PayPal. Вот последовательность:

  1. PayPal отправляет сообщение IPN
  2. Ваш обработчик IPN получает сообщение IPN и возвращает HTTP 200 (без данных в ответ)
  3. Ваш обработчик IPN отправляет сообщение POST в PayPal для подтверждения.

Похоже, что #2 - это то, где он терпит неудачу. Я бы порекомендовал проверить ваш скрипт IPN, чтобы убедиться, что он возвращает успешный ответ, как только получит сообщение IPN (даже перед отправкой IPN для проверки).

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