Уведомления
Самый простой способ получать информацию о переводах — подключить уведомления по электронной почте в настройках кошелька ЮMoney. Сообщения будут приходить на адрес, привязанный к кошельку.
Если вы хотите мгновенно узнавать о поступлении денег и сразу идентифицировать каждый перевод, включите HTTP-уведомления. Сервис будет передавать данные о сумме и значении поля
label
.
HTTP-уведомления можно получать только на один адрес сервера. Если у вас несколько сайтов и разные формы, с помощью которых вы собираете переводы на один кошелек ЮMoney, на сервере нужно настроить разбор поля
label
. Например:
label=XXyyyyyy
, где
ХХ
 — ID магазина, а 
уууууу
 — номер транзакции.
HTTP-уведомления
Уведомление отправляется при получении перевода из кошелька или с банковской карты.
Формат запроса
Уведомление отправляется как HTTP-запрос на адрес, указанный в настройках кошелька, в следующем формате:
  • метод — POST;
  • каждый параметр уведомления указывается в виде пары «ключ=значение» в виде параметра POST-запроса;
  • MIME-тип — application/x-www-form-urlencoded;
  • кодировка символов — UTF‑8.
Прием уведомления
ЮMoney делают три попытки доставить уведомление: сразу при получении перевода, затем — через 10 минут, последняя — через час.
Если уведомления не приходят, проверьте настройки: правильно ли указан адрес вашего сервера и доступен ли сервер сейчас (используйте кнопку Протестировать). При этом запись о входящем переводе сохранится в истории кошелька (при отправке тестовых уведомлений запись в истории не сохраняется).
Параметры уведомления
ПараметрТипОписание
notification_typestringДля переводов из кошелька —
p2p-incoming
. Для переводов с произвольной карты —
card-incoming
.
operation_idstringИдентификатор операции в истории вашего кошелька.
amountamountСумма, которая зачислена на баланс вашего кошелька.
withdraw_amountamountСумма, которую перевел отправитель и которую списали с баланса его кошелька или с карты.
currencystringКод валюты — всегда
643
(рубль РФ согласно ISO 4217).
datetimedatetimeДата и время совершения перевода.
senderstringДля переводов из кошелька — номер кошелька отправителя. Для переводов с произвольной карты — параметр содержит пустую строку.
codeprobooleanПризнак того, что перевод защищен кодом протекции. В ЮMoney больше нельзя делать переводы с кодом протекции, поэтому параметр всегда имеет значение
false
.
labelstringМетка платежа. Если ее нет, параметр содержит пустую строку.
sha1_hashstringSHA-1 hash параметров уведомления.
unacceptedbooleanПеревод еще не зачислен. Получателю нужно освободить место в кошельке.
Формат ответа
Уведомление считается принятым, если получатель ответил на запрос кодом HTTP 200 OK.
Удостоверение подлинности и целостности уведомления
Один из параметров уведомления,
sha1_hash
, содержит значение хэш-функции SHA-1 от свертки параметров уведомления совместно с секретным словом.
Секретное слово для проверки уведомлений используется как разделяемый секрет между ЮMoney и разработчиком приложения. Благодаря этому подделать уведомление невозможно. Секретное слово можно получить в настройках HTTP-уведомлений для вашего кошелька.
Всегда проверяйте значение параметра
sha1_hash
. Это нужно, чтобы удостовериться:
  • в целостности данных уведомления;
  • в том, что уведомление отправили ЮMoney.
Чтобы проверить целостность и подлинность уведомления, рассчитайте хэш по алгоритму, приведенному ниже. Сравните полученные данные со значением параметра
sha1_hash
в уведомлении.
Расчет хэша
Шаг 1. Сформируйте строку из параметров уведомления в кодировке UTF‑8 (где
notification_secret
 — это секретное слово для проверки уведомлений).
Формат строки
notification_type&operation_id&amount&currency&datetime&sender&codepro&notification_secret&label
Пример строки параметров
p2p-incoming&1234567&300.00&643&2011-07-01T09:00:00.000+04:00&41001XXXXXXXX&false&01234567890ABCDEF01234567890&
Пример строки параметров с меткой платежа
p2p-incoming&1234567&300.00&643&2011-07-01T09:00:00.000+04:00&41001XXXXXXXX&false&01234567890ABCDEF01234567890&YM.label.12345
Шаг 2. Вычислите значение хэш-функции SHA-1 от полученной строки.
Шаг 3. Отформатируйте полученный результат в HEX-кодированном виде.
Пример рассчитанного значения параметра
sha1_hash
:
090a8e7ebb6982a7ad76f4c0f0fa5665d741aafa
Примеры уведомлений
Уведомление о переводе с карты
operation_id = 441361714955017004
notification_type = card-incoming
datetime = 2013-12-26T08:28:34Z
sha1_hash = ac13833bd6ba9eff1fa9e4bed76f3d6ebb57f6c0
sender =
codepro = false
currency = 643
amount = 98.00
withdraw_amount = 100.00
label = ML23045
Что почитать еще
Настройки HTTP-уведомленийУведомление по электронной почте и смс