Заказ помечается оплаченным по содержимому колбэка
Обработчик колбэка платёжного шлюза устроен так: из тела запроса берутся order_id, amount, status, и при status = success заказ переводится в «оплачен» и уходит на сборку. Ручка доступна из интернета без авторизации, потому что шлюз не умеет присылать ваш токен.
Чего здесь не хватает?
- Достаточно принимать колбэк только по HTTPS: TLS подтверждает подлинность отправителя и целостность тела, поэтому данным можно доверять
- Нужно проверить подпись запроса ключом шлюза и сверить сумму и валюту с заказом на своей стороне либо перезапросить статус платежа у шлюза
- Достаточно проверять IP-адрес отправителя по списку из документации шлюза: подпись при этом избыточна и только усложняет обработчик
- Достаточно убедиться, что order_id соответствует существующему заказу: угадать идентификатор постороннему практически невозможно
