Уведомления

Самый простой способ получать информацию о переводах — подключить уведомления по электронной почте в настройках кошелька на Яндексе. Сообщения будут приходить на адрес, привязанный к кошельку.

Если вы хотите мгновенно узнавать о поступлении денег и сразу идентифицировать каждый перевод, включите HTTP-уведомления. Сервис будет передавать данные о сумме, значении поля label, а также контактные данные отправителя (контактные данные отправителя передаются только по HTTPS-соединению.)

Note.

HTTP-уведомления можно получать только на один адрес сервера. Если у вас несколько сайтов и разные формы, с помощью которых вы собираете переводы на один кошелек в Яндекс.Деньгах, на сервере нужно настроить разбор поля label. Например: label=XXyyyyyy, где ХХ — ID магазина, а уууууу — номер транзакции.

HTTP-уведомления

Уведомление отправляется при получении перевода из кошелька или с банковской карты.

Уведомление не отправляется при пополнении с баланса мобильного.

Формат запроса

Уведомление отправляется как HTTP-запрос на адрес, указанный в настройках кошелька, в следующем формате:

  • метод — POST;

  • каждый параметр уведомления указывается в виде пары «ключ=значение» в виде параметра POST-запроса;

  • MIME-тип — application/x-www-form-urlencoded;

  • кодировка символов — UTF-8.

Прием уведомления

Яндекс.Деньги делают три попытки доставить уведомление: сразу при получении перевода, затем — через 10 минут, последняя — через час.

Для приема уведомлений рекомендуется использовать протокол HTTPS (получение контактной информации об отправителе в уведомлениях возможно только по этому протоколу; по HTTP контакты не передаются).

Если уведомления не приходят, проверьте настройки: правильно ли указан адрес вашего сервера и доступен ли сервер сейчас (используйте кнопку Протестировать). При этом запись о входящем переводе сохранится в истории кошелька (при отправке тестовых уведомлений запись в истории не сохраняется).

Параметры уведомления

Параметр Тип Описание
Передаются по HTTP
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 Для переводов из кошелька — перевод защищен кодом протекции. Для переводов с произвольной карты — всегда false.
label string Метка платежа. Если ее нет, параметр содержит пустую строку.
sha1_hash string SHA-1 hash параметров уведомления.
unaccepted boolean Перевод еще не зачислен. Получателю нужно освободить место в кошельке или использовать код протекции (если codepro=true).
Передаются только по HTTPS

ФИО и контакты отправителя перевода (указывает отправитель, если не запрашивались, параметры содержат пустую строку)

lastname string Имя.
firstname string Фамилия.
fathersname string Отчество.
email string Адрес электронной почты отправителя перевода. Если email не запрашивался, параметр содержит пустую строку.
phone string Телефон отправителя перевода. Если телефон не запрашивался, параметр содержит пустую строку.

Адрес доставки (указывает отправитель, если адрес не запрашивался, параметры содержат пустую строку)

city string Город.
street string Улица.
building string Дом.
suite string Корпус.
flat string Квартира.
zip string Индекс.

Формат ответа

Уведомление считается принятым, если получатель ответил на запрос кодом HTTP 200 OK.

Удостоверение подлинности и целостности уведомления

Один из параметров уведомления, sha1_hash, содержит значение хэш-функции SHA-1 от свертки параметров уведомления совместно с секретным словом.

Note.

Секретное слово для проверки уведомлений используется как разделяемый секрет между Яндекс.Деньгами и разработчиком приложения. Благодаря этому подделать уведомление невозможно. Секретное слово можно получить в настройках HTTP-уведомлений для вашего кошелька.

Всегда проверяйте значение параметра sha1_hash. Это нужно, чтобы удостовериться:

  • в целостности данных уведомления;

  • в том, что уведомление отправлено Яндекс.Деньгами.

Чтобы проверить целостность и подлинность уведомления, рассчитайте хэш по алгоритму, приведенному ниже. Сравните полученные данные со значением параметра 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

Примеры уведомлений

Уведомление о переводе с карты с запросом ФИО и адреса отправителя (по HTTPS):

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
lastname = Иванов
firstname = Петр
fathersname = Сидорович
zip = 195123
city = Санкт-Петербург
street = Денежная
building = 12
suite = 12
flat = 12
phone =
email =

Пример того же уведомления по HTTP:

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