Уведомления
Самый простой способ получать информацию о переводах — подключить уведомления по электронной почте в настройках кошелька ЮMoney. Сообщения будут приходить на адрес, привязанный к кошельку.
Если вы хотите мгновенно узнавать о поступлении денег и сразу идентифицировать каждый перевод, включите HTTP-уведомления. Сервис будет передавать данные о сумме и значении поля
label.HTTP-уведомления можно получать только на один адрес сервера. Если у вас несколько сайтов и разные формы, с помощью которых вы собираете переводы на один кошелек ЮMoney, на сервере нужно настроить разбор поля
label. Например: label=XXyyyyyy, где ХХ — ID магазина, а уууууу — номер транзакции.HTTP-уведомления
Уведомление отправляется при получении перевода из кошелька или с банковской карты.
Формат уведомления
Уведомление отправляется как HTTP-запрос на адрес, указанный в настройках кошелька, в следующем формате:
- метод — POST;
- каждый параметр уведомления указывается в виде пары «ключ=значение» в виде параметра POST-запроса;
- MIME-тип — application/x-www-form-urlencoded;
- кодировка символов — UTF‑8.
Параметры уведомления
| Параметр | Тип | Описание |
|---|---|---|
notification_type | string | Для переводов из кошелька — p2p-incoming.Для переводов с произвольной карты — card-incoming. |
| operation_id | string | Идентификатор операции в истории вашего кошелька. |
| amount | amount | Сумма, которая зачислена на баланс вашего кошелька. |
| withdraw_amount | amount | Сумма, которую перевел отправитель и которую списали с баланса его кошелька или с карты. |
| currency | string | Код валюты — всегда 643 (рубль РФ согласно ISO 4217). |
| datetime | datetime | Дата и время совершения перевода. |
sender | string | Для переводов из кошелька — номер кошелька отправителя. Для переводов с произвольной карты — параметр содержит пустую строку. |
codepro | boolean | Признак того, что перевод защищен кодом протекции. В ЮMoney больше нельзя делать переводы с кодом протекции, поэтому параметр всегда имеет значение false. |
| label | string | Метка платежа. Если ее нет, параметр содержит пустую строку. |
unaccepted | boolean | Признак того, что кошелек достиг лимита доступного остатка, перевод захолдирован (заморожен) до тех пор, пока пользователь не освободит место в кошельке. В ЮMoney больше нельзя делать переводы с холдированием, поэтому параметр всегда имеет значение false. |
| sign | string | Подпись уведомления. Используется для проверки целостности и подлинности уведомлений. Подробнее о параметре sign и его использовании. |
sha1_hash | string | Параметр устарел. Перестанет приходить в уведомлениях с 18 мая 2026 года. Для проверки подлинности и целостности уведомлений используйте параметр sign.SHA-1 hash параметров уведомления. |
Примеры уведомлений
Пример тела уведомления о переводе из кошелька
{notification_type=p2p-incoming, operation_id=441361714955017004, amount=98.00, withdraw_amount=100.00, currency=643, datetime=2013-12-26T08:28:34Z, sender=41000000000, codepro=false, label=ML23045, unaccepted=false, sha1_hash=ac13833bd6ba9eff1fa9e4bed76f3d6ebb57f6c0, sign=a452af731650e2c5b39abcdc7c28dd27db7b3b654c2230ad2c386e64afb98605}
Прием уведомления
ЮMoney делают три попытки доставить уведомление: сразу при получении перевода, затем — через 10 минут, последняя — через час.
Если уведомления не приходят, проверьте настройки: правильно ли указан адрес вашего сервера и доступен ли сервер сейчас (используйте кнопку Протестировать). При этом запись о входящем переводе сохранится в истории кошелька (при отправке тестовых уведомлений запись в истории не сохраняется).
Уведомление считается принятым, если получатель ответил на запрос кодом HTTP 200 OK.
После получения уведомления проверьте его подлинность и целостность с помощью подписи. Подробнее о подписи уведомления
Удостоверение подлинности и целостности уведомления
Чтобы вы могли проверить подлинность и целостность полученного уведомления, в параметре
sign возвращается подпись уведомления. Это HMAC-SHA256 в HEX-представлении, который рассчитывается от URL-кодированной строки всех параметров уведомления, кроме sign. Параметры в строке отсортированы по алфавиту.Для вычисления подписи используется секретный ключ из ваших настроек HTTP-уведомлений. Он служит разделяемым секретом между ЮMoney и разработчиком приложения.
Храните секретный ключ в защищенном месте и не публикуйте на сторонних ресурсах (например, вместе с примерами кода).
Чтобы проверить подлинность и целостность уведомления, вычислите подпись по алгоритму, приведенному ниже, и сравниите ее со значением параметра
sign.Вычисление подписи уведомления
Шаг 1. Сформируйте строку для вычисления подписи:
- Извлеките параметры уведомления.
- Удалите параметр
sign— он не участвует в формировании подписи. - Отсортируйте оставшиеся параметры по алфавиту (A-Z).
- Примените URL-кодирование к значениям каждого параметра (в кодировке UTF-8, RFC 3986).
- Объедините параметры в строку формата
ключ=значение, разделяя их символом&. Пустые значения оставьте какkey=(без пробелов).
Пример параметров в уведомлении
{notification_type=p2p-incoming, operation_id=441361714955017004, amount=98.00, withdraw_amount=100.00, currency=643, datetime=2013-12-26T08:28:34Z, sender=41000000000, codepro=false, label=ML23045, unaccepted=false, sha1_hash=ac13833bd6ba9eff1fa9e4bed76f3d6ebb57f6c0, sign=a452af731650e2c5b39abcdc7c28dd27db7b3b654c2230ad2c386e64afb98605}
Пример подготовленной строки для вычисления подписи
amount=98.00&codepro=false¤cy=643&datetime=2013-12-26T08%3A28%3A34Z&label=ML23045¬ification_type=p2p-incoming&operation_id=441361714955017004&sender=41000000000&sha1_hash=ac13833bd6ba9eff1fa9e4bed76f3d6ebb57f6c0&unaccepted=false&withdraw_amount=100.00
Шаг 2. Вычислите HMAC-SHA256 от полученной строки, используя секретный ключ из настроек HTTP-уведомлений. Представьте результат в HEX (нижний регистр).
Пример подписи для строки из примера выше и ключа secret123
a452af731650e2c5b39abcdc7c28dd27db7b3b654c2230ad2c386e64afb98605
Шаг 3. Сравните результат со значением параметра
sign:- Если подписи совпадают — уведомление подлинное и не изменялось.
- Если подписи не совпадают — уведомление было изменено или отправлено с неверным секретом.
Готово!
Что почитать еще