API Яндекс.Денег Руководство разработчика 15.11.2012

Страница создана Артём Жуков
 
ПРОДОЛЖИТЬ ЧТЕНИЕ
API Яндекс.Денег
Руководство разработчика

15.11.2012
API Яндекс.Денег. Руководство разработчика. Версия 1.5
Дата сборки документа: 15.11.2012.
Этот документ является составной частью технической документации Яндекса.
Сайт справки к сервисам Яндекса: http://help.yandex.ru
© 2008—2012 ООО «ЯНДЕКС». Все права защищены.

Предупреждение об исключительных правах
Яндексу (а также указанному им правообладателю) принадлежат исключительные права на все результаты интеллектуальной деятельности и приравненные к ним
средства индивидуализации, используемые при разработке, поддержке и эксплуатации сервиса API Яндекс.Денег. К таким результатам могут относиться, но не
ограничиваясь указанными, программы для ЭВМ, базы данных, изображения, тексты, другие произведения, а также изобретения, полезные модели, товарные знаки,
знаки обслуживания, коммерческие обозначения и фирменные наименования. Эти права охраняются в соответствии с Гражданским кодексом РФ и международным
правом.
Вы можете использовать сервис API Яндекс.Денег или его составные части только в рамках полномочий, предоставленных вам Пользовательским соглашением
сервиса API Яндекс.Денег или специального соглашения.
Нарушение требований по защите исключительных прав правообладателя влечет за собой дисциплинарную, гражданско-правовую, административную
или уголовную ответственность в соответствии с российским законодательством.

Контактная информация
ООО «ЯНДЕКС»
http://www.yandex.ru
Тел.: +7 495 739 7000
Email: pr@yandex-team.ru
Главный офис: 119021, Россия, г. Москва, ул. Льва Толстого, д. 16
Содержание
Введение ............................................................................................................................................................................................. 4
Авторизация приложения .............................................................................................................................................................. 5
   Регистрация приложения .......................................................................................................................................................... 6
   Запрос авторизации .................................................................................................................................................................... 7
   Получение токена .................................................................................................................................................................... 10
   Отзыв токена ............................................................................................................................................................................ 12
Описание протокола ...................................................................................................................................................................... 13
   Формат запроса ........................................................................................................................................................................ 13
   Формат ответа .......................................................................................................................................................................... 14
   Права на выполнение операций .............................................................................................................................................. 15
   Типы данных протокола .......................................................................................................................................................... 20
Получение информации о счете пользователя ........................................................................................................................ 22
   Метод account-info ................................................................................................................................................................... 22
   Метод operation-history ............................................................................................................................................................ 23
   Метод operation-details ............................................................................................................................................................. 26
Проведение платежей .................................................................................................................................................................... 29
   Метод request-payment ............................................................................................................................................................. 29
   Метод process-payment ............................................................................................................................................................ 33
Уведомления о событиях .............................................................................................................................................................. 37
    Уведомление о входящем переводе ....................................................................................................................................... 37
Предметный указатель .................................................................................................................................................................... 40

API Яндекс.Денег                                                                                                                                       Руководство разработчика
Руководство разработчика 4

    Введение
                   Руководство предназначено для разработчиков сервисов и приложений, использующих API Яндекс.Де-
                   нег.

API Яндекс.Денег                                                                      Руководство разработчика
5

    Авторизация приложения
                   Чтобы ваше приложение могло работать со счетом пользователя в системе "Яндекс.Деньги", ему необ-
                   ходимо пройти авторизацию.
                   Протокол OAuth2 позволяет сделать авторизацию безопасной и удобной. При OAuth2-авторизации при-
                   ложению не нужно запрашивать у пользователя его логин и пароль. Вместо этого пользователь выдает
                   приложению разрешение работать со своим счетом в рамках ограничений разрешенных пользователем.
                   Авторизация приложений в системе "Яндекс.Деньги" соответствует спецификациям:

                   •   The OAuth 2.0 Authorization Protocol
                   •   The OAuth 2.0 Protocol: Bearer Tokens

                   Схема взаимодействия пользователя и приложения с OAuth-сервером Яндекс.Денег представлена
                   на диаграмме:

                   Действия разработчика
                   1. Разработчик регистрирует свое приложение в системе "Яндекс.Деньги".
                       Согласно протоколу OAuth2, это фаза Registration Request. Система "Яндекс.Деньги" выдает разра-
                       ботчику client_id — идентификатор приложения, тип string.
                   2. Разработчик встраивает в код приложения полученный client_id, объявляя его константой. Далее
                      приложение распространяется любым удобным способом. В течение жизненного цикла приложения
                      client_id не изменяется.

API Яндекс.Денег                                                                         Руководство разработчика
6

                   Сценарий авторизации приложения пользователем
                   1. Пользователь инициирует авторизацию приложения для управления своим счетом.
                   2. Приложение отправляет запрос Authorization Request (запрос авторизации) на сервер Яндекс.Денег.
                   3. Яндекс.Деньги перенаправляют пользователя на страницу авторизации в системе "Яндекс.Деньги".
                   4. Пользователь вводит свой логин и пароль, просматривает список запрашиваемых прав и подтвер-
                      ждает либо отклоняет запрос авторизации приложения.
                   5. Приложение получает ответ Authorization Response в виде HTTP Redirect со временным токеном
                      для получения доступа или кодом ошибки.
                   6. Приложение, используя полученный временный токен доступа, отправляет запрос на получение
                      токена авторизации (Access Token Request)
                   7. Ответ содержит токен авторизации (access_token).
                   8. Приложение сообщает пользователю результат авторизации.

                   Удостоверение подлинности приложения по секретному слову
                   Система "Яндекс.Деньги" предоставляет дополнительную возможность удостоверения факта того
                   что токен авторизации будет получен именно из вашего приложения.
                   Для этого, при получении токена авторизации (вызов /oauth/token), приложение передает секретное сло-
                   во (client_secret), известное только приложению.

                   Примечание:
                   Защита на основе секретного слова будет эффективна лишь в том случае, если запрос на получение
                   токена авторизации отправляется от сервера приложения, минуя устройство или браузер пользователя.

                   Требования безопасности
                   1. Все сетевые взаимодействия производятся только по HTTPS.
                   2. Приложение должно проверять корректность SSL-сертификата сервера и немедленно прекращать
                      сессию в случае неуспеха проверки, чтобы не допустить утечку данных авторизации.
                   3. Не храните токен авторизации в открытом виде, в том числе в виде cookies.
                   4. Никогда не используйте токен авторизации в параметрах запросов (GET, POST, и пр.).
                   5. Секретное слово никогда не должно проходить через устройство или браузер пользователя.
                   6. Секретное слово не должно использоваться в иных запросах кроме запроса на получение токена.

    Регистрация приложения
                   Для регистрации приложения требуется передать сведения о нем в систему "Яндекс.Деньги".

API Яндекс.Денег                                                                          Руководство разработчика
7

                   Для этого выполните следующие шаги:

                   1. Перейдите на страницу Регистрация сервиса. Для входа потребуется ввести ваш платежный пароль.
                   2. Укажите параметры приложения:
                      description
                        Название вашего приложения, например 'Мобильный магазин'.
                      application_uri
                        Ссылка на веб-страницу приложения или сайт разработчика.
                      redirect_uri
                        URI для передачи результата авторизации приложения (см. описание redirect_uri в стандар-
                        те The OAuth 2.0 Authorization Protocol).
                      Использовать проверку подлинности сервиса
                        Укажите, хотите ли вы использовать секретное слово для проверки подлинности сервиса (см.
                        описание client_secret в стандарте The OAuth 2.0 Authorization Protocol).
                   3. Нажмите кнопку Подтвердить.
                      Откроется страница Данные сервиса, где будут указаны название вашего приложения, его иденти-
                      фикатор (client_id) и, если выбрана соответствующая опция, сгенерированное секретное слово
                      (client_secret).

                      Осторожно!
                      Разработчик приложения не должен открыто публиковать где-либо свой client_id. Утечка
                      client_id может спровоцировать "фишинговые атаки", то есть выпуск приложений или сайтов,
                      получающих токены авторизации от вашего имени. При этом система "Яндекс.Деньги" будет счи-
                      тать что получает запросы от вашего приложения. Противодействовать этому можно при помощи
                      использования секретного слова (client_secret), известного только разработчику приложения.
                      Разработчик приложения должен обеспечить конфиденциальность секретного слова
                      (client_secret).

                    См. также
                    Авторизация приложения

    Запрос авторизации
                   Приложение отправляет запрос Authorization Request на сервер системы "Яндекс.Деньги". Приложение
                   следует открыть браузер операционной системы и отправить HTTP-запрос в браузере операционной
                   системы.

                   Совет:
                   Для отправки запроса рекомендуется использовать метод POST — эквивалент HTML form submit
                   и кодировку UTF-8.

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

                   POST /oauth/authorize HTTP/1.1
                   Host: m.sp-money.yandex.ru (для мобильных устройств) или sp-money.yandex.ru (для
                   остальных устройств)
                   Content-Type: application/x-www-form-urlencoded;charset=UTF-8
                   Content-Length: 

                   client_id=&response_type=code
                   &redirect_uri=&scope=

API Яндекс.Денег                                                                       Руководство разработчика
8

                   Пример параметров запроса:

                   client_id=092763469236489593523464667
                   response_type=code
                   redirect_uri=https://client.example.com/cb
                   scope=account-info operation-history

                   Пример запроса:

                   POST /oauth/authorize HTTP/1.1
                   Host: sp-money.yandex.ru
                   Content-Type: application/x-www-form-urlencoded; charset=UTF-8
                   Content-Length: 154

                   client_id=092763469236489593523464667&response_type=code&redirect_uri=https%3A
                   %2F%2Fclient%2Eexample%2Ecom%2Fcb&scope=account%2Dinfo%20operation%2Dhistory

                   Параметры запроса:

                   Параметр                       Тип                             Описание
                   client_id                      string                          Идентификатор приложения,
                                                                                  полученный при регистрации.
                   response_type                  string                          Фиксированное значение: code.
                   redirect_uri                   string                          URI, на который OAuth сервер пере-
                                                                                  дает результат авторизации.
                                                                                  Значение этого параметра при по-
                                                                                  символьном сравнении должно быть
                                                                                  идентично               значению
                                                                                  redirect_uri, указанному при ре-
                                                                                  гистрации приложения. При сравне-
                                                                                  нии не учитываются индивидуаль-
                                                                                  ные параметры приложения, кото-
                                                                                  рые могут быть добавлены в конец
                                                                                  строки URI.

                   scope                          string                          Список запрашиваемых прав.
                                                                                  Разделитель элементов списка —
                                                                                  пробел. Элементы списка
                                                                                  чувствительны к регистру.

                   Примечание:
                   Запрещается отправлять запрос (открывать страницу) непосредственно из приложения, поскольку
                   по правилам платежной системы логин,пароль и платежный пароль пользователя допускается вводить
                   только на страницах платежной системы "Яндекс.Деньги".

                   По запросу авторизации пользователь перенаправляется на страницы авторизации системы "Ян-
                   декс.Деньги".Пользователь вводит свой логин и пароль, просматривает список запрашиваемых прав
                   и лимиты на платежи, подтверждает либо отклоняет запрос авторизации приложения.
                   Результат авторизации возвращается как HTTP 302 Redirect. Приложение должно обработать ответ
                   HTTP Redirect.

                   Внимание!
                   Если пользователь повторно вызывает авторизацию приложения с тем же значением параметра
                   client_id, выданные ранее разрешения аннулируются.

                   Параметры перенаправления с результатом авторизации:

                   Параметр                       Тип                             Описание

API Яндекс.Денег                                                                      Руководство разработчика
9

                   code                            string                            Временный токен (authorization
                                                                                     code), подлежащий обмену
                                                                                     на постоянный токен авторизации.
                                                                                     Присутствует если пользователь
                                                                                     подтвердил авторизацию
                                                                                     приложения.
                   error                           string                            Код ошибки. Присутствует в случае
                                                                                     ошибки или отказа в авторизации
                                                                                     пользователем.
                   error_description               string                            Дополнительное текстовое
                                                                                     пояснение ошибки.
                   Возможные ошибки:

                   Значение поля error             Описание                          Поведение системы
                   invalid_request                 В запросе отсутствуют обязательные Страница с текстом ошибки.
                                                   параметры, либо параметры имеют
                                                   некорректные или недопустимые
                                                   значения.
                   invalid_scope                   Параметр scope отсутствует, либо   Страница с текстом ошибки.
                                                   имеет некорректное значение
                                                   или имеет логические противоречия.
                   unauthorized_client             Неверное значение параметра       Страница с текстом ошибки.
                                                   client_id, либо приложение
                                                   не имеет право запрашивать
                                                   авторизацию (например
                                                   его client_id заблокирован
                                                   системой "Яндекс.Деньги").
                   access_denied                   Пользователь отклонил запрос      Перенаправление в приложение
                                                   авторизации приложения.           с кодом ошибки.
                   Пример ответа Яндекс.Денег при успешной авторизации:

                   HTTP/1.1 302 Found
                   Location: https://client.example.com/cb?code=i1WsRn1uB1ehfbb37

                   Ответ системы Яндекс.Деньги при отказе в авторизации:

                   HTTP/1.1 302 Found
                   Location: https://client.example.com/cb?error=access_denied

                   Примечание:
                   Временный токен (значение поля code ответа сервера системы) подлежит немедленному обмену на то-
                   кен авторизации. Время действия этого токена мало (менее 1 минуты).
                   Приложение должно получить и обработать ответ сервера Яндекс.Денег и немедленно самостоятельно
                   обменять временный токен на токен авторизации.
                   Если приложению не удалось получить ответ сервера, временный токен утерян, либо срок его действия
                   истек, необходимо повторить процедуру авторизации.

                    См. также
                    Получение токена
                    Отзыв токена
                    Авторизация приложения
                    Регистрация приложения

API Яндекс.Денег                                                                          Руководство разработчика
10

    Получение токена
                   Если авторизация завершилась успехом, приложение должно немедленно обменять временный токен
                   на токен авторизации. Для этого необходимо отправить запрос, содержащий временный токен, на OAuth-
                   сервер системы. Запрос должен быть отправлен методом POST.
                   Формат запроса:

                   POST /oauth/token HTTP/1.1
                   Host: m.sp-money.yandex.ru (для мобильных устройств) или sp-money.yandex.ru (для
                   остальных устройств)
                   Content-Type: application/x-www-form-urlencoded;charset=UTF-8
                   Content-Length: 

                   code=&client_id=&grant_type=authorization_code&redirect_uri=

                   Пример запроса без проверки подлинности:

                   POST /oauth/token HTTP/1.1
                   Host: sp-money.yandex.ru
                   Content-Type: application/x-www-form-urlencoded; charset=UTF-8
                   Content-Length: 145

                   code=i1WsRn1uB1ehfbb37&client_id=092763469236489593523464667&grant_type=authoriz
                   ation_code&redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb

                   Пример запроса с проверкой подлинности по секретному слову:

                   POST /oauth/token HTTP/1.1
                   Host: sp-money.yandex.ru
                   Content-Type: application/x-www-form-urlencoded; charset=UTF-8
                   Content-Length: 179

                   code=i1WsRn1uB1ehfbb37&client_id=092763469236489593523464667&grant_type=authoriz
                   ation_code&redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom
                   %2Fcb&client_secret=my_secret_word

                   Параметры запроса:

                   Параметр                         Тип                             Описание
                   code                             string                          Временный токен
                                                                                    (authorization code).
                   client_id                        string                          Идентификатор приложения,
                                                                                    полученный при регистрации.
                   grant_type                       string                          Фиксированное значение:
                                                                                    authorization_code.
                   redirect_uri                     string                          URI, на который OAuth-сервер пере-
                                                                                    дает результат авторизации. Значе-
                                                                                    ние этого параметра при посимволь-
                                                                                    ном сравнении должно быть иден-
                                                                                    тично значению redirect_uri,
                                                                                    ранее переданному в запросе
                                                                                    authorize.

                   client_secret                    string                          Секретное слово для проверки под-
                                                                                    линности приложения. Указывается,
                                                                                    если сервис зарегистрирован с про-
                                                                                    веркой подлинности.

                   В ответ на запрос сервер Яндекс.Денег возвращает токен авторизации (access_token), который явл-
                   яется симметричным секретом приложения и дает право проводить операции со счетом пользователя.
                   Токен возвращается в виде JSON-документа, который (в зависимости от результата обмена) может со-
                   держать одно из следующих полей:

                   Параметр                         Тип                             Описание

API Яндекс.Денег                                                                        Руководство разработчика
11

                   access_token                    string                            Токен авторизации. Присутствует
                                                                                     в случае успеха.
                   error                           string                            Код ошибки. Присутствует в случае
                                                                                     ошибки.
                   Возможные ошибки:

                   Значение поля error                              Описание
                   invalid_request                                  Обязательные параметры запроса отсутствуют
                                                                    или имеют некорректные или недопустимые значения.
                   unauthorized_client                              Неверное значение параметра client_id
                                                                    или client_secret, либо приложение не имеет права
                                                                    запрашивать авторизацию (например, его client_id
                                                                    заблокирован системой "Яндекс.Деньги").
                   invalid_grant                                    В выдаче access_token отказано. Временный токен
                                                                    не выдавался системой, либо просрочен, либо по этому
                                                                    временному токену уже выдан access_token
                                                                    (повторный запрос токена авторизации с тем
                                                                    же временным токеном).
                   Пример ответа при успешном обмене временного токена:

                   HTTP/1.1 200 OK
                   Content-Type: application/json
                   Content-Length: 102
                   Cache-Control: no-store

                   {
                       "access_token":"SlAV32hkhjhkkefhkjGHGSDcbndbjhfSHDFhjdbfv...wfervnrjKG"
                   }

                   Пример ответа при ошибке:

                   HTTP/1.1 400 Bad Request
                   Content-Type: application/json
                   Content-Length: 31
                   Cache-Control: no-store

                   {
                       "error":"invalid_grant"
                   }

                   Совет:
                   Использовать временный токен можно только один раз. Если приложению не удалось получить ответ
                   сервера за время жизни временного токена, процедуру авторизации следует повторить сначала.

                   Примечание:
                   Полученный access_token является симметричным секретом авторизации, поэтому разработчик
                   приложения должен предпринять меры по его защите: хранить токен в зашифрованном виде, предоста-
                   влять доступ к нему только после авторизации пользователя в приложении. Например, токен авториза-
                   ции может быть зашифрован с помощью алгоритма 3DES, где ключ шифрования — 4-х значный
                   ПИН код.

API Яндекс.Денег                                                                          Руководство разработчика
12

                   Внимание!
                   Срок действия токена 3 года. По истечении этого времени, токен автоматически аннулируется.

                    См. также
                    Запрос авторизации
                    Отзыв токена
                    Авторизация приложения
                    Регистрация приложения

    Отзыв токена
                   Приложение может отозвать полученный токен авторизации. При этом все права, выданные этому то-
                   кену, будут отменены.
                   Для этого отправьте запрос на OAuth-сервер системы, имеющий HTTP-заголовок Authorization, содер-
                   жащий отзываемый токен.
                   Запрос должен быть отправлен методом POST.
                   Пример запроса:

                   POST /api/revoke HTTP/1.1
                   Host: money.yandex.ru
                   Authorization: Bearer 01234567890ABCDEF01234567890
                   Content-Length: 0

                   В ответ сервер Яндекс.Денег возвращает один из следующих HTTP-кодов:

                   HTTP-код ответа                                  Описание
                   200 OK                                           Токен успешно отозван.
                   400 Bad Request                                  Формат HTTP-запроса не соответствует протоколу.
                                                                    Возможные причины: запрос невозможно разобрать,
                                                                    HTTP-заголовок Authorization отсутствует, либо
                                                                    имеет некорректное значение.
                   401 Unauthorized                                 Указанный токен не существует, либо уже отозван.
                   Пример успешного ответа:

                   HTTP/1.1 200 OK
                   Content-Length: 0

                   Пример ответа при ошибке:

                   HTTP/1.1 400 Bad Request
                   Content-Length: 0

                    См. также
                    Запрос авторизации
                    Получение токена
                    Авторизация приложения
                    Регистрация приложения

API Яндекс.Денег                                                                          Руководство разработчика
13

    Описание протокола
                   •   Формат запроса
                   •   Формат ответа
                   •   Права на выполнение операций
                   •   Типы данных протокола

    Формат запроса
                   Запросы осуществляются посредством протокола HTTP 1.1 с использованием SSL (HTTPS), на адрес:

                   https://money.yandex.ru/api/

                   Авторизация запросов осуществляется согласно стандарту The OAuth 2.0 Protocol: Bearer Tokens.
                   HTTP запросы должны содержать заголовок:

                   Authorization: Bearer 

                   Примечание:
                   Указанный токен должен иметь права на исполнение запрашиваемого метода с заданным набором
                   параметров.

                   Требования безопасности:

                   1. Все сетевые взаимодействия производятся только по HTTPS.
                   2. Приложение должно проверять корректность SSL-сертификата сервера. Если SSL-сертификат
                      не прошел проверку, необходимо немедленно прекратить сессию, чтобы не допустить утечку данных
                      авторизации.
                   3. Не храните токен авторизации в открытом виде, в том числе в виде cookies.
                   4. Никогда не используйте токен авторизации в параметрах запросов (GET, POST, и пр.).

                   Для передачи параметров запроса используется следующий формат:

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

                   Пример запроса:

API Яндекс.Денег                                                                         Руководство разработчика
14

                   POST /api/request-payment HTTP/1.1
                   Host: money.yandex.ru
                   Content-Type: application/x-www-form-urlencoded;charset=UTF-8
                   Authorization: Bearer 01234567890ABCDEF01234567890

                   param1=value1&param2=value2&param3=value3

                       См. также
                       Формат ответа
                       Права на выполнение операций
                       Типы данных протокола

    Формат ответа
                   Ответ сервиса представляет собой JSON-документ в кодировке UTF-8, см. The application/json Media
                   Type for JavaScript Object Notation (JSON) и официальный сайт JSON. Содержимое документа зависит
                   от результата выполнения запроса.
                   Пример ответа в случае успешного выполнения:

                   HTTP/1.1 200 OK
                   Content-Type: application/json
                   Content-Length: 51
                   Expires: Thu, 01 Dec 1994 16:00:00 GMT
                   Cache-Control: no-cache

                   {
                          "param1":"value1",
                          "param2":"value2"
                   }

                   В ответе платежных методов присутствуют HTTP-заголовки, запрещающие прокси-серверам и локаль-
                   ным браузерам кэшировать содержимое.

                   Совет:
                   В ответе могут также присутствовать поля, не описанные в настоящем протоколе. Приложению следует
                   их игнорировать.

                   При отказе в авторизации сервер отвечает HTTP кодом 4xx. Возможные причины отказа:

                   •    запрос невозможно разобрать;
                   •    в запросе отсутствует HTTP-заголовок Authorization;
                   •    в заголовке Authorization указан несуществующий, некорректный или просроченный токен;
                   •    запрошена операция, на которую у токена нет прав.

                   Ответ содержит заголовок WWW-Authenticate (согласно стандарту OAuth2-Bearer).

                   При отказе в авторизации запроса в ответе присутствуют следующие поля:

                   Поле                                                Описание
                   error                                               Код причины отказа в авторизации.
                   error_description                                   Дополнительное текстовое описание причины отказа.
                   Коды причины отказа в авторизации:

                   HTTP-код ответа                     Значение поля error              Описание

API Яндекс.Денег                                                                             Руководство разработчика
15

                   400                             invalid_request                   Формат HTTP запроса
                                                                                     не соответствует протоколу. Запрос
                                                                                     невозможно разобрать, либо
                                                                                     заголовок Authorization
                                                                                     отсутствует, либо имеет
                                                                                     некорректное значение.
                   401                             invalid_token                     Указан несуществующий,
                                                                                     просроченный, или отозванный
                                                                                     токен.
                   403                             insufficient_scope                Запрошена операция, на которую
                                                                                     у токена нет прав.
                   Пример ответа при отсутствующем заголовке:

                   HTTP/1.1 400 Bad Request
                   WWW-Authenticate: Bearer error="invalid_request"

                   Пример ответа при просроченном токене:

                   HTTP/1.1 401 Unauthorized
                   WWW-Authenticate: Bearer error="invalid_token", error_description="The access
                   token has expired"

                   Пример ответа в случае отсутствия у токена необходимых прав:

                   HTTP/1.1 403 Forbidden
                   WWW-Authenticate: Bearer error="insufficient_scope", error_description="Платеж
                   запрещен параметрами авторизации приложения"

                   В случае общей технической ошибки сервер возвращает HTTP код 500 Internal Server Error.
                   Приложению следует повторить запрос через некоторое время с теми же параметрами.

                    См. также
                    Формат запроса
                    Права на выполнение операций
                    Типы данных протокола

    Права на выполнение операций
                   При вызове операций протокола необходимо передавать токен авторизации, который обладает соответ-
                   ствующими правами. Список прав запрашивается как значение параметра scope вызова authorize
                   OAuth2-авторизации приложения пользователем, права перечисляются через пробел.
                   Список возможных прав:

                   Название права                                  Описание
                   account-info                                    Получение информации о состоянии счета, см. метод
                                                                   account-info.
                   operation-history                               Просмотр истории операций, см. метод operation-
                                                                   history.
                   operation-details                               Просмотр деталей операции, см. метод operation-details.
                   payment                                         Возможность осуществлять платежи в конкретный
                                                                   магазин или переводить средства на конкретный счет
                                                                   пользователя, см. методы request-payment и process-
                                                                   payment.
                   payment-shop                                    Возможность осуществлять платежи во все доступные
                                                                   для API магазины, см. методы request-payment и process-
                                                                   payment.
                   payment-p2p                                     Возможность переводить средства на любые счета
                                                                   других пользователей, см. методы request-payment
                                                                   и process-payment.

API Яндекс.Денег                                                                          Руководство разработчика
16

                   shopping-cart                                      Оплата корзины товаров. Подробнее см. Право shopping-
                                                                      cart.
                   money-source                                       Доступные методы проведения платежа, см. методы
                                                                      request-payment   и     process-payment. Подробнее
                                                                      см. Право money-source.

                   Ограничение:
                   В рамках scope можно одновременно использовать только одно из:

                   •       набор прав payment;
                   •       право payment-shop;
                   •       право payment-p2p.

                   Ограничения, применяемые к правам
                   К выдаваемым правам могут применяться ограничения. Ограничения задаются следующим образом:
                   имя_права.destination.limit

                   Ограничения, накладываемые на права:
                   Условие destination (получатель платежа)
                     Применяется к правам: payment.

                       В качестве значения допустимо указывать только одно из следующих условий:

                       •     to-pattern(patternId) — ограничивает возможность провести платеж только
                             по заданному patternId;
                       •     to-account(to,identifier_type) — ограничивает возможность перевода средств только
                             на счет определенного пользователя. В качестве идентификатора получателя допустимо
                             указывать номер счета или номер привязанного к счету получателя мобильного телефона.

                       Параметры ограничения:

                       Параметр                                        Описание
                       to                                              Идентификатор счета получателя перевода.
                                                                       Обязательный параметр.
                       identifier_type                                 Тип идентификатора получателя платежа. Возможные
                                                                       значения:

                                                                       •   account — номер счета в системе Яндекс.Деньги;
                                                                       •   phone — номер привязанного мобильного
                                                                           телефона.

                                                                       По умолчанию: account.

                       Совет:
                       Номер мобильного телефона как идентификатор получателя перевода.
                       Если пользователь, получатель перевода, имеет привязанный к счету мобильный телефон, то в каче-
                       стве идентификатора получателя платежа можно вместо номера счета использовать номер привязан-
                       ного мобильного телефона. Указанный номер телефона должен соответствовать формату ITU-T E.164
                       Numbering plan of the international telephone service Для России: полный номер, начинающийся с 7
                       без знака '+'.

API Яндекс.Денег                                                                            Руководство разработчика
17

                     Например: 79219990099

                     Пример для определения получателя перевода по номеру счета:

                     .to-account("41001XXXXXXXX") или .to-account("41001XXXXXXXX","account")

                     Пример для определения получателя перевода по номеру привязанного мобильного телефона:

                     .to-account("79219990099","phone")

                   Условие 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, остальные права
                     запрещены.

                     Ограничение:
                     Вне зависимости от значений запрошенных лимитов, к платежам могут применяться ограничения,
                     установленные платежной системой для различных видов транзакций.

                     Пример: ограничение платежа 100 руб 50 коп. в сутки, пользователь может изменять сумму.

API Яндекс.Денег                                                                         Руководство разработчика
18

                        .limit(1,100.50)

                        Пример: одноразовый платеж на 1000 руб, пользователь не может изменить сумму.

                        .limit(,1000)

                        Значение по умолчанию: limit(1,3000) — 3000 рублей в сутки, пользователь может изменять
                        сумму.

                   Право money-source
                   Указание платежной системе, какие методы платежа поддерживаются приложением.
                   Формат:

                   money-source(список_методов_платежа)

                   Запрашиваемый метод проведения платежа:

                   •     wallet — платежи со счета в системе "Яндекс.Деньги";
                   •     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")

                   Право shopping-cart
                   Единовременная оплата корзины товаров.
                   Формат:

                   shopping-cart(totalSum,shippingCost,currency,customerNumber).to-
                   pattern(patternId).item(description,qty,itemCost,itemPage).item()...

API Яндекс.Денег                                                                               Руководство разработчика
19

                   Ограничение:

                   1. Наличие этого права исключает возможность наличия всех других прав, кроме money-source
                      и account-info.
                   2. Право требует обязательного наличия условия to-pattern().
                   3. Условие to-account() не поддерживается.
                   4. Одно право shopping-cart может распространяться на несколько товаров.
                   5. В рамках одного shopping-cart допускается только одно условие to-
                      pattern().

                   Совет:
                   Разрешение на оплату корзины товаров имеет срок действия 1 час.

                   Совет:
                   По одному разрешению можно оплатить только одну корзину.

                   Параметры:

                   Параметр                 Тип            Описание
                   description              string         Текстовое описание товара, например "Japanese Green Tea Kabuse
                                                           Aracha".
                   qty                      number         Количество единиц товара, шт.
                                                           Может принимать значения:

                                                           •   целое положительное число — количество единиц товара;
                                                           •   значение отсутствует — одна штука.

                   itemCost                 amount         Стоимость единицы товара.
                   itemPage                 string         HTTP-ссылка на страницу товара в магазине. Необязательный
                                                           параметр.
                   shippingCost             amount         Стоимость доставки заказа. Может принимать значения:

                                                           •   положительное число — товар с платной доставкой, цена
                                                               доставки товара;
                                                           •   0 — товар с бесплатной доставкой;
                                                           •   значение отсутствует — доставка для данного товара
                                                               отсутствует.

                   totalSum                 amount         Полная стоимость корзины (сумма к оплате). Рассчитывается
                                                           как сумма всех itemCost*qty плюс стоимость доставки
                                                           shippingCost.
                   currency                 string         Код валюты платежа, всегда 643 (Рубль РФ по стандарту ISO 4217).
                   customerNumber           string         Номер заказа в магазине.

                   Пример: один товар в корзине, доставка отсутствует, ссылка на товар не указана.

                   shopping-cart(300.24,,"643","№123/2011").to-
                   pattern().item("Japanese Green Tea Kabuse Aracha 7oz.",,300.24)

                   Пример: два товара, платная доставка, один из товаров в количестве 2 штук.

API Яндекс.Денег                                                                            Руководство разработчика
20

                   shopping-cart(1000,200,"643","№123/2011").to-
                   pattern().item("Japanese Green Tea Kabuse Aracha 7oz.",,300,"http://
                   myshop.ru/tea/aracha.html").item("Japanese Green Tea Houjicha 7oz.",
                   2,250,"http://myshop.ru/tea/houjicha.html"

                       См. также
                       Формат запроса
                       Формат ответа
                       Типы данных протокола

    Типы данных протокола
                   Тип данных протокола               Соответствующий JSON-тип        Описание
                   string                             string                          Текстовая строка в кодировке UTF-8.
                   amount                             number                          Сумма. Число с фиксированной
                                                                                      точкой, две цифры после точки.
                   boolean                            boolean                         Логическое значение: true, false.
                   int                                number                          32-битное знаковое целое число.
                   object                             object                          Вложенный объект JSON.
                   array                              array                           Массив объектов JSON.
                   datetime                           string                          Временная метка согласно стандарту
                                                                                      RFC3339 в следующем формате
                                                                                      YYYY-MM-DDThh:mm:ss.fZZZZZ
                                                                                      (см. расшифровку ниже).

                   Расшифровка формата datetime:

                   •    YYYY — год, всегда 4 цифры;
                   •    MM — месяц, всегда 2 цифры (01=Январь, и т. д.);
                   •    DD — день месяца, точно 2 цифры (от 01 до 31);
                   •    T — латинский символ «T», должен быть в верхнем регистре;
                   •    hh — часы, всегда 2 цифры (24-часовой формат, от 00 до 23);
                   •    mm — минуты, всегда 2 цифры (от 00 до 59);
                   •    ss — секунды, всегда 2 цифры (от 00 до 59);
                   •    f — дробная часть секунды (до шести цифр), может отсутствовать, в этом случае следует опускать
                        и точку-разделитель;
                   •    ZZZZZ — Описатель временной зоны, обязательный параметр. Может принимать значения:

                        •   Z – UTC, символ "Z" должен быть в верхнем регистре;
                        •   +hh:mm или -hh:mm – смещение относительно UTC (показывает, что указано локальное время,
                            которое опережает или отстает от UTC на указанное число часов и минут).

                   Пример:

API Яндекс.Денег                                                                          Руководство разработчика
21

                   2011-07-01T19:00:00.000+04:00 — 19 часов 1 июля 2011 года, часовой пояс Europe/
                   Moscow (UTC+04:00).

                    См. также
                    Date and Time on the Internet: Timestamps
                    Формат запроса
                    Формат ответа
                    Права на выполнение операций

API Яндекс.Денег                                                            Руководство разработчика
22

    Получение информации о счете пользователя
                   •       Метод account-info
                   •       Метод operation-history
                   •       Метод operation-details

    Метод account-info

                   Описание
                   Получение информации о состоянии счета пользователя.
                   Требуемые права токена: account-info

                   Входные параметры
                   Отсутствуют

                   Возвращает
                   В случае успеха возвращает JSON-документ со следующим содержимым:

                   Параметр                      Тип       Описание
                   account                       string    Номер счета пользователя.
                   balance                       amount    Баланс счета пользователя.
                   currency                      string    Код валюты счета пользователя. Всегда 643 (рубль РФ по
                                                           стандарту ISO 4217).
                   identified                    boolean   Пользователь идентифицирован в системе "Яндекс.Деньги"
                                                           (значение параметра: true).
                   account_type                  string    Тип счета пользователя. Возможные значения:

                                                           •   personal — счет пользователя системы "Яндекс.Деньги";
                                                           •   professional — профессиональный счет в системе
                                                               "Яндекс.Деньги".

                   Пример запроса:

                       POST /api/account-info HTTP/1.1
                       Host: money.yandex.ru
                       Content-Type: application/x-www-form-urlencoded;charset=UTF-8
                       Authorization: Bearer 01234567890ABCDEF01234567890
                       Content-Length: 0

                   Пример ответа:

                       {
                           "account" : "4100123456789",
                           "balance" : 1000.00,
                           "currency" : "643",
                           "identified" : false,
                           "account_type" : "personal"
                       }

API Яндекс.Денег                                                                           Руководство разработчика
23

    Метод operation-history

                   Описание
                   Метод позволяет просматривать историю операций (полностью или частично) в постраничном режиме.
                   Записи истории выдаются в обратном хронологическом порядке: от последних к более ранним.
                   Требуемые права токена: operation-history.

                   Входные параметры
                   Параметр                  Тип             Описание
                   type                      string          Перечень типов операций (см. таблицу), которые требуется
                                                             отобразить. Типы операций перечисляются через пробел. Если
                                                             параметр отсутствует, выводятся все операции.
                   label                     string          Отбор платежей по значению метки. Выбираются платежи,
                                                             у которых указано заданное значение параметра label вызова
                                                             request-payment.
                   from                      datetime        Вывести операции ОТ момента времени (операции более поздние
                                                             или равные from). Если параметр отсутствует, выводятся
                                                             все операции.
                   till                      datetime        Вывести операции ДО момента времени (операции более ранние
                                                             чем till). Если параметр отсутствует, выводятся все операции.
                   start_record              string          Если параметр присутствует то будут отображены операции,
                                                             начиная с номера start_record (см. замечание).
                   records                   int             Количество запрашиваемых записей истории операций.
                                                             Допустимые значения: от 1 до 100, по умолчанию 30.
                   details                   boolean         Показывать подробные детали операции. По умолчанию false.
                                                             Для отображения деталей операции требуется наличие права
                                                             operation-details.

                   Типы операций:

                   Тип                       Описание
                   deposition                Пополнение счета (приход).
                   payment                   Платежи со счета (расход).

                   Возвращает
                   Метод возвращает следующие параметры:

                   Параметр                  Тип             Описание
                   error                     string          Код ошибки. Присутствует при ошибке выполнения запроса.
                   next_record               string          Порядковый номер первой записи на следующей странице истории
                                                             операций. Присутствует в случае наличия следующей страницы
                                                             истории (см. замечание).
                   operations                array           Список операций.

                   Параметры операции:

                   Параметр                  Тип             Описание
                   operation_id              string          Идентификатор операции.

API Яндекс.Денег                                                                              Руководство разработчика
24

                   Параметр                Тип            Описание
                   status                  string        Статус платежа (перевода). Может принимать следующие значения:

                                                         •   success — платеж завершен успешно;
                                                         •   refused — платеж отвергнут получателем или отменен
                                                             отправителем;
                                                         •   in_progress — платеж не завершен, перевод не принят
                                                             получателем или ожидает ввода кода протекции.

                   datetime                datetime      Дата и время совершения операции.
                   title                   string        Краткое описание операции (название магазина или источник
                                                         пополнения).
                   pattern_id              string        Идентификатор шаблона, по которому совершен платеж.
                                                         Присутствует только для платежей.
                   direction               string        Направление движения средств. Может принимать значения:

                                                         •   in (приход);
                                                         •   out (расход).

                   amount                  amount        Сумма операции.
                   label                   string        Метка платежа. Присутствует для входящих и исходящих переводов
                                                         другим пользователям системы, у которых был указан параметр
                                                         label вызова request-payment.

                   Совет:
                   Если значение входного параметра details установлено в true, в ответе будут также присутствовать
                   выходные параметры операции operation-details.

                   Код ошибки выполнения операции:

                   Код                                             Описание
                   illegal_param_type                              Неверное значение параметра type.
                   illegal_param_start_record                      Неверное значение параметра start_record.
                   illegal_param_records                           Неверное значение параметра records.
                   illegal_param_label                             Неверное значение параметра label.
                   illegal_param_from                              Неверное значение параметра from.
                   illegal_param_till                              Неверное значение параметра till.
                   все прочие значения                             Техническая ошибка, повторите вызов операции
                                                                   позднее.

                   Примечание:
                   Если история содержит большое количество операций, список операций выдается постранично.
                   По умолчанию выдается первая страница истории. Если есть хотя бы одна последующая страница, то в
                   ответе присутствует параметр next_record, определяющий порядковый номер ее первой записи.
                   Чтобы получить следующую страницу, повторите запрос с теми же параметрами, добавив параметр
                   start_record и указав в нем порядковый номер первой записи следующей страницы, полученный ранее
                   из параметра next_record.

                   Запрос полной истории
                   Пример запроса:

API Яндекс.Денег                                                                         Руководство разработчика
25

                   POST /api/operation-history HTTP/1.1
                   Host: money.yandex.ru
                   Content-Type: application/x-www-form-urlencoded;charset=UTF-8
                   Content-Length: 35
                   Authorization: Bearer 01234567890ABCDEF01234567890

                   type=deposition%20payment&records=3

                   Пример ответа:

                   {
                       "next_record" : "4",
                       operations : [
                         {
                            "operation_id" : "1234567",
                            "status" : "success",
                            "pattern_id" : "2904",
                            "direction" : "out",
                            "amount" : 500.00,
                            "datetime" : "2011-07-11T20:43:00.000+04:00",
                            "title" : "Оплата ADSL-доступа компании XXX"
                         },
                         {
                            "operation_id" : "1234568",
                            "status" : "success",
                            "pattern_id" : "2901",
                            "direction" : "out",
                            "amount" : 300.00,
                            "datetime" : "2011-07-10T20:43:00.000+04:00",
                            "title" : "Прямое пополнение счета телефона YYY"
                         },
                         {
                            "operation_id" : "1234569",
                            "status" : "success",
                            "direction" : "in",
                            "amount" : 1000.00,
                            "datetime" : "2011-07-10T20:40:00.000+04:00",
                            "title" : "Банк ZZZ, пополнение"
                         }
                       ]
                   }

                   Пример ответа с подробными деталями операции:

                   {
                     "next_record" : "2",
                     operations : [
                       {
                         "operation_id" : "1234567",
                         "status" : "success",
                         "pattern_id" : "2904",
                         "direction" : "out",
                         "amount" : 500.00,
                         "datetime" : "2011-07-11T20:43:00.000+04:00",
                         "title" : "Оплата ADSL-доступа компании XXX",
                         "details" : "Предоплата услуг ADSL доступа в интернет компании XXX\nНомер лицевого
                   счета абонента: \n1234567/89\nЗачисленная сумма: 500.00\nНомер транзакции:
                   2000002967767"
                       }
                     ]
                   }

                   Пример ответа с подробными деталями операции для исходящего перевода другому пользователю:

                   {
                       "next_record" : "2",
                       operations : [
                         {
                           "operation_id" : "1234567",
                           "status" : "success",
                           "pattern_id" : "p2p",
                           "direction" : "out",
                           "amount" : 50.25,
                           "datetime" : "2011-07-11T20:43:00.000+04:00",

API Яндекс.Денег                                                                            Руководство разработчика
26

                                "title" : "Перевод на счет 4100123456789",
                                "recipient" : "4100123456789",
                                "recipient_type" : "account",
                                "message" : "Купите бублики",
                                "comment" : "Перевод пользователю Яндекс.Денег",
                                "codepro" : false,
                                "details" : "Счет получателя:\n4100123456789\nСумма к получению: 50,00 руб."
                            }
                        ]
                    }

                   Пример ответа при неверно заданном параметре:

                    {
                         "error" : "illegal_param_type"
                    }

                   Запрос последующих страниц истории платежей
                   Пример запроса:

                    POST /api/operation-history HTTP/1.1
                    Host: money.yandex.ru
                    Authorization: Bearer 01234567890ABCDEF01234567890
                    Content-Type: application/x-www-form-urlencoded;charset=UTF-8
                    Content-Length: 40

                    type=payment&records=20&start_record=120

    Метод operation-details

                   Описание
                   Позволяет получить детальную информацию об операции из истории.
                   Требуемые права токена: operation-details.

                   Входные параметры
                   Параметр                     Тип          Описание
                   operation_id                 string       Идентификатор операции. Значение параметра следует указывать
                                                             как значение параметра operation_id ответа метода operation-
                                                             history, или значение поля payment_id ответа метода process-
                                                             payment, если запрашивается история счета плательщика.

                   Возвращает
                   Метод возвращает следующие параметры:

                   Параметр                     Тип          Описание
                   error                        string       Код ошибки, присутствует при ошибке выполнения запроса.
                   operation_id                 string       Идентификатор операции. Значение параметра соответствует либо
                                                             значению параметра operation_id ответа метода operation-
                                                             history либо, в случае если запрашивается история счета
                                                             плательщика, значению поля payment_id ответа метода process-
                                                             payment.
                   status                       string       Статус платежа (перевода). Значение параметра соответствует
                                                             значению поля status ответа метода operation-history.
                   pattern_id                   string       Идентификатор шаблона платежа, по которому совершен платеж.
                                                             Присутствует только для платежей.

API Яндекс.Денег                                                                              Руководство разработчика
27

                   Параметр                   Тип         Описание
                   direction                 string       Направление движения средств. Может принимать значения:

                                                          •   in (приход);
                                                          •   out (расход).

                   amount                    amount       Сумма операции.
                   datetime                  datetime     Дата и время совершения операции.
                   title                     string       Краткое описание операции (название магазина или источник
                                                          пополнения).
                   sender                    string       Номер счета отправителя перевода. Присутствует для входящих
                                                          переводов от других пользователей.
                   recipient                 string       Идентификатор получателя перевода. Присутствует для исходящих
                                                          переводов другим пользователям.
                   recipient_type            string       Тип идентификатора получателя перевода. Присутствует для исхо-
                                                          дящих переводов другим пользователям. Возможные значения:

                                                          •   account — Номер счета получателя в системе Яндекс.Деньги;
                                                          •   phone — Номер привязанного мобильного телефона
                                                              получателя;
                                                          •   email — E-mail получателя перевода.

                   message                   string       Сообщение получателю перевода. Присутствует для переводов
                                                          другим пользователям.
                   comment                   string       Комментарий к переводу (для отправителя). Присутствует в истории
                                                          переводов отправителя.
                   codepro                   boolean      Перевод защищен кодом протекции. Присутствует для переводов
                                                          другим пользователям.
                   label                     string       Метка платежа. Присутствует для входящих и исходящих переводов
                                                          другим пользователям системы, у которых был указан параметр
                                                          label вызова request-payment.
                   details                   string       Детальное описание платежа. Строка произвольного формата,
                                                          может содержать любые символы и переводы строк.

                   В случае ошибки возвращается ее код:

                   Код                                              Описание
                   illegal_param_operation_id                       Неверное значение параметра operation_id.
                   все прочие значения                              Техническая ошибка, повторите вызов метода позднее.

                   Пример запроса:

                    POST /api/operation-details HTTP/1.1
                    Host: money.yandex.ru
                    Authorization: Bearer 01234567890ABCDEF01234567890
                    Content-Type: application/x-www-form-urlencoded;charset=UTF-8
                    Content-Length: 20

                    operation_id=1234567

                   Пример ответа при оплате в магазин:

                    {
                      "operation_id" : "1234567",
                      "status" : "success",
                      "pattern_id" : "2904",
                      "amount" : 500.00,
                      "direction" : "out",
                      "datetime" : "2011-07-11T20:43:00.000+04:00",
                      "title" : "Оплата ADSL-доступа компании Мой-Провайдер",
                      "details" : "Предоплата услуг ADSL-доступа в интернет компании ООО \"XXX\"\nНомер
                    лицевого счета абонента: \n1234567/89\nЗачисленная сумма: 500.00\nНомер транзакции:
                    2000002967767"
                    }

API Яндекс.Денег                                                                           Руководство разработчика
28

                   Пример ответа для исходящего перевода другому пользователю:

                   {
                       "operation_id" : "1234567",
                       "status" : "success",
                       "pattern_id" : "p2p",
                       "direction" : "out",
                       "amount" : 50.25,
                       "datetime" : "2011-07-11T20:43:00.000+04:00",
                       "title" : "Перевод на счет 4100123456789",
                       "recipient" : "4100123456789",
                       "recipient_type" : "account",
                       "message" : "Купите бублики",
                       "comment" : "Перевод от пользователя Яндекс.Денег",
                       "codepro" : false,
                       "details" : "Счет получателя:\n4100123456789\nСумма к получению: 50,00 руб."
                   }

                   Пример ответа при запросе несуществующей операции:

                   {
                       "error" : "illegal_param_operation_id"
                   }

API Яндекс.Денег                                                                    Руководство разработчика
29

    Проведение платежей
                   Сценарий платежа в системе "Яндекс.Деньги":

                   1. Платежи проводятся на основе шаблона платежа с заполнением пользовательских параметров.
                      Приложению следует отобразить пользователю форму с запросом параметров платежа (сумма,
                      номер телефона, номер договора, и т. п.).
                   2. Приложение отправляет запрос платежа, содержащий идентификатор шаблона платежа
                      и параметры, введенные пользователем (вызывается метод request-payment). Сервер Яндекс.Денег
                      проверяет параметры платежа и возможность проведения платежа в магазин, возвращает
                      идентификатор и текст контракта платежа.
                   3. Приложение отображает пользователю контракт платежа, пользователь может подтвердить платеж
                      или отказаться от него.
                   4. Если пользователь подтвердил платеж, приложение отправляет запрос на подтверждение платежа
                      (вызов метода process-payment) c указанием идентификатора запроса, параметры, возвращенного
                      ранее методом request-payment.

                   Примечание:

                   1. Средства со счета пользователя списываются при вызове метода process-payment.
                   2. При повторном вызове process-payment с теми же параметрами метод возвратит состояние ранее
                      проведенного платежа.
                   3. В случае обрыва связи или иных сетевых ошибок приложение должно повторить вызов метода с теми
                      же параметрами.

                   Возможные виды платежей:

                   •   платеж в магазин;
                   •   перевод средств на счета других пользователей.

    Метод request-payment

                   Описание
                   Запрос платежа. Проверка параметров платежа и возможности приема платежа магазином, либо пере-
                   вода средств на счет пользователя системы "Яндекс.Деньги".
                   Требуемые права для платежа в магазин: payment.to-pattern ("шаблон платежа") или payment-shop.
                   Требуемые права для перевода средств на счета других пользователей: payment.to-account ("идентифи-
                   катор получателя", "тип идентификатора") или payment-p2p.

                   Входные параметры для платежа в магазин
                   Параметр                 Тип            Описание
                   pattern_id               string         Идентификатор шаблона платежа.
                   *                        string         Пользовательские параметры шаблона платежа, требуемые
                                                           магазином.

API Яндекс.Денег                                                                            Руководство разработчика
30

                   Входные параметры для перевода средств на счета других
                   пользователей
                   Параметр                Тип                Описание
                   pattern_id              string             Фиксированное значение: p2p.
                   to                      string             Идентификатор получателя перевода.
                   identifier_type         string             Тип идентификатора получателя перевода. Необязательный
                                                              параметр. Значение по умолчанию — номер счета в системе
                                                              Яндекс.Деньги. Значение должно соответствовать значению
                                                              identifier_type ограничения to-account параметра scope
                                                              запроса авторизации.
                   amount                  amount             Сумма перевода.
                   comment                 string             Комментарий к переводу, отображается в истории отправителя.
                   message                 string             Комментарий к переводу, отображается получателю.
                   label                   string             Метка платежа. Необязательный параметр.

                   Совет:
                   Любому переводу при его проведении можно присвоить "метку платежа". Метка платежа — это неко-
                   торая дополнительная информация, присваиваемая приложением данному переводу.
                   Впоследствии, можно выбрать из истории переводы по указанной метке. Например, в качестве метки
                   платежа можно указывать код или идентификатор некой сущности в приложении. Допустимо исполь-
                   зовать значения длиной до 64 символов. Значение метки чувствительно к регистру символов.

                   Возвращает
                   В случае успеха возвращает следующие параметры:

                   Параметр                         Тип       Описание
                   status                           string    Код результата выполнения операции (см.таблицу).
                   error                            string    Код ошибки при проведении платежа (пояснение к полю status).
                                                              Присутствует только при ошибках.
                   money_source                     object    Доступные для приложения методы проведения платежа,
                                                              см.Доступные методы платежа. Присутствует только при успешном
                                                              выполнении метода.
                   request_id                       string    Идентификатор запроса платежа, сгенерированный системой.
                                                              Присутствует только при успешном выполнении метода.
                   contract                         string    Текст описания платежа (контракт). Присутствует только
                                                              при успешном выполнении метода.
                   balance                          amount    Текущий баланс счета пользователя. Присутствует при выполнении
                                                              следующих условий:

                                                              •   метод выполнен успешно;
                                                              •   токен авторизации обладает правом account-info.

                   recipient_identified             boolean   Идентифицирован ли получатель в системе "Яндекс.Деньги". Воз-
                                                              можные значения:

                                                              •   true — получатель идентифицирован;
                                                              •   false или параметр отсутствует — получатель
                                                                  не идентифицирован.

                                                              Параметр присутствует при успешном выполнении метода в случае
                                                              перевода средств на счет другого пользователя.

API Яндекс.Денег                                                                               Руководство разработчика
31

                   Параметр                     Тип       Описание
                   recipient_account_type       string    Тип счета получателя в системе "Яндекс.Деньги". Параметр
                                                          присутствует при успешном выполнении метода в случае перевода
                                                          средств на счет другого пользователя.

                   Код результата выполнения операции:

                   Код                     Описание
                   success                 Успешное выполнение.
                   refused                 Отказ в проведении платежа, объяснение причины отказа содержится в поле
                                           error. Это конечное состояние платежа.

                   В случае ошибки выполнения операции возвращается ее код:

                   Код                                               Описание
                   illegal_params                                    Обязательные параметры платежа отсутствуют
                                                                     или имеют недопустимые значения.
                   illegal_param_label                               Недопустимое значение параметра label.
                   phone_unknown                                     Указан номер телефона не связанный со счетом
                                                                     пользователя или получателя платежа.
                   payment_refused                                   Магазин отказал в приеме платежа (например
                                                                     пользователь попробовал заплатить за товар, которого
                                                                     нет в магазине).
                   authorization_reject                              В авторизации платежа отказано. Возможные причины:

                                                                     •   транзакция с текущими параметрами запрещена
                                                                         для данного пользователя;
                                                                     •   пользователь не принял Соглашение
                                                                         об использовании системы "Яндекс.Деньги".

                   not_enough_funds                                  На счете плательщика недостаточно средств.
                                                                     Необходимо пополнить счет и провести новый платеж.
                   limit_exceeded                                    Превышен один из лимитов на операции:

                                                                     •   на сумму операции для выданного токена
                                                                         авторизации;
                                                                     •   сумму операции за период времени для выданного
                                                                         токена авторизации;
                                                                     •   ограничений платежной системы для различных
                                                                         видов операций.

                   все прочие значения                               Техническая ошибка, повторите вызов операции
                                                                     позднее.

                   Примечание:
                   При выполнении запроса платежа система "Яндекс.Деньги", как правило, связывается с сервером
                   магазина, поэтому время ответа метода может составлять до 30 секунд. Во время работы метода
                   request-payment приложение должно показывать пользователю сообщение о том, что приложение
                   ожидает ответа от магазина.

                   Примечание:
                   Успешное выполнение метода request-payment не является гарантией успешного завершения
                   процесса платежа, так как авторизация платежа выполняется при вызове метода process-payment.

API Яндекс.Денег                                                                           Руководство разработчика
Вы также можете почитать