HARDPLATON
@HARDPLATON

Как правильно принять http уведомление от qiwi на php?

Есть документация https://developer.qiwi.com/ru/p2p-payments/#notifi... то что информация приходит методом POST это понятно, но вот как сделать авторизацию уведомлений не пойму. Можете помочь написать этот скрипт?
  • Вопрос задан
  • 63 просмотра
Пригласить эксперта
Ответы на вопрос 2
@vabka
Токсичный
После получения входящего уведомления необходимо проверить его подлинность. Для этого используется механизм цифровой подписи. Подпись уведомления отправляется в HTTP заголовке X-Api-Signature-SHA256. Для формирования подписи используется механизм проверки целостности HMAC с хэш-функцией SHA256.

Алгоритм проверки подписи:

1. Объединить значения следующих параметров уведомления в одну строку с разделителем |:

invoice_parameters = {amount.currency}|{amount.value}|{billId}|{siteId}|{status.value}

где {*} – значение параметра. Все значения при проверке подписи должны трактоваться как строки.

2. Вычислить HMAC-хэш c алгоритмом хэширования SHA256:

hash = HMAС(SHA256, invoice_parameters, secret_key) Где:

secret_key – ключ функции ;
invoice_parameters – строка из п.1;
3. Сравнить значение заголовка X-Api-Signature-SHA256 с результатом из п.2.

Процесс авторизации уведомления необходим, чтобы вы, как получатель уведомления, могли подтвердить, что этот запрос реально пришёл от QIWI
Какой из пунктов не понятен?

Ну и ещё сам киви пишет
Данный сервис не является обязательным для интеграции, вы можете реализовать более простой вариант с опросом статуса счета.
Ответ написан
JaxAdam
@JaxAdam
Junior Full-Stack Developer
Очень просто.
1) При регистрации транзакции (перевода) вы сохраняете данные необходимые для авторизации транзакции в БД веб-сервиса. Данные описаны в первом шаге в документации в разделе "Авторизация уведомлений":
invoice_parameters = {amount.currency}|{amount.value}|{billId}|{siteId}|{status.value}

2) Уведомление о переводе приходит вам в виде POST запроса, с телом запроса есть примеры в документации. Из заголовков (headers) запроса вы берете заголовок X-Api-Signature-SHA256. Обращаясь к базе вытаскиваете данные для авторизации уведомления. Дальше обращаясь к API Qiwi проверяете подлинность.
3) Если API прислал ответ со статусом 200 делаете что надо с уведомлением. Если нет, то ничего не делаете)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы