Всем привет. Подключал лаву на свой сервис и столкнулся с проблемой, что не получилось проверить сигнатуру при получении webhook после успешной оплаты. Нашел похожую тему в разделе питона: https://zelenka.guru/threads/5089924/ , но она создана в 2018 году, да и сдк обновили. Короче, изначально проверял сигнатуру следующим способом: Как изначально пытался проверить сигнатуры $input = file_get_contents('php://input'); //сырые данные в JSON, приходящие от лавы $additional = 'второй секретный ключ'; $secr = hash_hmac('sha256', $input, $additional);//генерируемый хэш для проверки //Хэш, генерируемый при отправки, находится в HTTP заголовке Authorization PHP $input = file_get_contents('php://input'); //сырые данные в JSON, приходящие от лавы $additional = 'второй секретный ключ'; $secr = hash_hmac('sha256', $input, $additional);//генерируемый хэш для проверки //Хэш, генерируемый при отправки, находится в HTTP заголовке Authorization При сравнении присланного и сгенерированного хешей результат false. После прочтения темы из абзаца выше решил посмотреть исходники сдк и пришел к такому решению: Как надо генерировать сигнатуру в webhook $input = file_get_contents('php://input'); $input = json_decode($input, true, 512, JSON_THROW_ON_ERROR); ksort($input); //далее генерировать и сравнивать хэши PHP $input = file_get_contents('php://input'); $input = json_decode($input, true, 512, JSON_THROW_ON_ERROR); ksort($input); //далее генерировать и сравнивать хэши Круто, если кому-то поможет.
NovaTeam, в целом все запустилось с первого раза, поебаться пришлось только с сигнатурой. Напрягает что нельзя посмотреть ответ на вебхук и, собственно, отправить его еще раз. В других платежках это есть и это очень удобно
Прикольно, но у лавы в целом по дебильному сделан хеш, при создание платежа нельзя создать хеш для дальнейшей работы с ним, т.е в любом случае придется генерировать хеш новый, который будет отличаться от первоначально созданного :(
assholebass Привет! Спасибо за информацию о проблеме с проверкой сигнатуры webhook в PHP. Рад, что ты нашел решение и поделился им. Если у тебя возникнут еще вопросы или проблемы, не стесняйся обращаться. Я всегда готов помочь!