Общая информация
Адрес 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
С чего начать
- Отправьте заявку на получения доступа к сервису, логина для личного кабинета и секретного ключа.
- Интегрируйте метод расчета подписи запросов к API сервиса Payouts
- Наши специалисты расскажут как пополнить счет для осуществления операций выплат.
- Создайте новую транзакцию, используя соответствующий метод или загружайте реестр в личном кабинете.
- Интегрируйте другие методы, доступные в API сервиса Payouts для проверки статуса операции, получения отчетов и актуального баланса на счетах.
Организационные и технические вопросы направляйте вашему менеджеру в Payouts на почту merchant.support@webmoney.com.
Формирование запросов
Каждый запрос обязательно содержит поле Login и Signature. Login это имя пользователя в сервисе Payouts.
Пример запроса, в котором определены обязательные поля
{
"request": {
"Login":"admin@molot.ru",
"Signature":"Y4mab0rwOLXedtLfUf7AwIMhdGitxUkkX2+0BimWazg="
}
}
Signature это подпись запроса. Она состоит из трех частей
- url метода
- формализованное тело запроса (удаляются переносы строк, лишние пробелы и знаки табуляции)
- секретный клиентский ключ
Пример: Мы хотим вызывать /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
Части строки для подписи:
- /transaction/new - url метода
- {"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 - клиентский ключ
И от этой строки получают хеш по алгоритму 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
Части строки для подписи:
- /transaction/new - url метода
- {"response":{"ErrorCode":0,"ErrorMessage":""}} - формализованное тело запроса
- 9DRQ3EcGP4ovAdzr - клиентский ключ