Вопрос давний, но решения так и нет, так что напишу для тех, кто сюда придёт с той же бедой.
Самое важное в вашем описании — что даже отладочная запись в лог не появляется. То есть ЮKassa получает 200, но отвечает ей явно не ваш скрипт. И раз сломалось сразу на двух проектах на одном хостинге, я бы в первую очередь копал в сторону хостинга, а не кода.
Что бы я проверил:
- access-лог сервера на момент реального платежа. Есть там POST от ЮKassa или нет, и с каким кодом. Это сразу покажет, доходит ли запрос вообще
- защиту от ботов на хостинге. Если она включена, она может сама отдавать 200 со своей страницей-заглушкой, и до PHP запрос просто не дойдёт. Ручной тест при этом работает, потому что вы его шлёте из браузера
- адрес уведомлений в кабинете ЮKassa. Если путь поменялся, CMS может отдавать свою 404-страницу со статусом 200, и для ЮKassa всё «доставлено»
- и банальное: лог пишите по абсолютному пути и проверьте права на запись, а то можно решить, что скрипт не вызывается, когда он просто не может создать файл
Чтобы не гадать, можно временно поставить в ЮKassa адрес из любого тестера вебхуков и прогнать тестовый платёж. Я для таких ситуаций сделал свой — hook.csap.ru, там видно весь запрос целиком, и можно включить проксирование на ваш обработчик: тогда увидите, что именно отвечает ваш сервер. Если там HTML вместо ответа скрипта — причина найдена. Webhook.site тоже подойдёт.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
Самое важное в вашем описании — что даже отладочная запись в лог не появляется. То есть ЮKassa получает 200, но отвечает ей явно не ваш скрипт. И раз сломалось сразу на двух проектах на одном хостинге, я бы в первую очередь копал в сторону хостинга, а не кода.
Что бы я проверил:
- access-лог сервера на момент реального платежа. Есть там POST от ЮKassa или нет, и с каким кодом. Это сразу покажет, доходит ли запрос вообще
- защиту от ботов на хостинге. Если она включена, она может сама отдавать 200 со своей страницей-заглушкой, и до PHP запрос просто не дойдёт. Ручной тест при этом работает, потому что вы его шлёте из браузера
- адрес уведомлений в кабинете ЮKassa. Если путь поменялся, CMS может отдавать свою 404-страницу со статусом 200, и для ЮKassa всё «доставлено»
- и банальное: лог пишите по абсолютному пути и проверьте права на запись, а то можно решить, что скрипт не вызывается, когда он просто не может создать файл
Чтобы не гадать, можно временно поставить в ЮKassa адрес из любого тестера вебхуков и прогнать тестовый платёж. Я для таких ситуаций сделал свой — hook.csap.ru, там видно весь запрос целиком, и можно включить проксирование на ваш обработчик: тогда увидите, что именно отвечает ваш сервер. Если там HTML вместо ответа скрипта — причина найдена. Webhook.site тоже подойдёт.