Сбой доставки IPN. Код ошибки HTTP 405: метод не разрешен - PullRequest
2 голосов
/ 22 июля 2009

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

Затем я обнаружил, что, по-видимому, в песочнице единственный способ проверить IPN - через симулятор IPN. Я пытаюсь использовать это, но я получаю:

Ошибка доставки IPN. Код ошибки HTTP 405: метод не разрешен

У кого-нибудь есть малейшая подсказка?

Также я ищу ЛЮБОЙ совет для прямого тестирования обработчиков IPN, поскольку имитатор IPN отстой (любой выбранный вами вариант сбрасывает все поля и т. Д.).

Любая помощь приветствуется!

1 Ответ

2 голосов
/ 22 июля 2009

Я бы проверил, чтобы ваш веб-сервер разрешал запросы POST на URL вашего обработчика IPN. В этом примере я использовал версию примера PHP на странице, на которую вы ссылались, и поместил скрипт в /ipn.php.

Затем я подключаюсь к своему серверу. (замените адрес вашего сервера)

$ telnet myserver.com 80
Trying myserver.com...
Connected to myserver.com.
Escape character is '^]'.

Вставьте следующее в ваш сеанс telnet. (замените ipn.php и myserver.com). Добавьте пустую строку после последней команды.

POST /ipn.php HTTP/1.1
Host: myserver.com
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 0
HTTP/1.1 200 OK

Если вы не видите статус 200, это означает, что ваше приложение не обрабатывает запросы POST должным образом, что является вероятной причиной ошибки 405.

Вы должны убедиться, что в вашем сервлете реализован метод doPost (), а также doGet ().

Если вы можете получать запросы, работающие с имитатора IPN, и готовы перейти к тестированию в песочнице, убедитесь, что у вас есть правильный URL-адрес для уведомлений и что IPN включен в профиле продавца из песочницы.

Кроме того, убедитесь, что ваш обработчик IPN также регистрирует запросы INVALID, чтобы вы знали, был ли запрос даже инициирован.

Наконец, убедитесь, что в вашем сервлете для URL проверки IPN установлено значение https://www.sandbox.paypal.com/cgi-bin/webscr. (URL в приведенном вами примере: https://www.paypal.com/cgi-bin/webscr)

...