Уведомление о входящем переводе

Уведомление отправляется, если:

Внимание. При получении уведомления всегда проверяйте статус входящего перевода по значениям полей unaccepted и codepro.
  • Если unaccepted=true, то перевод еще не зачислен на счет получателя. Чтобы его принять, получателю нужно совершить дополнительные действия. Например, освободить место на счете, если достигнут лимит доступного остатка. Или указать код протекции, если он необходим для получения перевода.
  • Если codepro=true, то перевод защищен кодом протекции. Чтобы получить такой перевод, пользователю необходимо ввести код протекции.

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

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

  • метод — POST;
  • каждый параметр уведомления указывается парой ключ/значение в виде параметра POST-запроса;
  • MIME-тип — application/x-www-form-urlencoded;
  • кодировка символов — UTF-8.

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

Для приема уведомлений рекомендуется использовать протокол HTTPS. Обратите внимание, что получение контактной информации об отправителе в уведомлениях возможно только при использовании этого протокола. При использовании протокола HTTP контактные данные в уведомлении передаваться не будут.

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

Совет.

Для приема уведомлений рекомендуется использовать протокол HTTPS. Обратите внимание, что получение контактной информации об отправителе в уведомлениях возможно только при использовании этого протокола. При использовании протокола HTTP контактные данные в уведомлении передаваться не будут.

Параметры уведомления
HTTPSПараметрТипОписание

нет

notification_typestring

Для переводов из кошелька - p2p-incoming

Для переводов с произвольной карты - card-incoming.

operation_idstringИдентификатор операции в истории счета получателя.
amountamountСумма операции.
withdraw_amountamountСумма, которая списана со счета отправителя.
currencystring

Код валюты счета пользователя. Всегда 643 (рубль РФ согласно ISO 4217).

datetimedatetimeДата и время совершения перевода.
senderstring

Для переводов из кошелька - номер счета отправителя.

Для переводов с произвольной карты - параметр содержит пустую строку.

codeproboolean

Для переводов из кошелька — перевод защищен кодом протекции.

Для переводов с произвольной карты — всегда false.

labelstringМетка платежа. Если метки у платежа нет, параметр содержит пустую строку.
sha1_hashstringSHA-1 hash параметров уведомления.
test_notificationbooleanФлаг означает, что уведомление тестовое. По умолчанию параметр отсутствует.
unacceptedbooleanФлаг означает, что пользователь не получил перевод. Возможные причины:
  • Перевод заморожен, так как на счете получателя достигнут лимит доступного остатка. Отображается в поле hold ответа метода account-info.
  • Перевод защищен кодом протекции. В этом случае codepro=true.

да

lastname

firstname

fathersname

string

string

string

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

city

street

building

suite

flat

zip

string

string

string

string

string

string

Адрес, указанный отправителем перевода для доставки. Если адрес не запрашивался, параметры содержат пустую строку.

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

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

Совет.

Чтобы получить остальные параметры платежа, включая «Комментарий к платежу», сделайте вызов operation-details и укажите параметр operation_id, который вы получили в уведомлении.

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

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

Примечание.

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

Всегда проверяйте значение параметра 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 для последнего примера:

    a2ee4a9195f4a90e893cff4f62eeba0b662321f9

Примеры параметров

Уведомление о переводе с карты с запросом ФИО, адреса отправителя, телефона, электронного адреса и передачей скрытого поля label по протоколу HTTPS:

operation_id = 904035776918098009
notification_type = p2p-incoming
datetime = 2014-04-28T16:31:28Z
sha1_hash = 8693ddf402fe5dcc4c4744d466cabada2628148c
sender = 41003188981230
codepro = false
currency = 643
amount = 0.99
withdraw_amount = 1.00
label = YM.label.12345
lastname = Иванов
firstname = Иван
fathersname = Иванович
zip = 125075
city = Москва
street = Тверская
building = 12
suite = 10
flat = 10
phone = +79253332211
email = adress@yandex.ru

Пример того же уведомления при использовании протокола HTTP:

operation_id = 904035776918098009
notification_type = p2p-incoming
datetime = 2014-04-28T16:31:28Z
sha1_hash = 8693ddf402fe5dcc4c4744d466cabada2628148c
sender = 41003188981230
codepro = false
currency = 643
amount = 0.99
withdraw_amount = 1.00
label = YM.label.12345