Права на выполнение операций
При вызове операций протокола необходимо передавать токен авторизации, который обладает соответствующими правами. Список прав запрашивается как значение параметра
scope
вызова authorize OAuth2-авторизации приложения пользователем, права перечисляются через пробел.
 
Список возможных прав
Название праваОписание
account-infoПолучение информации о состоянии счета, см. метод account-info.
operation-historyПросмотр истории операций, см. метод operation-history.
operation-detailsПросмотр деталей операции, см. метод operation-details.
incoming-transfersПрием/отмена входящих переводов с кодом протекции и до востребования.
paymentВозможность осуществлять платежи в конкретный магазин или переводить деньги на конкретный счет пользователя, см. методы request-payment и process-payment.
payment-shopВозможность осуществлять платежи во все доступные для API магазины, см. методы request-payment и process-payment.
payment-p2pВозможность переводить деньги на любые счета, номера телефонов, email-адреса других пользователей, см. методы request-payment и process-payment
money-sourceДоступные методы проведения платежа, см. методы request-payment и process-payment. Подробнее см. Право money-source.
В рамках scope нельзя одновременно использовать:
  • право
    payment-p2p
    и права
    payment.to-account
  • право
    payment-shop
    и права
    payment.to-pattern
Некоторые права требуют указания строковых значений, которые могут содержать символы, нарушающие синтаксис
scope
. Для таких символов следует применять backslash escaping согласно формату JSON. Например:
\"
\\
 
Ограничения, применяемые к правам
К выдаваемым правам могут применяться ограничения. Ограничения задаются следующим образом:
имя_права.destination.limit
Ограничения, накладываемые на права:
  • destination — получатель платежа;
  • limit — лимит платежа.
 
Условие destination (получатель платежа)
Применяется к правам:
payment
.
В качестве значения допустимо указывать только одно из следующих условий:
  • to-pattern (patternId)
     — ограничивает возможность провести платеж только по заданному
    patternId
    .
  • to-account (to)
     — ограничивает возможность перевода средств только на кошелке определенного пользователя. В качестве идентификатора получателя (
    to
    ) допустимо указывать номер кошелька, номер привязанного к кошельку получателя мобильного телефона или email-адрес пользователя.
Пример для определения получателя перевода по номеру кошелька
.to-account("41001XXXXXXXX")
В качестве идентификатора получателя платежа можно вместо номера кошелька использовать номер привязанного к кошельку мобильного телефона (если он есть у получателя). Указанный номер телефона должен соответствовать формату ITU-T E.164 Numbering plan of the international telephone service
Для России — полный номер, начинающийся с 
7
без знака '+'. Например:
79219990099
Пример для определения получателя перевода по номеру привязанного мобильного телефона
.to-account("79219990099")
Возможные варианты формата email-адреса описаны в Википедии. Помните, что в email-адресе могут быть символы, нарушающие синтаксис
scope
, например двойная кавычка.
Для таких символов следует применять backslash escaping согласно формату JSON. Например:
\"
\\
Пример определения получателя перевода по email
.to-account("username@example.ru")
 
Условие limit (лимит платежа)
limit(duration,sum)
Применяется к правам:
payment
,
payment-shop
,
payment-p2p
.
Ограничение указывается последним.
Формат:
  • limit(duration,sum)
     — ограничение общей суммы платежей за период времени;
  • limit(,sum)
     — делегирование права выполнить одноразовый платеж на фиксированную сумму.
Параметры
ПараметрЗначение
durationПериод времени, в сутках. Если параметр отсутствует, то платеж по данному разрешению может быть проведен только один раз.
sumОбщая сумма платежей за период
duration
в валюте счета пользователя.
Условие
limit
можно использовать для делегирования одноразовых платежей. Срок жизни разрешения равен сроку жизни токена. Пользователь не может изменить сумму платежа.
Ограничения:
  • В рамках одного
    scope
    разрешается указывать либо только платежи за период, либо только одноразовые платежи.
  • Если в 
    scope
    указано требование одноразового платежа, то, совместно с правом payment, допускается указывать только права
    money-source
    и 
    account-info
    , остальные права запрещены.
  • Вне зависимости от значений запрошенных лимитов, к платежам могут применяться ограничения, установленные сервисом ЮMoney для различных видов транзакций.
Пример: ограничение платежа 100 рублей 50 коп. в сутки, пользователь может изменять сумму
.limit(1,100.50)
Пример: одноразовый платеж на 1000 рублей, пользователь не может изменить сумму
.limit(,1000)
Значение по умолчанию:
limit(1,3000)
 — 3000 рублей в сутки, пользователь может изменять сумму.
 
Право money-source
Указание сервису ЮMoney, какие методы платежа поддерживаются приложением.
Формат
money-source(список_методов_платежа)
Запрашиваемый метод проведения платежа:
  • wallet
     — платежи из кошелька ЮMoney;
  • card
     — с привязанной к кошельку банковской карты пользователя.
По умолчанию:
wallet
.
Использование банковской карты невозможно для перевода средств на кошельки других пользователей.
Пример для платежа с привязанной банковской карты и из кошелька
money-source("wallet","card")
Пример для платежа только с привязанной банковской карты
money-source("card")
Пример для платежа только из кошелька
money-source("wallet")
 
Примеры значений параметра scope
Разрешен просмотр истории платежей
account-info operation-history operation-details
Разрешен просмотр остатка в кошельке и платежи в магазин 123 на сумму не более 1000 рублей в неделю
account-info payment.to-pattern("123").limit(7,1000)
Разрешены переводы на кошелек XXXX, но не более 500 рублей в две недели
payment.to-account("XXXX").limit(14,500)
Разрешен одноразовый перевод на кошелек, к которому привязан телефон ZZZ, на сумму 500 рублей
payment.to-account("ZZZ","phone").limit(,500)
Разрешены платежи с привязанной банковской карты в магазин 123 на сумму 1000 рублей в неделю
payment.to-pattern("123").limit(7,1000) money-source("wallet","card")