Я бы проверил, чтобы ваш веб-сервер разрешал запросы 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
)