Skip to content

ЮMoney (кошелёк)

Приём денег на личный кошелёк ЮMoney через quickpay-форму — без юрлица и мерчант-договора. Юзер платит банковской картой или со своего кошелька ЮMoney, деньги падают на ваш кошелёк. Валюта — RUB.

Создание платежа не делает ни одного API-вызова: шлюз просто собирает подписанную ссылку на форму yoomoney.ru/quickpay/confirm и редиректит юзера. Подтверждение приходит HTTP-уведомлением с sha1-хэшем.

Что понадобится

Кошелёк ЮMoney. Из его настроек:

  • номер кошелька (получатель платежей);
  • секрет для HTTP-уведомлений — выдаётся в разделе HTTP-уведомлений настроек кошелька, там же, где указывается URL.

Настройка в кабинете

ПолеЧто этоОбязательное
walletНомер кошелька-получателяДа
notification_secretСекрет HTTP-уведомлений из настроек кошелька (шифруется Fernet при сохранении)Да

Включение — переключатель активности в карточке «ЮMoney (кошелёк)». Кнопка «Тест» проверяет только заполненность полей: проверочного API у ЮMoney нет, ключи сверятся первым живым платежом.

Вебхук

URL: https://ваш-домен/api/v1/payments/yoomoney — укажите его в настройках кошелька как адрес HTTP-уведомлений.

Уведомление приходит form-encoded. Подлинность проверяется sha1-хэшем по девяти полям уведомления (notification_type, operation_id, amount, currency, datetime, sender, codepro, секрет, label) — сравнение constant-time, при несовпадении 403. Внутренний payment_id едет в поле label.

Защищённые и непринятые переводы (codepro=true / unaccepted=true) не зачисляются — деньги ещё не ваши, транзакция остаётся в ожидании.

Особенности

  • Сумма приходит за вычетом комиссии, и вдобавок quickpay-форма позволяет юзеру руками поменять сумму. Поэтому пайплайн сверяет полученное с ценой счёта: всё, что меньше 90% (UNDERPAYMENT_TOLERANCE = 0.90), считается подменой/недоплатой и помечается FAILED. Комиссия ЮMoney (до ~3%) в допуск укладывается.
  • Ссылка формируется с paymentType=AC — оплата банковской картой (SB — списание с баланса ЮMoney).
  • Возвратов по API и рекуррентов нет: возврат из кабинета фиксируется только записью, деньги возвращаете вручную.
  • Поллинга статуса нет — подтверждение приходит только HTTP-уведомлением. Если уведомления не доходят, первым делом проверьте URL и секрет в настройках кошелька.

Платёж не пришёл?

Как устроен пайплайн подтверждения и реконсилятор зависших платежей (запускается каждые 5 минут) — см. /payments/webhooks. Учтите: у ЮMoney нет API-поллинга, так что для этого шлюза критично, чтобы HTTP-уведомления реально доходили.

MIT License · сделано для тех, кто продаёт VPN, а не настраивает ботов