ЮMoney (экс-Яндекс.Деньги)

Входящие переводы#

Этот подпоток запускает прослушивание уведомлений от ЮMoney о входящих переводах на кошелек.

При получении уведомления он проверяет его подлинность, и вызывает исполнение подключенных к нему узлов, передавая им сообщение с данными ЮMoney-перевода в msg.yoomEvent.

Подпоток получения уведомлений от ЮMoney

JSON-код подпотока для копирования#

[
{
"id": "9f3b9ed9.32299",
"type": "subflow",
"name": "Вх. перевод ЮMoney",
"info": "",
"category": "",
"in": [],
"out": [
{
"x": 680,
"y": 340,
"wires": [
{
"id": "cefafa22.d6bce8",
"port": 0
}
]
}
],
"env": [
{
"name": "URL",
"type": "str",
"value": "/yoomoney-clbck",
"ui": {
"label": {
"en-US": "URL"
},
"type": "input",
"opts": {
"types": [
"str"
]
}
}
},
{
"name": "SECRET",
"type": "str",
"value": "",
"ui": {
"label": {
"en-US": "Secret",
"ru": "Секрет"
}
}
}
],
"color": "#D8BFD8",
"icon": "font-awesome/fa-dollar"
},
{
"id": "cefafa22.d6bce8",
"type": "function",
"z": "9f3b9ed9.32299",
"name": "Проверка подлинности",
"func": "const crypto = global.get(\"require\")(\"crypto\");\nvar secret = env.get(\"SECRET\");\n\nconst params = [\"notification_type\", \"operation_id\", \"amount\", \"currency\", \"datetime\", \"sender\", \"codepro\", \"notification_secret\", \"label\"];\nconst paramVals = [];\nfor (let i=0; i<params.length; i++) {\n const param = params[i];\n if (param === \"notification_secret\") {\n paramVals.push(secret);\n } else {\n paramVals.push(msg.payload[param]);\n }\n}\nconst paramsStr = paramVals.join(\"&\");\n\nconst hash = crypto.createHash('sha1').update(paramsStr).digest(\"hex\");\n\nif (msg.payload.sha1_hash !== hash) {\n node.error(\"Неверный хэш!\", msg);\n} else {\n msg.yoomEvent = msg.payload;\n delete msg.payload;\n return msg; \n}",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"x": 470,
"y": 340,
"wires": [
[]
]
},
{
"id": "b122747e.e510a8",
"type": "http in",
"z": "9f3b9ed9.32299",
"name": "",
"url": "${URL}",
"method": "post",
"upload": false,
"swaggerDoc": "",
"x": 210,
"y": 340,
"wires": [
[
"cefafa22.d6bce8",
"40e75a7f.3ef064"
]
]
},
{
"id": "40e75a7f.3ef064",
"type": "http response",
"z": "9f3b9ed9.32299",
"name": "",
"statusCode": "",
"headers": {
"content-type": "application/json"
},
"x": 410,
"y": 220,
"wires": []
},
{
"id": "5a54b357.c9768c",
"type": "subflow:9f3b9ed9.32299",
"z": "aaa3dbf9.6e74a8",
"name": "",
"env": [
{
"name": "SECRET",
"type": "cred"
},
{
"name": "secret",
"type": "cred"
}
],
"x": 600,
"y": 440,
"wires": [
[]
]
}
]

Настройка узла#

  1. Импортируйте подпоток и вставьте узел туда, где вы будете с ним работать
  2. Дважды кликните по узлу, чтобы открыть его настройки
  3. В другой вкладке браузера откройте настройки HTTP-уведомлений кошелька ЮMoney. Для этого:
    1. Откройте страницу настройки кошелька: https://yoomoney.ru/settings?w=other
    2. Внизу в секции Сбор денег > Уведомления по HTTP нажмите Подключить
  4. В поле Куда отправлять (URL сайта) введите https://ВАШДОМЕН/yoomoney-clbck (заменив ВАШДОМЕН на домен вашего Ботодрома). При необходимости, например, если вам нужно получать уведомления с разных кошельков на один Ботодром, измените путь /yoomoney-clbck на какой-то другой, чтобы можно было отличать кошельки, с которых идут оповещения
  5. Нажмите Показать секрет и скопируйте появившийся секрет
  6. Включите флажок Отправлять HTTP-уведомления
  7. Нажмите Готово
  8. Вернитесь в настройки узла в Ботодроме
  9. Вставьте скопированный секрет в поле Секрет
  10. Если вы изменили путь /yoomoney-clbck на какой-то другой, когда вводили URL сайта в настройках кошелька, тогда измените его на такой же в поле URL
  11. Нажмите Готово и Развернуть

Готово! Узел запущен и слушает уведомления от ЮMoney о входящих переводах на кошелек. Теперь подключите к нему Debug узел с включенной опцией Выводить весь msg объект сообщения, затем снова откройте настройки HTTP-уведомления в ЮMoney и нажмите Протестировать, чтобы получить тестовое уведомление и убедиться, что узел работает.

Данные уведомления#

Полученные от ЮMoney данные уведомления передаются подключенным узлам в msg.yoomEvent.

Список всех передаваемых параметров перевода с описаниями смотрите в разделе Параметры уведомления на сайте ЮMoney: https://yoomoney.ru/docs/wallet/using-api/notification-p2p-incoming