Гайд [Node.JS] Работа с API YooMoney.
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно.
Вам необходимо обновить браузер или попробовать использовать другой.
_raz0r
безальтернатива
Автор темы
Друг
Привет ✋. Прошлый гайд был про QIWI Wallet, пришло время разбираться с API YooMoney (Яндекс.Деньги в прошлом).
В данном случае у нас уже не будет готовых библиотек для работы с API, делать мы будем все сами, опираясь на документацию.
Что нам нужно?
1) Node.JS (у меня v14.16.1, но самая свежая 14.17.3)
2) Библиотека Needle
Наша задача:
1) Зарегистрировать приложение.
2) Получить временный токен от приложения.
3) Получить вечный токен, он и будет нам нужен для обращения к методам.
Регистрация приложения.
Чтобы получить токен, нам нужно создать приложение.
Переходим: https://yoomoney.ru/myservices/new
Заполняем все поля (логотип и галочку с client_secret можно оставить пустыми).
Если у вас нету своего сайта, в Redirect URI можно к примеру вставить ссылку на свой Telegram. Временный токен мы все равно сможем получить.
Далее подтверждаем действие через телефон и наше приложение создалось!
Теперь нам нужен «Идентификатор приложения» (это можно сказать access_token нашего приложения).
Переходим теперь к коду:
JavaScript:
const needle = require("needle") // Подключаем Needle для запросов. const clientId = "your_client_id" // Создаем константу с нашим client_id.
Получение временного и постоянного токена пользователя.
Чтобы получить постоянный токен для начала нужно получить временный токен, без него мы не сможем получить постоянный.
Для этого в API существует метод (/oauth/authorize). Параметрами которого являются:
client_id — идентификатор нашего приложения.
response_type — который постоянно равен значению «code»
redirect_uri — страница на которую будет совершен редирект и результат авторизации.
scope — запрашиваемые права доступа. (Все права доступа). Мы будем использовать только «account-info».
Теперь нужно обратиться к этому методу:
JavaScript:
const scopes = [ "account-info" ] const postDataAuthorize = < client_id: clientId, response_type: "code", redirect_uri: "https://memz.fun", scope: scopes >needle.post('https://yoomoney.ru/oauth/authorize', postDataAuthorize, headers: < 'Content-Type': 'application/x-www-form-urlencoded' >, (err, resp) => < console.log(resp.body) // выводим ответ. >)
Выполняем код и получаем вот такой ответ:
Нам нужно перейти по этой ссылке из браузера (делать нужно все быстро, потому что ссылка живет 1 минуту).
Снова подтверждаем действие через телефон, в случае успеха нас перебросит на ссылку которую мы указали в параметре redirect_uri.
Смотрим в адресную строку и находим вот это:
Копируем все, что находится после «code». Это и есть наш временный токен.
Теперь получим наконец-то постоянный токен. Для этого существует метод /oauth/token.
Параметры:
code — временный токен.
client_id — идентификатор приложения.
grant_type — постоянно равен значению «authorization_code».
redirect_uri — ссылка на которую будет редирект (можно пустым поле оставить).
JavaScript:
const postDataToken = < code: "your_token", client_id: clientId, grant_type: "authorization_code", redirect_uri: " " >needle.post(`https://yoomoney.ru/oauth/token`, postDataToken, headers: < 'Content-Type': 'application/x-www-form-urlencoded' >, (err, resp) => < console.log(resp.body) >)
В случае успеха, мы получаем вот такой ответ:
Это и есть наш токен, который теперь можно использовать всегда.
Получение баланса аккаунта.
Тут все просто, токен указывается в «headers» в поле ‘Authorization’.
JavaScript:
const authHeader = < headers: < 'Content-Type': 'application/x-www-form-urlencoded', 'Authorization': 'Bearer ' + accessToken >> needle.post(`https://yoomoney.ru/api/account-info`, <>, authHeader, (err, resp) => < console.log(resp.body) >)
Подключение способа оплаты ЮMoney для физ. лиц
Укажите название и описание способа оплаты (1), установите галочку «Использовать модуль электронных платежей» и выберите в списке «ЮMoney для физ.лиц» (2). Нажмите на ссылку «Настройки модуля» (3):
В настройках нового метода оплаты (пункт «Настройки модуля») кликните на кнопку «Получить токен ЮMoney»
Подтвердите права в вашем аккаунте Яндекс. В случае, если всё сделано верно, вы увидите сообщение о том, что токен успешно получен и будет отображен в форме настроек платежного метода через несколько секунд;
Номер кошелька в ЮMoney – кошелек, на который будут зачисляться деньги отправителей.
Секрет — параметр из указанного кошелька. Получить значение можно по данной инструкции:
Курс у.е. магазина к валюте кошелька — курс, по которому будет пересчитываться итоговая сумма заказа
Комиссия платежной системы (у.е. магазина) — необязательный параметр, указывается, когда в итоговую стоимость заказа необходимо добавить наценку, изымаемую с магазина платежной системой;
Тип формы — позволяет задать тип оплат в зависимости от целей. «Универсальная форма» — для магазинов «Благотворительная форма» — для благотворительных сборов и пожертвований
Строка «Назначение платежа» — можно использовать метку $INVOICE_ID$ — она автоматически будет заменена на номер оплачиваемого заказа.
«Запрашивать ФИО покупателя», «Запрашивать e-mail покупателя», «Запрашивать телефон покупателя», «Запрашивать адрес покупателя» — необязательные параметры, необходимо активировать только если они действительно необходимы (чтобы отправителю не пришлось заполнять лишние поля). Данные поля будут запрошены на стороне Яндекса.
Важно! Чтобы в ваш магазин корректно в управлении заказами передавались статусы по факту оплаты заказа, вам нужно в настройках в рамках сайта Юмани отметить пункт Отправлять HTTP уведомления.
В рамках способа оплаты у вас на сайте этот пункт активируется автоматически после получения токена, но на сайте Юмани нужно активировать вручную.
Как получить токен yoomoney?


- JavaScript
- +3 ещё
Как правильно на JS получить обьект успешного платежа от YooKassa?
- 3 подписчика
- 20 мар.
- 389 просмотров
Юмани перестал запрашивать у отправителя денег емайл?
- 1 подписчик
- 22 февр.
- 62 просмотра

- Flask
- +1 ещё
Как использовать aiogram + flask (or only aiogram) для обработок платежей в боте телеграм?
- 1 подписчик
- 14 февр.
- 1061 просмотр

- Node.js
- +2 ещё
Не находит платеж yoomoney?
- 1 подписчик
- 01 февр.
- 68 просмотров

- Python
- +1 ещё
Проблема с Yoomoney и Python, как решить?
- 1 подписчик
- 24 янв.
- 142 просмотра
Как сделать POST запрос имея такую инфу(см. ниже)?
- 1 подписчик
- 12 янв.
- 40 просмотров

- API
- +1 ещё
Почему Yoomoney API возвращает money_source_not_available?
- 1 подписчик
- 24 дек. 2022
- 88 просмотров

- Python
- +1 ещё
Как получить постоянный токен в юмани?
- 1 подписчик
- 11 дек. 2022
- 137 просмотров
Узнать информацию о продавце после оплаты на юмани?
- 1 подписчик
- более года назад
- 63 просмотра
LT-Consult • Новосибирск
от 80 000 до 130 000 ₽
от 20 000 до 70 000 ₽
от 70 000 до 110 000 ₽
16 нояб. 2023, в 00:00
150000 руб./за проект
15 нояб. 2023, в 23:57
13000 руб./за проект
15 нояб. 2023, в 23:55
40000 руб./за проект
Минуточку внимания
Присоединяйтесь к сообществу, чтобы узнавать новое и делиться знаниями
- Svelte минимальный размер сайта?
- 2 подписчика
- 1 ответ
- 3 подписчика
- 1 ответ
- 2 подписчика
- 3 ответа
- 3 подписчика
- 1 ответ
- 2 подписчика
- 3 ответа
- 2 подписчика
- 1 ответ
- 2 подписчика
- 1 ответ
- 2 подписчика
- 2 ответа
- 2 подписчика
- 0 ответов
- 2 подписчика
- 0 ответов
Пытаюсь получить токен для юмани, попробовал через ноду, выводит ошибку Uncaught SyntaxError: missing ) after argument list (at auth.html:17:71)
Uncaught SyntaxError: missing ) after argument list (at auth.html:17:71) Ошибка, собственно в это строке :
needle.post('https://yoomoney.ru/oauth/authorize', postDataAuthorize, headers: < 'Content-Type': 'application/x-www-form-urlencoded' >, (err, resp) => < console.log(resp.body) // выводим ответ. >)Отслеживать
задан 26 июн в 8:33
17 5 5 бронзовых знаков
26 июн в 8:47
0
Сортировка: Сброс на вариант по умолчанию
Знаете кого-то, кто может ответить? Поделитесь ссылкой на этот вопрос по почте, через Твиттер или Facebook.
- node.js
- яндекс-касса