WebMoney Report API SingleSelect

Метод SingleSelect- Список созданных заявок на формирование одноразовых отчетов

Параметры обращения в формате Json:

  • URL для передачи запроса:
    https://report.wmtransfer.com/api/v1/report.asmx/SingleSelect
  • метод – POST
  • accept types: text/json
  • формат запроса:
    {"Login":"","Wmid":"","Culture":"","Signature":"","Job":{"Single":{"Report":{"Id":"0","Purse":"","Type":0,"Delivery":0,"Format":2,"Method":1}}}}
    

Параметры обращения в формате Xml:

  • URL для передачи запроса:
    https://report.wmtransfer.com/api/v1/report.asmx/SingleSelect
  • метод – POST
  • accept types: text/xml
  • формат запроса:
    <Request>
    <Login></Login>
    <Wmid></Wmid>
    <Culture></Culture>
    <Signature></Signature>
    <Job>
       <Single>
         <Report>
            <Id></Id>
            <Purse></Purse>
             <Type>0</Type>
             <Delivery>0</Delivery>
             <Format>2</Format>
             <Method>1</Method>
        </Report>
      </Single>
    </Job>
    </Request> 
    
  • параметры запроса:
    Название Назначение Примечание
    Login Логин Получен на странице доступа к API и используется для подписи запросов к сервису WebMoney Report API
    Password Пароль Получен на странице доступа к API и используется для подписи запросов к сервису WebMoney Report API
    Wmid WMID WM идентификатор при работе с сервисом WebMoney Report API
    Culture Язык запроса Определяет язык сообщения. (ru-RU, en-US)
    Signature Подпись запроса Формируется из параметров: Login+ ';' + Password+ ';' + Culture+ ';' + Wmid + ';' + Id + ';' + Purse + ';' + Type+ ';' + Delivery+ ';' + Format+ ";" + Method
    Job Секция задания Применяется для создания запроса
    Single Секция разовых отчетов Применяется для создания параметров запроса
    Report Секция параметров отчета Применяется для создания отчетов согласно параметров
    Id Номер отчета Содержит целое десятичное число по раннее созданному заданию. При отсутствии номера отчета задается 0
    Purse Кошелек Содержит строку 13 символов
    Type Тип отчета Содержит значения: 0 - баланс и операции, 1 - только баланс. При отсутствии Purse и Id равным 0, будут отобраны все отчеты относительно данного критерия
    Delivery Тип доставки Содержит значения: 0 - через интернет, 1 - по почте и через интернет (платно). При отсутствии Purse и Id равным 0, будут отобраны все отчеты относительно данного критерия
    Format Формат отчета Содержит значения: 0 - HTML, 1 - PDF, 2 - CSV. При отсутствии Purse и Id равным 0, будут отобраны все отчеты относительно данного критерия
    Method Способ доставки Содержит значения: 0 - e-mail, 1 - files.webmoney.ru. При отсутствии Purse и Id равным 0, будут отобраны все отчеты относительно данного критерия
  • формат ответа (JSON):
    {"Code":0,"Desc":"","Value":
    [{"Id":0,"Purse":"","Type":0,"Delivery":0,"Format":2,"Method":1,"Begin":"","End":"","State":2,"Num":0},...,
    {"Id":0,"Purse":"","Type":0,"Delivery":0,"Format":2,"Method":1,"Begin":"","End":"","State":2,"Num":0}]}
    
  • формат ответа (XML):
    <Response>
    <Code></Code>
    <Desc></Desc>
    <Value><Id></Id><Purse></Purse><Type>0</Type><Delivery>0</Delivery><Format>2</Format><Method>1</Method><Begin></Begin><End></End><State>2</State><Num>0</Num></Value>
    ...,
    <Value><Id></Id><Purse></Purse><Type>0</Type><Delivery>0</Delivery><Format>2</Format><Method>1</Method><Begin></Begin><End></End><State>2</State><Num>0</Num></Value>
    </Response> 
    
  • параметры ответа:
    Название Назначение Примечание
    Code Код состояния или ошибки 0 - запрос выполнен успешно (остальные значения в таблице код выполнения запроса)
    Desc Текстовое описание состояния или ошибки "Строка от 0 до 255 символов, кодировка win-1251"
    Value Результат Содержит ответ в зависимости от метода вызова
    Id Номер отчета Содержит целое десятичное число
    Purse Кошелек Содержит строку 13 символов
    Type Тип отчета Содержит значения: 0 - баланс и операции, 1 - только баланс
    Delivery Тип доставки Содержит значения: 0 - через интернет, 1 - по почте и через интернет (платно)
    Format Формат отчета Содержит значения: 0 - HTML, 1 - PDF, 2 - CSV
    Method Способ доставки Содержит значения: 0 - e-mail, 1 - files.webmoney.ru
  • код выполнения запроса:
    код возврата описание
    0 Запрос выполнен успешно
    1 Запрос ранее принят и находится в обработке
    2 Запрос ранее обработан
    3 Список отчетов согласно критериев запроса пуст
    -1 Вызов веб сервиса завершился ошибкой
    -2 Пользователь не аутентифицирован
    -3 Доступ закрыт
    -4 Подпись запроса сформирована не верно
    -5 Не корректная дата
    -6 Неизвестная ошибка
    -7 Неверный аргумент (передан хотя бы один некорректный аргумент)
    -8 Сервис временно не доступен
    -9 Доступ запрещен
    -10 Ошибочные аргументы запроса
    -11 Ошибочные кошелек
    -12 Кошелек не принадлежит WmId при работе с сервисом WebMoney Report API
    -13 Ошибочные тип отчета
    -14 Ошибочные тип доставки отчета
    -15 Ошибочные формат отчета
    -16 Ошибочные формат доставки отчета
    -17 Некорректная дата начала запроса
    -18 Некорректная дата конца запроса
    -19 Некорректный временной интервал запроса
    -20 Ошибочная операция
    -21 Некорректный временной интервал
    -22 Задание не создано. Обратитесь позже
  • пример C#:
    protected string Login= "Получить на странице доступа к API";
    protected string Password = ""Получить на странице доступа к API";
    protected string Culture ="ru-RU";

    var RequestSingleSelect  = new { Login = login, Wmid = wmid, Culture = culture, Signature = HashToBase64(String.Format("{0};{1};{2};{3}", login, password, culture, wmid)),  
                                                        Job= new { Single = new {  Report = new  { Id = id, Purse = purse , Type = type, Delivery = delivery, Format = format, Method= method } }
                                                      };

    string Response = ReportHandler("SingleSelect", ForceJson(RequestSingleSelect));

    public string ReportHandler(string method, string json)
    {
      Stream receiveStream = null;
      Stream requestStream = null;
      StreamReader readStream = null;
      StringWriter swXml = null;
      HttpWebResponse response = null;
      try
      {
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url + method);

        if (Proxy.Length > 0)
        {
          request.Proxy = new WebProxy(Proxy, true);
          request.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
          request.PreAuthenticate = true;
        }
        request.Method = "POST";
        request.ContentType = "application/x-www-form-urlencoded";
        request.Accept = "text/json";
        byte[] body = Encoding.UTF8.GetBytes( Server.UrlEncode(json));
        request.ContentLength = body.Length;

        requestStream = request.GetRequestStream();
        requestStream.Write(body, 0, body.Length);
        requestStream.Close();

        using ( response = (HttpWebResponse)request.GetResponse())
        {
          receiveStream = response.GetResponseStream();
          using (swXml = new StringWriter())
          {
            using (readStream = new StreamReader(receiveStream, Encoding.UTF8))
            {
              swXml.Write(readStream.ReadToEnd());
            }
            return (swXml.GetStringBuilder().ToString());
          }
        }
      }
      catch (WebException we)
      {
        return string.Empty;
      }
      finally {
        if (requestStream != null) requestStream.Close();
        if (receiveStream != null) receiveStream.Close();
        if (readStream != null) readStream.Close();
        if (swXml != null) swXml.Close();
        if ( response != null )  response.Close();
      }
    }

    static public string ForceJson(object res)
    {
        JavaScriptSerializer js = new JavaScriptSerializer();
        return ( js.Serialize(res) ); 
    }

     static public byte[] Hash(string plainString, Encoding encoding)
    {
      if (plainString == null)
        throw new ArgumentNullException("plainString");

      if (encoding == null)
        encoding = Encoding.UTF8;

      return Hash(encoding.GetBytes(plainString));
    }

    static public byte[] Hash(byte[] bytes)
    {
      if (bytes == null)
        throw new ArgumentNullException("bytes");
      using (SHA256 algorithm = new SHA256Managed())
      {
        byte[] hashBytes = algorithm.ComputeHash(bytes);
        return hashBytes;
      }
    }

    public string HashToBase64(string plainString, Encoding encoding)
    {
      if (plainString == null) throw new ArgumentNullException("plainString");
      return Convert.ToBase64String(Hash(plainString, encoding));
    }
  
* Пример использования интерфейса: JavaScript