 |
|
Интерфейс X2. Перевод средств с одного кошелька на другой.
Этот интерфейс доступен только зарегистированным клиентам. Для регистрации перешлите по внутренней почте на WM ID 941977853154 (Техническая поддержка) краткую информацию о проекте, URL сайта, IP-адрес с которого будут отсылаться запросы, цель и способ использования интерфейса. Кипер подписывающий запросы должен иметь персональный аттестат (запросы обрабатываются до 3х раб. дней).
| URL для передачи запроса с авторизацией по ключами WM Keeper Classic |
https://w3s.webmoney.ru/asp/XMLTrans.asp |
| URL для передачи запроса с авторизацией по ключами WM Keeper Light |
https://w3s.wmtransfer.com/asp/XMLTransCert.asp |
| метод |
POST |
| формат запроса |
|
| параметры запроса |
| название |
назначение |
примечание |
| reqn |
номер запроса |
целое без знака, макс. количество цифр - 15; всегда должен быть больше номера предыдущего запроса перевод средств!!! |
| wmid |
WMId подписавшего запрос |
используется только при авторизации с ключами WM Keeper Classic |
| sign |
подпись запроса формируется из параметров: reqn + tranid + pursesrc + pursedest + amount +period + pcode + desc + wminvid |
используется только при авторизации с ключами WM Keeper Classic |
| trans |
параметры перевода |
|
| trans\tranid |
номер перевода |
номер перевода в системе учета отправителя; любое целое число без знака (целое число > 0, максимально 231-1), должно быть уникальным (два перевода с одним и тем же tranid невозможен) |
| trans\pursesrc |
номер кошелька с которого выполняется перевод (отправитель) |
|
| trans\pursedest |
номер кошелька, но который выполняется перевод (получатель) |
|
| trans\amount |
переводимая сумма |
число с плавающей точкой (разделитель - .(точка) ) и для десяти с половиной может выглядеть так: 10.5; незначащие нули в конце и точка, если число целое, должны отсутствовать, например, 10.50 - не верно, 10.5 - верно, 9. - не верно, 9 - верно) |
| trans\period |
срок протекции сделки в днях |
целое от 0 до 255 символов; 0 - без протекции |
| trans\pcode |
код протекции сделки |
произвольная строка от 0 до 255 символов; пробелы в начале или конце не допускаются |
| trans\desc |
описание оплачиваемого товара или услуги |
произвольная строка от 0 до 255 символов; пробелы в начале или конце не допускаются |
| trans\onlyauth |
учитывать разрешение получателя |
если 0 – перевод будет выполняться без учета разрешает ли получатель перевод; 1 – перевод будет выполняться только если получатель разрешает перевод (в противном случае код возврата – 35) |
| trans\wminvid |
номер счета (в системе WebMoney), по которому выполняется перевод |
целое число > 0; если 0 - перевод не по счет; максимально 231-1 |
| параметры ответа |
| название |
назначение |
примечание |
| reqn |
номер запроса |
|
| retval |
код выполнения запроса |
0 - запрос выолнен остальные коды см. ниже |
| retdesc |
расшифровка кода выполнения запроса |
|
| operation |
параметры выполненного перевода (транзакции) |
атрибут id - уникальный номер транзакции в системе учета WebMoney атрибут ts - служебный номер транзакции в системе учета WebMoney
|
| operation\tranid |
номер перевода |
номер перевода в системе учета отправителя; любое целое число без знака, должно быть уникальным (два перевода с одним и тем же tranid невозможен) |
| operation\pursesrc |
номер кошелька с которого выполняется перевод (отправитель) |
|
| operation\pursedest |
номер кошелька, на который выполняется перевод (получатель) |
|
| operation\amount |
сумма платежа |
число с плавающей точкой (разделитель - .(точка) ) и для десяти с половиной может выглядеть так: 10.5; незначащие нули в конце и точка, если число целое, должны отсутствовать, например, 10.50 - не верно, 10.5 - верно, 9. - не верно, 9 - верно) |
| operation\comiss |
комиссия за выполненный платеж |
число с плавающей точкой (разделитель - .(точка) ) и для десяти с половиной может выглядеть так: 10.5; незначащие нули в конце и точка, если число целое, должны отсутствовать, например, 10.50 - не верно, 10.5 - верно, 9. - не верно, 9 - верно) |
| operation\opertype |
тип перевода (платежа) |
0 - обычный4 - с протекцией |
| operation\period |
срок протекции сделки в днях |
целое число от 0 до 255; если 0 - платеж без протекции сделки |
| operation\wminvid |
номер счета (в системе WebMoney), по которому выполняется перевод |
целое число > 0; если 0 - перевод не по счету |
| operation\orderid |
номер счета (в системе магазина, выдавшего счет), по которому выполняется перевод |
целое число > 0; если 0 - перевод не по счету |
| operation\desc |
описание оплачиваемого товара или услуги |
|
| operation\datecrt |
дата и время выполнения операции |
|
| operation\dateupd |
дата и время последнего изменения состояния операции |
|
| код выполнения запроса |
| код |
описание |
| -100 |
общая ошибка при разборе команды. неверный формат команды. |
| -110 |
запросы отсылаются не с того IP адреса, который указан при регистрации данного интерфейса в Технической поддержке. |
| -1 |
неверное значение поля w3s.request/reqn |
| -2 |
неверное значение поля w3s.request/sign |
| -3 |
неверное значение поля w3s.request/trans/tranid |
| -4 |
неверное значение поля w3s.request/trans/pursesrc |
| -5 |
неверное значение поля w3s.request/trans/pursedest |
| -6 |
неверное значение поля w3s.request/trans/amount |
| -7 |
неверное значение поля w3s.request/trans/desc |
| -8 |
слишком длинное поле w3s.request/trans/pcode |
| -9 |
поле w3s.request/trans/pcode не должно быть пустым если w3s.request/trans/period > 0 |
| -10 |
поле w3s.request/trans/pcode должно быть пустым если w3s.request/trans/period = 0 |
| -11 |
неверное значение поля w3s.request/trans/wminvid |
| -12 |
идентификатор переданный в поле w3s.request/wmid не зарегистрирован |
| -14 |
проверка подписи не прошла |
| -15 |
неверное значение поля w3s.request/wmid |
| 102 |
не выполнено условие постояного увеличения значения параметра w3s.request/reqn |
| 103 |
трансакция с таким значением поля w3s.request/trans/tranid уже выполнялась |
| 110 |
нет доступа к интерфейсу |
| 111 |
попытка перевода с кошелька не принадлежащего WM ID, которым подписывается запрос |
| 4, 15, 19, 23 |
Внутренняя ошибка при создании трансакции |
| 5 |
Идентификатор отправителя не найден |
| 6 |
Корреспондент не найден |
| 7 |
Кошелек получателя не найден |
| 11 |
Кошелек отправителя не найден |
| 13 |
Сумма трансакции должна быть больше нуля |
| 17 |
Не достаточно денег в кошельке для выполнения операции |
| 21 |
Счет, по которму совершается оплата не найден |
| 22 |
По указанному счету оплата с протекцией не возможна |
| 25 |
Время действия оплачиваемого счета закончилось |
| 26 |
В операции должны участвовать разные кошельки |
| 29 |
Типы кошельков отличаются |
| 30 |
Кошелек не поддерживает прямой перевод |
| 35 |
Плательщик не авторизован корреспондентом для выполнения данной операции |
| 58 |
Превышен лимит средств на кошельках получателя, который использует системы Телепат(C 01.06.2008 в системе Телепат вводятся финансовые ограничения для владельцев аттестата ниже начального) |
Примечание! Значение параметра trans\amount (переводимая сумма) не может быть меньше значения, приведенного в таблице:
| тип |
минимальное значение |
| WMZ |
0.01 |
| WME |
0.01 |
| WMR |
0.01 |
| WMU |
0.01 |
| WMB |
2000 |
| WMG |
0.01 |
пример вызова интерфейса (IIS, ASP, JScript, MSXML)<%@ Language=JScript %>
<%
try
{
var AuthorizeType = 'light' // 'classic'
var url;
if ('classic'== AuthorizeType)
url = 'https://w3s.webmoney.ru/asp/XMLTrans.asp'
else
url = 'https://w3s.wmtransfer.com/asp/XMLTransCert.asp'
var pursesrc = 'R111111111111'
var pursedest = 'R222222222222'
var tranid = 89
var wminvid = 0
var amount = 1.0
var desc = 'товар'
var period = 0
var pcode = ''
var reqwmid = '111111111111'
var signstr // только для 'classic'
var reqn = (new Date()).valueOf()
if ('classic'== AuthorizeType)
{
var planstr = '' + reqn
+ tranid
+ pursesrc
+ pursedest
+ amount
+ period
+ pcode
+ desc
+ wminvid
var reqwmpwd = 'password'
var reqwmfilename = 'c:\\wmkeeperclassickeyfile.kwm'
var Signer = Server.CreateObject("WMSignerX.Signer")
Signer.Login = reqwmid
Signer.Passwd = reqwmpwd
Signer.KeyFName = reqwmfilename
signstr = Signer.SignString(planstr)
}
var s = ''
s += ''+reqn+''
if ('classic' == AuthorizeType)
{
s += ''+reqwmid+''
s += ''+signstr+''
}
s += ''
s += ' '+tranid+''
s += ' '+pursesrc+''
s += ' '+pursedest+''
s += ' '+amount+''
s += ' '+desc+''
s += ' '+pcode+''
s += ' '+period+''
s += ' '+wminvid+''
s += ''
s += ''
var xmlhttp = Server.CreateObject ("MSXML2.ServerXMLHTTP");
if ('light' == AuthorizeType)
{
xmlhttp.setOption(3, 'WM id: '+reqwmid)
}
xmlhttp.open('POST', url, false);
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlhttp.send(s);
var texttes = xmlhttp.responseText;
// Response.Write(texttes) // при отладке можно посмотреть весь ответ
var xmlres = Server.CreateObject ('Microsoft.XMLDOM');
xmlres.loadXML(texttes);
var retcode = -1
var Node = xmlres.selectSingleNode("w3s.response/retval")
if (null!=Node)
retcode = parseInt(Node.text)
if (0==retcode)
{
// получилось
}
}
catch(e)
{
Response.Write('error:'+(new Number(e.number)).toString(16)+' \r\n')
Response.Write('desc:'+e.description+'\r\n')
}
%>
|
 |