WebMoney Report API MinAllowedDate

MinAllowedDate - Минимально допустимая дата сервиса при создании плановых и одноразовых отчетов

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

  • URL для передачи запроса:
    https://report.wmtransfer.com/api/v1/report.asmx/MinAllowedDate 
  • метод – POST
  • accept types: text/json
  • формат запроса:
    {"Login":"","Wmid":"","Culture":"","Signature":""}
    

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

  • URL для передачи запроса:
    https://report.wmtransfer.com/api/v1/report.asmx/MinAllowedDate 
  • метод – POST
  • accept types: text/xml
  • формат запроса:
    <Request>
      <Login></Login>
      <Wmid></Wmid>
      <Culture></Culture>
      <Signature></Signature>
    </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
  • формат ответа (JSON):
    {"Code":0,"Desc":"Success","Value":{"Date":""}}
    
  • формат ответа (XML):
    <Response>
      <Code></Code>
      <Desc></Desc>
      <Value>
        <Date></Date>
      </Value>
    </Response>
    
  • параметры ответа:
    Название Назначение Примечание
    Code Код состояния или ошибки 0 - запрос выполнен успешно (остальные значения в таблице код выполнения запроса)
    Desc Текстовое описание состояния или ошибки "Строка от 0 до 255 символов, кодировка win-1251"
    Value Результат Содержит ответ в зависимости от метода вызова
    Date Минимальная дата Содержит строку. Формат: YYYYMMDD, где YYYY – число года, MM – число месяца, DD – число дня
  • код выполнения запроса:
    код возврата описание
    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 RequestMinAllowedDate  = new { Login = login, Wmid = wmid, Culture = culture, Signature = HashToBase64(String.Format("{0};{1};{2};{3}", login, password, culture, wmid)) };

    string Response = ReportHandler("MinAllowedDate", ForceJson(RequestMinAllowedDate));

    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