Разработчикам

Общая информация

Адрес API-сервиса https://payouts-api.wmtransfer.com/v1.0

В зависимости от типа операции к этому адресу добавляются определенные url. Каждый url прописан в методе. Формат сообщений сервиса - JSON-объект(application/json). Кодировка символов - UTF-8

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

  • Каждый запрос должен содержать заголовок "Content-Type" со значением - "application/json"
  • Разделитель десятичных чисел - точка
  • Все дробные числа передаются в формате с двумя знаками после запятой, если содержат дробную часть. Допустимо передавать число без дробной части. Пример: 1500.76; 5; 5.00,
  • Формат даты при передаче(MSK) - dd.MM.yyyy HH:mm:ss
  • Поля логического типа передаются как true\false
  • Мобильный телефон передается в международном формате в виде числа. Никакие другие символы как то: плюс, точки, скобки, пробелы и т.д недопустимы
  • Все параметры целого типа по-умолчанию равны - 0, дробного - 0.00, логического - false, дата - 01.01.0001

С чего начать

  1. Отправьте заявку на получения доступа к сервису, логина для личного кабинета и секретного ключа.
  2. Интегрируйте метод расчета подписи запросов к API сервиса Payouts
  3. Наши специалисты расскажут как пополнить счет для осуществления операций выплат.
  4. Создайте новую транзакцию, используя соответствующий метод или загружайте реестр в личном кабинете.
  5. Интегрируйте другие методы, доступные в API сервиса Payouts для проверки статуса операции, получения отчетов и актуального баланса на счетах.

Организационные и технические вопросы направляйте вашему менеджеру в Payouts на почту merchant.support@webmoney.com.

Формирование запросов

Каждый запрос обязательно содержит поле Login и Signature. Login это имя пользователя в сервисе Payouts.

Пример запроса, в котором определены обязательные поля


{
  "request": {
    "Login":"admin@molot.ru",
    "Signature":"Y4mab0rwOLXedtLfUf7AwIMhdGitxUkkX2+0BimWazg="
  }
}

Signature это подпись запроса. Она состоит из трех частей

  • url метода
  • формализованное тело запроса (удаляются переносы строк, лишние пробелы и знаки табуляции)
  • секретный клиентский ключ
Секретный клиентский ключ уникален для каждого клиента и берется из сервиса по переданному Login клиента (https://payouts.wmtransfer.com/apisettings/index).

Пример: Мы хотим вызывать /transaction/new с запросом

{
    "request": {
        "ClientTransactionId":"abcd1234",
        "AccountId":"1",
        "AccountNumber":"79093222111",
        "Amount":100.03,
        "Currency":"RUB",
        "TypePaymentMethod":20,
        "Passport":"2312 333123 Выдан МО УФМС РОССИИ",
        "Address":"Казань, Карла Маркса 5",
        "TaxId":"16500101012",
        "Login":"admin@molot.ru"
    }
}
                    

Секретный клиентский ключ к примеру - 9DRQ3EcGP4ovAdzr

Строка для получения подписи будет:

/transaction/new{"request":{"ClientTransactionId":"abcd1234","AccountId":"1","AccountNumber":"79093222111","Amount":100.03,"Currency":"RUB","TypePaymentMethod":20,"Passport":"2312 333123 Выдан МО УФМС РОССИИ","Address":"Казань, Карла Маркса 5","TaxId":"16500101012","Login":"admin@molot.ru"}}9DRQ3EcGP4ovAdzr

Части строки для подписи:

  1. /transaction/new - url метода
  2. {"request":{"ClientTransactionId":"abcd1234","AccountId":"1","AccountNumber":"79093222111","Amount":100.03,"Currency":"RUB","TypePaymentMethod":20,"Passport":"2312 333123 Выдан МО УФМС РОССИИ","Address":"Казань, Карла Маркса 5","TaxId":"16500101012","Login":"admin@molot.ru"}} - формализованное тело запроса
  3. 9DRQ3EcGP4ovAdzr - клиентский ключ

И от этой строки получают хеш по алгоритму SHA-256. Далее полученное значение переводят в формат Base64. Это и будет строка, которую необходимо добавить в поле Signature

Аналогично каждый ответ от сервиса содержит два обязательных поля и поле Signature, которое возвращается только в случае успешной проверки подписи запроса

- ErrorCode - код ошибки. В случае неуспешного выполнения операции данный код будет отличным от 0. Расшифровку всех кодов ошибок можно найти в Приложении "Типы ошибок"

- ErrorMessage - сообщение о ошибке

- Signature - подпись ответа от сервера.

В случае успешного ответа ErrorCode будет иметь значение 0, а ErrorMessage пустую строку

Если во время выполнения запроса на сервере произошла ошибка ErrorCode будет иметь значение -1, а ErrorMessage "Внутренняя ошибка сервиса"

При некорректной верификации подписи запроса ErrorCode будет иметь значение 30, а ErrorMessage будет иметь "Ошибка аутентификации. Проверка хеша закончилась неуспешно", а также вернет строку, от которой сервис получил хеш

При некорректном логине ErrorCode будет иметь значение 40, а ErrorMessage будет иметь "Некорректный логин"

Пример успешного ответа

                
{
    "response":{
        "ErrorCode":0,
        "ErrorMessage":"",
        "Signature": "692lzInUZShCjdUnScA0rhJu8ybmc8lPvpAlflpjkxw",
               
    }
}
                    
                

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

/transaction/new{"response":{"ErrorCode":0,"ErrorMessage":""}}9DRQ3EcGP4ovAdzr

Части строки для подписи:

  1. /transaction/new - url метода
  2. {"response":{"ErrorCode":0,"ErrorMessage":""}} - формализованное тело запроса
  3. 9DRQ3EcGP4ovAdzr - клиентский ключ

Проверить создание подписи [/test/check_sign]

Метод для проверки создания подписи.

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


{
    "request":{
        "Signature":"P/7yB8dqtdPN3L7uwH8hhX78DzUpIEIlK0dNkOFI/HU=",
        "Login":"admin@molot.ru"
    }
}
                    

Как получить Signature(API-ключ 9DRQ3EcGP4ovAdzr):

C#

Javascript

Java


// Собираем строку из аргументов для подписи
string s = "/test/check_sign" + "{\"request\":{\"Login\":\"admin@molot.ru\"}}" + "9DRQ3EcGP4ovAdzr";
// Получаем хеш по алгоритму SHA-256
byte[] hash;
using (var sha256 = new SHA256Managed())
{
    hash = sha256.ComputeHash(Encoding.UTF8.GetBytes(s));
}
// Перевод строки в формат Base64
string signature = Convert.ToBase64String(hash);
//В итоге получаем значение signature равное P/7yB8dqtdPN3L7uwH8hhX78DzUpIEIlK0dNkOFI/HU=
                        
                



Ответ

В случае успешного выполнения метода, т.е проверка подписи пройдена успешно - вернется ответ, в котором ErrorCode будет иметь значение 0, а ErrorMessage пустую строку.

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


{
    "response": {
        "ErrorCode":0,
        "ErrorMessage":"",
        "Signature":"692lzInUZShCjdUnScA0rhJu8ybmc8lPvpAlflpjkxw"
    }
}
                

В случае неуспешного выполнения операции будет возвращен ответ с кодом ошибки(см Приложение "Типы ошибок") и сообщением в чем заключается проблема. Если подпись сформирована неверно, будет возвращен ответ, в котором ErrorCode будет иметь значение 30. А ErrorMessage будет содержать строку на основе которой был получен хеш.

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


{
    "response": {
        "ErrorCode":30,
        "ErrorMessage":"Ошибка аутентификации. Проверка хеша закончилась неуспешно."
    }
}
                

Создать транзакцию [/transaction/new]

Данный метод отвечает за создание новой транзакции. И содержит следующие поля:
Поле Описание Тип данных Регулярное
выражение
Обязательно
ClientTransactionId Идентификатор транзакции на стороне клиента Строка ^.{0,255}$
AccountId Идентификатор счета в сервисе Payouts Строка ^\d{1,19}$
Amount Сумма транзакции Дробное число
Currency Валюта транзакции
(типы валют и их значения в Приложении)
Строка ^(USD|EUR)$
TopupCurrency Валюта зачисления
(типы валют и их значения в Приложении)
Строка ^(USD|EUR)$ (только для межвалютных выплат)
TypePaymentMethod Тип платежного метода
(типы платежных методов и их значения в Приложении)
Целое число
Name Имя владельца карты Строка ^.{0,255}$
Surname Фамилия владельца карты Строка ^.{0,255}$
MiddleName Отчество получателя платежа Строка ^.{0,255}$
BirthDate Дата рождения владельца карты Строка ^\d{4}\-(?:0[1-9]|1[012])\-(0?[1-9]|[12][0-9]|3[01])$ (только для выплат на карты, обязательность уточните у техподдержки)
Passport Паспортные данные получателя платежа Строка ^.{0,1024}
Address Адрес владельца карты Строка ^.{0,1024}$ (только для выплат на карты, обязательность уточните у техподдержки)
AddressCountryCode Код страны (ISO 3166-1 alpha-2) Строка ^[A-Z]{2}$
AddressCity Город Строка ^.{0,255}$ (только для выплат на карты, обязательность уточните у техподдержки)
Email Email получателя платежа Строка ^.{0,255}$
Phone Номер телефона получателя платежа Строка ^.{0,50}$
TaxId ИНН(или его аналог) получателя платежа Строка ^.{0,50}$
Bik БИК банка получателя платежа Строка ^.{0,50}$
AccountNumber Номер счета. Это может быть номер мобильного
телефона (символ '+' обязателен), номер карты, банковский счет и тд в
зависимости от платежного метода.
Строка ^.{0,255}$
CardExpiryMonth Месяц срока действия карты Строка ^(?:0[1-9]|1[012]$ (только для выплат на карты, обязательность уточните у техподдержки)
CardExpiryYear Год срока действия карты Строка ^\d{4}$ (только для выплат на карты, обязательность уточните у техподдержки)
ApiBehavior Поведение апи
Тип по умолчанию - Legacy (типы поведения и их значения в Приложении)
Целое число
Signature Подпись запроса Строка
Login Логин пользователя сервиса Строка
Comment Комментарий Строка ^.{0,2048}$
(для выплат на кошельки WebMoney ^.{0,150}$)
ContractorId Id оператора, при выплатах на лицевые счета. Например: оплата мобильной связи. Список доступных операторов можно посмотреть здесь. Целое число
Data Id СБП банка Строка (только для выплат СБП)

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


    {
        "request":{
        "ClientTransactionId":"abcd1234",
        "AccountId":"1",
        "Amount":100.03,
        "Fee":0.00,
        "Currency":"USD",
        "TopupCurrency":"RUB",
        "Name":"Иван",
        "Surname":"Иванов",
        "MiddleName":"Иванович",
        "BirthDate":"1990-12-02",
        "Passport":"1111111118, территориальным пунктом УФМС РФ по г.Уфе, 06.02.2015, 234-567",
        "Address":"г. Калининград, ул. Ленина, д. 84",
        "AddressCity":"Калининград",
        "AddressCountryCode":"RU",
        "Email":"",
        "Phone":"79093222111",
        "TaxId":"123456789123",
        "Bik":"",
        "BankAccount":"",
        "TypePaymentMethod":20,
        "AccountNumber":"79093222111",
        "IncludeTax":false,
        "CardExpiryMonth":"09",
        "CardExpiryYear":"2020",
        "Signature":"gOusrR6E+7R2pQzylOR+KId/BLbtyXB8ahgStcHrtcE=",
        "Login":"admin@molot.ru",
        "Comment":"Комментарий",
        "ContractorId":1
        }
    }

Как получить Signature(API-ключ 9DRQ3EcGP4ovAdzr):

C#

JavaScript

Java


    // Собираем строку из аргументов для подписи
    string s = "/transaction/new" + "{\"request\":{\"ClientTransactionId\":\"abcd1234\",\"AccountId\":\"1\",\"Amount\":100.03,\"Fee\":0.00,\"Currency\":\"USD\",\"TopupCurrency\":\"RUB\",\"Name\":\"Иван\",\"Surname\":\"Иванов\",\"MiddleName\":\"Иванович\",\"Passport\":\"1111111118, территориальным пунктом УФМС РФ по г.Уфе, 06.02.2015, 234-567\",\"Address\":\"г. Калининград, ул. Ленина, д. 84\",\"Email\":\"\",\"Phone\":\"79093222111\",\"TaxId\":\"123456789123\",\"Bik\":\"\",\"BankAccount\":\"\",\"TypePaymentMethod\":20,\"AccountNumber\":\"79093222111\",\"IncludeTax\":false,\"Login\":\"admin@molot.ru\"}}" + "9DRQ3EcGP4ovAdzr"
    // Получаем хеш по алгоритму SHA-256
    byte[] hash;
    using (var sha256 = new SHA256Managed())
    {
        hash = sha256.ComputeHash(Encoding.UTF8.GetBytes(s));
    }
    // Перевод строки в формат Base64
    string signature = Convert.ToBase64String(hash);
    //В итоге получаем значение signature равное gOusrR6E+7R2pQzylOR+KId/BLbtyXB8ahgStcHrtcE=

                



Ответ

В случае успешного выполнения метода будет создана транзакция со статусом Request (см Приложение "Справочник статусов транзакции") и в поле TransactionId будет значение идентфикатора транзакции в сервисе Payouts.

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


{
    "response": {
       "ErrorCode":0,
       "ErrorMessage":"",
       "Signature":"qWGm9ouZ/prm83i9lnu2lUhoQs7BtMnoTeUtRI1ObJQ=",
       "TransactionId":"138094",
       "TypeTransactionStatus": 10
    }
}
                

В случае неуспешного выполнения операции будет возвращен ответ с кодом ошибки(см Приложение "Типы ошибок") и сообщением в чем заключается проблема

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


{
    "response": {
        "ErrorCode":70,
        "ErrorMessage":"Данные транзакции некорректны",
        "Signature":"SzMm4/TaqGLCvux3BME/cALR9+2vB3pffVkiAol8S7o=",
        "TransactionId": 0,
        "TypeTransactionStatus": 0
    }
}
                

Проверка статуса транзакции [/transaction/status]

Данный метод отвечает за возвращение статуса транзакции

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


{
    "request":{
        "ClientTransactionId":"abcd1234",
        "Signature":"40mxIeBty+4AysT0soIJXHW+HI78aRe+t9TuzvxVYRE=",
        "Login":"admin@molot.ru"
    }
}           
                    

Как получить Signature(API-ключ 9DRQ3EcGP4ovAdzr):

C#

Javascript

Java


// Собираем строку из аргументов для подписи
string s = "/transaction/status" + "{\"request\":{\"Login\":\"admin@molot.ru\",\"ClientTransactionId\":\"abcd1234\"}}" + "9DRQ3EcGP4ovAdzr";
// Получаем хеш по алгоритму SHA-256
byte[] hash;
using (var sha256 = new SHA256Managed())
{
    hash = sha256.ComputeHash(Encoding.UTF8.GetBytes(s));
}
// Перевод строки в формат Base64
string signature = Convert.ToBase64String(hash);
//В итоге получаем значение signature равное 40mxIeBty+4AysT0soIJXHW+HI78aRe+t9TuzvxVYRE=
                    
                



Ответ

В случае успешного выполнения метода будет возвращен статус транзакции(см Приложение "Справочник статусов транзакции") и код ошибки транзакции(см Приложение "Справочник кодов ошибок транзакции")

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


        {
            "response": {
            "ErrorCode":0,
            "ErrorMessage":"",
            "Signature":"PG2GMGUnCu6ZlzsdoqszKXcFNZHlUqzO5BVLgtk6mI4=",
            "TypeTransactionStatus":10,
            "TypeFailureCode": 0,
            "TypeFailureMessage": ""
            }
        }

В случае неуспешного выполнения операции будет возвращен ответ с кодом ошибки(см Приложение "Типы ошибок") и сообщением в чем заключается проблема

Получение информации по транзакции [/transaction/info]

Данный метод отвечает за возвращение информации по транзакции

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


{
    "request":{
        "ClientTransactionId":"abcd1234",
        "Signature":"40mxIeBty+4AysT0soIJXHW+HI78aRe+t9TuzvxVYRE=",
        "Login":"admin@molot.ru"
    }
}           
                    

Как получить Signature(API-ключ 9DRQ3EcGP4ovAdzr):

C#

Javascript

Java


	// Собираем строку из аргументов для подписи
	string s = "/transaction/info" + "{\"request\":{\"Login\":\"admin@molot.ru\",\"ClientTransactionId\":\"abcd1234\"}}" + "9DRQ3EcGP4ovAdzr";
	// Получаем хеш по алгоритму SHA-256
	byte[] hash;
	using (var sha256 = new SHA256Managed())
	{
	hash = sha256.ComputeHash(Encoding.UTF8.GetBytes(s));
	}
	// Перевод строки в формат Base64
	string signature = Convert.ToBase64String(hash);
	//В итоге получаем значение signature равное /4DvqoLWUWdzbgXmPfO3UAuVBQVwW5GQ49lGE720xtE=

                



Ответ

В случае успешного выполнения метода будет возвращен стандартный ответ с ErrorCode = 0 и пустым ErrorMessage. В ответе будет содержаться информация по транзакции.

Поле Описание Тип данных
UserId Номер счета получаетля платежа, это может быть кошелек, банковский счет, номер телефона и т.д Строка
TypePaymentMethod Тип платежа(см. Приложение "Справочник платежных методов") Целое число
Amount Сумма транзакции Дробное число
Commission Сумма комиссии, которая была удержана сервисом Дробное число
Currency Валюта транзакции(см. Приложение "Справочник валют") Строка
TypeTransactionStatus Статус транзакции(см. Приложение "Справочник статусов транзакции") Целое число
DateTime Дата и время последнего изменения статуса транзакции Строка
ClientTransactionId Id транзакции на стороне клиента Строка
TopupCurrency Валюта пополнения(см. Приложение "Справочник валют") Строка
Description Описание ошибки транзакции Строка
SourceAmount Сумма списания Дробное число
ExchangeRate Курс обмена Дробное число
Comment Комментарий Строка

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


{
   "response":
      {
         "ErrorCode":0,
         "ErrorMessage":"",
         "Signature":"r/pGo5f2QR7a2S9JCU/vqW/toxPdAMAmYEhNnMzNBFY=",
         "TransactionInfo":
         {
            "UserId":"532100009006211",	
            "TypePaymentMethod":10,
            "Amount":5,
            "Commission":0.01,
            "Currency":"EUR",
            "TypePersonalTaxType":10,
            "TypeTransactionStatus":40,
            "DateTime":"20.11.2019 12:48:48",
            "ClientTransactionId":"81119",
            "TopupCurrency":"RUB",
            "Description":"",
            "SourceAmount":0.08,
            "ExchangeRate":69.49,
            "Comment": "Комментарий"
         }
    }
}

В случае неуспешного выполнения операции будет возвращен ответ с кодом ошибки(см Приложение "Типы ошибок") и сообщением в чем заключается проблема

Отмена транзакции [/transaction/cancel]

Данный метод отвечает за отмену транзакции, которая находится в ожидающем статусе(см Приложение "Справочник статусов транзакции"): Request или Pending

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


{
    "request":{
        "ClientTransactionId":"abcd1234",
        "Signature":"aotwTQv4IqvwFrNooR/V5cTpHi+CKk/Gc0rfmRmC/ko=",
        "Login":"admin@molot.ru"
    }
}           
                    

Как получить Signature(API-ключ 9DRQ3EcGP4ovAdzr):

C#

Javascript

Java


// Собираем строку из аргументов для подписи
string s = "/transaction/cancel" + "{\"request\":{\"Login\":\"admin@molot.ru\",\"ClientTransactionId\":\"abcd1234\"}}" + "9DRQ3EcGP4ovAdzr";
// Получаем хеш по алгоритму SHA-256
byte[] hash;
using (var sha256 = new SHA256Managed())
{
    hash = sha256.ComputeHash(Encoding.UTF8.GetBytes(s));
}
// Перевод строки в формат Base64
string signature = Convert.ToBase64String(hash);
//В итоге получаем значение signature равное aotwTQv4IqvwFrNooR/V5cTpHi+CKk/Gc0rfmRmC/ko=
                
                
                

Ответ

В случае успешного выполнения метода транзакция будет отменена и будет возвращен стандартный ответ с ErrorCode = 0 и пустым ErrorMessage

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


{
    "response": {
        "ErrorCode":0,
        "ErrorMessage":"",
        "Signature":"+M1kLlDcFI7csCEBzp4p/7MF5Aa5+T3LKjES/jfqHZk="
    }
}
                

В случае неуспешного выполнения операции будет возвращен ответ с кодом ошибки(см Приложение "Типы ошибок") и сообщением в чем заключается проблема

Получение информации о получателе платежа [/user/info]

Данный метод отвечает за получение данных получателя платежа.

- UserInfoIdentity отвечает по какому полю искать получателя в сервисе (см Приложение "Типы фильтра получателя платежа")

- UserId непосредственно отвечает за идентфикатор пользователя, который соответствует UserInfoIdentity

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


{
    "request":{
        "UserInfoIdentity":20,
        "UserId":"79050000001",
        "Signature":"vH5EHYrOPfmnKOtR1kRl6IBtk417fbkHZJZqcPJOp4I=",
        "Login":"admin@molot.ru"
    }
}           
                            

Как получить Signature(API-ключ 9DRQ3EcGP4ovAdzr)

C#

Javascript

Java


// Собираем строку из аргументов для подписи
string s = "/user/info" + "{\"request\":{\"Login\":\"admin@molot.ru\",\"UserInfoIdentity\":20,\"UserId\":\"79050000001\"}}" + "9DRQ3EcGP4ovAdzr";
// Получаем хеш по алгоритму SHA-256
byte[] hash;
using (var sha256 = new SHA256Managed())
{
    hash = sha256.ComputeHash(Encoding.UTF8.GetBytes(s));
}
// Перевод строки в формат Base64
string signature = Convert.ToBase64String(hash);
//В итоге получаем значение signature равное vH5EHYrOPfmnKOtR1kRl6IBtk417fbkHZJZqcPJOp4I=
                        
                

Ответ

В случае успешного выполнения метода будет возвращен стандартный ответ с ErrorCode = 0 и пустым ErrorMessage. Так же если по переданному идентификатору будет найден получатель. то будут дополнительно возвращены поля, идентифицирующие получателя

Поле Описание Тип данных
Id Идентификатор получателя платежа в сервисе Payouts Строка
RegistrationDate Дата регистрации Строка
LastTransactionDate Дата последней транзакции Строка
TransactionNumber Количество транзакций Целое число

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


{
    "response": {
        "ErrorCode":0,
        "ErrorMessage":"",
        "Signature":"fyQz3Cda8xTPOOd9VcS7YowqLDNLBYaTy9kaFFCzQkY=",
        "Id":"104",
        "TransactionNumber":1,
        "RegistrationDate":"31.11.2015 07:59",
        "LastTransactionDate":"31.11.2015 07:59"
    }
}
                

В случае неуспешного выполнения операции будет возвращен ответ с кодом ошибки(см Приложение "Типы ошибок") и сообщением в чем заключается проблема

Получить список доступных счетов [/account/list]

Данный метод отвечает за получение списка счетов

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


{
    "request":{
        "Signature":"NW6a97+G/N5mWasOOlsdcLm5QswDRz/fNUzMvqg4nkM=",
        "Login":"admin@molot.ru"
    }
}           
                                

Как получить Signature(API-ключ 9DRQ3EcGP4ovAdzr):

C#

Javascript

Java


// Собираем строку из аргументов для подписи
string s =  "/account/list" + "{\"request\":{\"Login\":\"admin@molot.ru\"}}" + "9DRQ3EcGP4ovAdzr";
// string s = "account_list;" + "9DRQ3EcGP4ovAdzr";
// Получаем хеш по алгоритму SHA-256
byte[] hash;
using (var sha256 = new SHA256Managed())
{
    hash = sha256.ComputeHash(Encoding.UTF8.GetBytes(s));
}
// Перевод строки в формат Base64
string signature = Convert.ToBase64String(hash);
//В итоге получаем значение signature равное NW6a97+G/N5mWasOOlsdcLm5QswDRz/fNUzMvqg4nkM=
                         
                

Ответ

В случае успешного выполнения метода будет возвращен стандартный ответ с ErrorCode = 0 и пустым ErrorMessage. В ответе будет содержаться список счетов. Каждый счет содержит поля

Поле Описание Тип данных
Id Идентификатор счета в сервисе Payouts Строка
Balance Баланс на счете Дробное число
Currency Валюта транзакции(см. Приложение "Справочник валют") Строка

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


{
  "response": {
    "ErrorCode": 0,
    "ErrorMessage": "",
    "Signature":"nWMQkJYGb69xraYTptED13altiqkkFIuRxmzl/jrYIs=",
    "AccountList": [
      {
        "Balance": 0,
        "Id": "1",
        "Currency": "RUB"
      }
    ],    
  }
}
                

В случае неуспешного выполнения операции будет возвращен ответ с кодом ошибки(см Приложение "Типы ошибок") и сообщением в чем заключается проблема

Получить финансовый отчет по счету за период [/report/financial]

Поле Описание Тип данных
AccountId Идентификатор счета в сервисе Payouts Строка
StartDate Начальная дата периода Строка
EndDate Конечная дата периода Строка
CompareDateType Выборка по дате создания (0), по дате исполнения (1). Необязательный параметр, если не указан то выборка по дате создания Целое число

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


{
    "request": {
        "AccountId":"1",
        "StartDate":"09.11.2016 01:00:00",
        "EndDate":"09.11.2016 02:00:00",
        "Signature":"nTMolC4CwGRsKi0N/NtTQnXEN+UiebgkMJsZJ3zTjyM=",
        "Login":"admin@molot.ru"
    }
}
                

Как получить Signature(API-ключ 9DRQ3EcGP4ovAdzr):

C#

Javascript

Java


// Собираем строку из аргументов для подписи
string s = "/report/financial" + "{\"request\":{\"Login\":\"admin@molot.ru\",\"AccountId\":\"1\",\"StartDate\":\"09.11.2016 01:00:00\",\"EndDate\":\"09.11.2016 02:00:00\"}}" + "9DRQ3EcGP4ovAdzr";
// Получаем хеш по алгоритму SHA-256
byte[] hash;
using (var sha256 = new SHA256Managed())
{
    hash = sha256.ComputeHash(Encoding.UTF8.GetBytes(s));
}
// Перевод строки в формат Base64
string signature = Convert.ToBase64String(hash);
//В итоге получаем значение signature равное nTMolC4CwGRsKi0N/NtTQnXEN+UiebgkMJsZJ3zTjyM=
                            
                

Ответ

В случае успешного выполнения метода будет возвращен стандартный ответ с ErrorCode = 0 и пустым ErrorMessage. В ответе будут содержаться следующие поля:

Поле Описание Тип данных
AccountId Идентификатор счета в сервисе Payouts Строка
BeginBalance Баланс на начало периода Дробное число
Commission Сумма комиссии, которая была удержана сервисом за период Дробное число
CompletedTransactions Исполнено заявок (списано) за период Целое число
EndBalance Баланс на конец периода Дробное число
StartDate Начальная дата периода Строка
EndDate Конечная дата периода Строка
FundsReceived Принято средств Дробное число
Refunds Возврат средств за период Дробное число
TotalRequestsNumber Принятые заявки за период Целое число
Currency Валюта транзакции(см. Приложение "Справочник валют") Строка

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


{
  "response": {
        "ErrorCode": 0,
        "ErrorMessage": null,
        "Signature": "nTMolC4CwGRsKi0N/NtTQnXEN+UiebgkMJsZJ3zTjyM=",
        "AccountId": "1",
        "BeginBalance": 11240.93,
        "Currency": "RUB",
        "TotalRequestsNumber": 0,
        "FundsReceived": 0,
        "CompletedTransactions": 23,
        "Refunds": 0,
        "Commission": 101.12,
        "EndBalance": 944.84,
        "StartDate": "09.11.2016 01:00:00",
        "EndDate": "09.11.2016 02:00:00"
   }
}
                

В случае неуспешного выполнения операции будет возвращен ответ с кодом ошибки(см Приложение "Типы ошибок") и сообщением в чем заключается проблема

Получить список транзакций за период [/report/transaction_list]

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


{
    "request": {
        "AccountId":"1",
        "StartDate":"09.11.2016 01:00:00",
        "EndDate":"09.11.2016 02:00:00",
        "Signature":"tkjadAjOxNb7+aXCeVhiDqyN8NJBo1qeHW54ZeAG1eg=",
        "Login":"admin@molot.ru"
    }
}
                

Как получить Signature(API-ключ 9DRQ3EcGP4ovAdzr):

C#

Javascript

Java


// Собираем строку из аргументов для подписи
string s = "/report/transaction_list" + "{\"request\":{\"AccountId\":\"1\",\"StartDate\":\"09.11.2016 01:00:00\",\"EndDate\":\"09.11.2016 02:00:00\",\"Login\":\"admin@molot.ru\"}}" + "9DRQ3EcGP4ovAdzr";
// string s = "1;" + "09.11.2016 01:00:00;" + "09.11.2016 02:00:00;" + "9DRQ3EcGP4ovAdzr";
// Получаем хеш по алгоритму SHA-256
byte[] hash;
using (var sha256 = new SHA256Managed())
{
    hash = sha256.ComputeHash(Encoding.UTF8.GetBytes(s));
}
// Перевод строки в формат Base64
string signature = Convert.ToBase64String(hash);
//В итоге получаем значение signature равное tkjadAjOxNb7+aXCeVhiDqyN8NJBo1qeHW54ZeAG1eg=
                            
                

Ответ

В случае успешного выполнения метода будет возвращен стандартный ответ с ErrorCode = 0 и пустым ErrorMessage. В ответе будет содержаться список транзакций, если транзакций за представленный период не будет обнаружено, то данный список будет пустым.

Поле Описание Тип данных
UserId Номер счета получаетля платежа, это может быть кошелек, банковский счет, номер телефона и т.д Строка
TypePaymentMethod Тип платежа(см. Приложение "Справочник платежных методов") Целое число
Amount Сумма транзакции Дробное число
Commission Сумма комиссии, которая была удержана сервисом Дробное число
Currency Валюта транзакции(см. Приложение "Справочник валют") Строка
TypePersonalTaxType Тип налоговой ставки(см. Приложение "Справочник налоговых ставок") Целое число
TypeTransactionStatus Статус транзакции(см. Приложение "Справочник статусов транзакции") Целое число
DateTime Дата и время последнего изменения статуса транзакции Строка
Comment Комментарий Строка

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


{
"response": {
    "ErrorCode": 0,
    "ErrorMessage": "",
    "Signature": "cusUC92mgKlX/Ise7ekXjHS+Wv93nvgg4IKtHnHqLxE=",
    "TransactionList": [
        {
            "UserId":"532100009006211",	
            "TypePaymentMethod":10,
            "Amount":5,
            "Commission":0.01,
            "Currency":"EUR",
            "TypePersonalTaxType":10,
            "TypeTransactionStatus":40,
            "DateTime":"20.11.2019 12:48:48",
            "ClientTransactionId":"81119",
            "TopupCurrency":"RUB",
            "Description":"",
            "SourceAmount":0.08,
            "ExchangeRate":69.49,
            "Comment": "Комментарий"
        } ]
    }
}
                

В случае неуспешного выполнения операции будет возвращен ответ с кодом ошибки(см Приложение "Типы ошибок") и сообщением в чем заключается проблема

Получить курс обмена по оператору [/contractor/get_exchange_rate]

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


{
    "request": {
        "Login":"1",
        "ContractorId":41, //id оператора (можно посмотреть в личном кабинете в разделе "Операторы")
        "WmCurrencyId":0, //id валюты пополнения (0-WMZ, 1-WMR, 98-WME)
        "Signature":"tkjadAjOxNb7+aXCeVhiDqyN8NJBo1qeHW54ZeAG1eg=",
        "Culture":"ru"
    }
}

Как получить Signature(API-ключ 9DRQ3EcGP4ovAdzr):

C#

Javascript

Java


    // Собираем строку из аргументов для подписи
    string s = "/contractor/get_exchange_rate" + "{\"request\":{\"ContractorId\":\"41\",\"WmCurrencyId\":\"0\",\"Culture\":\"ru\",\"Login\":\"admin@molot.ru\"}}" + "9DRQ3EcGP4ovAdzr";
    
    // Получаем хеш по алгоритму SHA-256
    byte[] hash;
    using (var sha256 = new SHA256Managed())
    {
        hash = sha256.ComputeHash(Encoding.UTF8.GetBytes(s));
    }
    // Перевод строки в формат Base64
    string signature = Convert.ToBase64String(hash);
    //В итоге получаем значение signature равное tkjadAjOxNb7+aXCeVhiDqyN8NJBo1qeHW54ZeAG1eg=

                

Ответ

В случае успешного выполнения метода будет возвращен стандартный ответ с ErrorCode = 0 и пустым ErrorMessage. В ответе будет содержаться курс обмена.

Поле Описание Тип данных
PaymentAmount Сумма для обмена. Всегда 1 Дробное число
PaymentCurrency Валюта для обмена (WMZ, WME, WMR) Строка
PriceAmount Курс обмена Дробное число
PriceCurrencyId Валюта, на которую производится обмен. Целое

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


{
    "response": {
        "ErrorCode": 0,
        "ErrorMessage": "",
        "Signature": "kyOc5XsnWmShMvwMLFetbt6Hr8TJGszu73Nn9v5/3xQ=",
        "PaymentAmount": 1,
        "PaymentCurrency":"WMZ",
        "PriceAmount": 26.03,
        "PriceCurrencyId": 980
    }
}

В случае неуспешного выполнения операции будет возвращен ответ с кодом ошибки(см Приложение "Типы ошибок") и сообщением в чем заключается проблема

Валидация номера счета [/check/account_number]

Данный метод отвечает за проверку номера счета и содержит следующие поля:
Поле Описание Тип данных Регулярное
выражение
Обязательно
Amount Сумма транзакции Дробное число
TypePaymentMethod Тип платежного метода
(типы платежных методов и их значения в Приложении)
Целое число
AccountNumber Номер счета. Это может быть номер мобильного
телефона (символ '+' обязателен), номер карты, банковский счет и тд в
зависимости от платежного метода.
Строка ^.{0,255}$

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


{
    "request": {
        "AccountNumber":"Z957527778912",
        "TypePaymentMethod":30,
        "Login":"admin@molot.ru",
        "Signature": "1jeX0OJD2k3gMMLajBbU+Ea9snjT5DPTaViPnX/j4uI="
    }
}

Как получить Signature(API-ключ 9DRQ3EcGP4ovAdzr):

C#

Javascript

Java


    // Собираем строку из аргументов для подписи
    string s = "/check/account_number" + "{\"request\":{\"AccountNumber\":\"Z957527778912\",\"TypePaymentMethod\":30,\"Login\":\"admin@molot.ru\"}}" + "9DRQ3EcGP4ovAdzr";

    // Получаем хеш по алгоритму SHA-256
    byte[] hash;
    using (var sha256 = new SHA256Managed())
    {
    hash = sha256.ComputeHash(Encoding.UTF8.GetBytes(s));
    }
    // Перевод строки в формат Base64
    string signature = Convert.ToBase64String(hash);
    //В итоге получаем значение signature равное 1jeX0OJD2k3gMMLajBbU+Ea9snjT5DPTaViPnX/j4uI=

                

Ответ

В случае успешного выполнения метода будет возвращен стандартный ответ с ErrorCode = 0 и пустым ErrorMessage. В ответе будет содержаться статус проверки.

Поле Описание Тип данных
IsValid Статус проверки Логическое

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


{
    "response": {
        "ErrorCode": 0,
        "ErrorMessage": "",
        "Signature":"Ks4AIHA7AyKC8NuYhUhv\/mePXQQkc0GZMphGDF5Pplc=",
        "IsValid":true
    }
}

В случае неуспешного выполнения операции будет возвращен ответ с кодом ошибки(см Приложение "Типы ошибок") и сообщением в чем заключается проблема

Приложение

Типы ошибок api

Наименование Значение Описание
OK 0 Операция прошла успешно
InternalError 20 Внутренняя ошибка сервиса
FailureAuthentication 30 Операция не прошла проверку подписи
InvalidLogin 40
ClientNotFound 50
SettlementAccountNotFound 60
IncorrectTransaction 70
DuplicateClientTransaction 80
DuplicateTransaction 90
TransactionNotFound 100
IncorrectTransactionStatus 110
IncorrectDateFormat 120
IncorrectCurrency 130
IncorrectAccountNumber 180
InsufficientFunds 190
RequestCountExceeded 200
CardExpired 210
InvalidRecipient 220
MultipleErrors 1005 При разборе запроса обнаружено несколько ошибок

Справочник валют (Currency)

Наименование Значение
USD USD
EUR EUR

Справочник платежных методов (TypePaymentMethod)

Наименование Значение
Карта 10
Телефон 20
WM-кошелек 30, 100 (Уточните тип у своего менеджера)
СБП 110

Справочник статусов транзакции (TypeTransactionStatus)

Наименование Значение Описание
Request 10 Заявка на платеж отправлена на исполнение
Pending 20 Состояние ожидания
Executing 30 Выполняется
Success 40 Успешно проведен
FailureCheck 50 Проверка закончилась неуспешно
Failure 60 Отказ
Dispute 90 Открыт диспут
Canceled 100 Отменена

Справочник кодов ошибок транзакции (TypeFailureCode)

Наименование Значение Описание
OK 0 OK
CommonLimitExceeded 10 Превышен общий лимит
PaymentLimitExceeded 20 Превышен лимит платежа
PaymentDayLimitExceeded 21 Превышен суточный лимит
PaymentWeekLimitExceeded 22 Превышен недельный лимит
PaymentMonthLimitExceeded 23 Превышен месячный лимит
RecipientDayLimitExceeded 24 Превышен дневной лимит для получателя
ProhibitedCountry 25 Запрещенная страна
TransactionCountLimitExceeded 30 Превышен лимит по количеству операций
InsufficientFunds 40 Недостаточно средств
IncorrectRecipientId 50 Некорректный идентификатор получателя платежа
NoComission 60 Коммиссия не найдена, либо платеж недоступен
IncorrectAmount 70 Неверная сумма платежа
AmountTooLow 80 Сумма пополнения меньше допустимой
AmountTooHigh 90 Сумма пополнения больше допустимой
IncorrectAccountNumber 100 Неверный счет зачисления
IncorrectCurrency 110 Неверная валюта пополнения
TransactionCurrencyDiffersRecipient 111 Валюта платежа не соответствует валюте кошелька получателя
NumberRefillDenied 120 Пополнение номера запрещено
Rejected 130 Платеж отклонен
RejectedByOperator 131 Запрос отклонен оператором
PurseOrWmidBlocked 132 Ограничение на стороне получателя
ServiceSuspendedWME 133 Платеж на указанный WME кошелек временно не доступен в связи с не исполненными требованиями WME Гаранта
RejectedByCompilance 134 Отклонен по соответсвию
OperatorNotAvailable 140 Оператор не доступен
NoPaymentOwner 150 Владелец платежа не найден
InvalidEmoneyAccount 170 Клиент должен содержать провайдер выплат. Обратитесь в службу поддержки.
IncorrectParameters 180 Неверные параметры
RecipientPurseNotFound 181 Кошелек получателя не найден.
PaymentToAccountNotAvailable 182 Платеж на указанные реквизиты не доступен.
PaymentRejectedByTechnicalReasons 183 Операция отклонена по техническим причинам. Попробуйте повторить попытку.
PaymentMethodNotAvailable 184 Payment method is not available
Other 500 Другая причина
SystemError 1000 Системная ошибка
OtherResolved 1001 Другая причина

Типы поведения api (ApiBehavior)

Наименование Значение Описание
Legacy 10 Возврат ошибки в случае дублирования успешной транзакции.
При переотправке неуспешной транзакции, ClientTransactionId неуспешной транзакции перезаписывается в формате ClientTransactionId-TransactionId
Idempotent 20 Идемпотентность по ClientTransactionId

Типы фильтра получателя платежа (UserInfoIdentity)

Наименование Значение
ByCard 10
ByMobile 20
ByWmPurse 30

Пример реестра

.xls .csv