WebMoney

Wiki

Кредитный вебсервис

Функции кредитного сервиса

При подключении нужно получить serviceId и secretKey.

Вебсервис находится по адресу : https://debtservice.webmoney.ru/ws/creditservicews.asmx

Сервис предназначен для работы крупных проектов с большой аудиторией (например, социальные сети).

Для получения доступа к сервису напишите письмо на

Добавить кредитную линию

Функция создает или модифицирует кредитную линию со следующими параметрами:

public int AddCreditLine(int serviceId, string fromUser, string toUser, decimal amount, PercentDataExchange percentData, int currency, int visibility, int creditMode, int payMode, string hash, out int creditLineId),
где
  • serviceId - Id сервиса;
  • fromUser - Id участника открывающего кредит;
  • toUser - Id участника для которого открывается кредит;
  • amount - Максимальная сумма кредита;
  • percentData - Информация о типе взимания %, их значения и сроки кредита(в днях);

имеет формат public class PercentDataExchange

 
{
int PercentModuleId;
public List<PercentKeyValue> Data;
}
где:
  • PercentModuleId - id процентного модуля (1-Без процентов, 2-С процентами,
  • Data список значений вида “duration”=срок кредита в днях, “percent”=проценты в день
  • currency - Валюта в которой открывается кредит (во внутренних единицах сервиса) (wmz–0, wmr–1, wme-98, wmu-80)
  • visibility - Видимость кредитной линии. Используется на усмотрение вызывающего сервиса
  • creditMode - 1 - всегда, 2 - всегда, но не для перекредитования, 3 - с подтверждением payMode - 1
  • hash - Хеш SHA1 следующий строки: serviceId + fromUser + toUser + amount + currency + secretKey (amount вида '0.00')

Функция возвращает код ошибки: см. приложение, и creditLineId - номер открытой кредитной линии

Пример заполнения структуры PercentDataExchange:

List<PercentKeyValue> pp = new List<PercentKeyValue>();
pp.Add( new PercentKeyValue
{
Key = "duration",
Value = 200
} );
pp.Add( new PercentKeyValue
{
Key = "percent",
Value = 0.4
} );
PercentDataExchange pdata = new PercentDataExchange
{
PercentModuleId = 2,
Data = pp.ToArray()
};

Проценты указываются дневные, проценты на проценты не считаются, срок кредитной линии указывается в днях.

Получить список открытых кредитных линий

Функция возвращается список открытых кредитных линий

public int GetCreditLines( int serviceId, string fromUser, string toUser, string hash, out List<CreditLineExt> result )

  • serviceId - Id сервиса
  • fromUser - Id участника открывшего кредит
  • toUser - Id участника для которого открыт кредит
  • hash - Хеш SHA1 следующий строки: serviceId + fromUser + toUser + secretKey
  • result - список открытых кредитных линий
      <result>
        <CreditLineExt>
          <CreditLineId>*int*</CreditLineId>
          <FromUser>*string*</FromUser>
          <ToUser>*string*</ToUser>
          <Amount>*decimal*</Amount>
          <CurrencyId>*int*</CurrencyId>
          <Percent>
            <PercentModuleId>*int*</PercentModuleId>
            <Data xsi:nil="true" />
          </Percent>
          <Visibility>*int*</Visibility>
          <CreditMode>*int*</CreditMode>
          <PayMode>*int*</PayMode>
          <CreateDate>*dateTime*</CreateDate>
          <AmountInUse>*decimal*</AmountInUse>
        </CreditLineExt>
        <CreditLineExt>
          <CreditLineId>*int*</CreditLineId>
          <FromUser>*string*</FromUser>
          <ToUser>*string*</ToUser>
          <Amount>*decimal*</Amount>
          <CurrencyId>*int*</CurrencyId> 
          <Percent>
            <PercentModuleId>*int*</PercentModuleId>
            <Data xsi:nil="true" />
          </Percent>
          <Visibility>*int*</Visibility>
          <CreditMode>*int*</CreditMode>
          <PayMode>*int*</PayMode>
          <CreateDate>*dateTime*</CreateDate>
          <AmountInUse>*decimal*</AmountInUse>
        </CreditLineExt>
      </result>

Функция возвращает код ошибки: см. приложение

Удалить кредитную линию

Функция удаляет кредитную линию. Это может сделать либо создатель либо тот кому она открыта. Удалить можно неиспользуемую линию и используемую, в этом случае ее не будет видно, но кредиты взятые по ней будут обрабатываться.

public int RemoveCreditLine( int serviceId, string fromUser, int creditLineId, string hash )

  • serviceId - Id сервиса
  • fromUser - Id участника открывшего кредит или Id участника получателя
  • creditLineId - Id кредитной линии
  • hash - Хеш SHA1 следующий строки: serviceId + fromUser + creditLineId + secretKey

Функция возвращает код ошибки: см. приложение

Получить кредит

Функция получает кредит по открытой кредитной линии

public int ObtainCredit( int serviceId, string toUser, int creditLineId, decimal amount, int duration, string hash, out int creditId )

  • serviceId - Id сервиса
  • toUser - Id участника для которого получается кредит
  • creditLineId - Id кредитной линии
  • amount - сумма кредита
  • duration - срок на который берется кредит(в днях)
  • hash - Хеш SHA1 следующий строки: serviceId + toUser + creditLineId + amount + duration + secretKey (amount вида '0.00')
  • creditId - номер созданного кредита

Функция возвращает код ошибки: см. приложение

Подтвердить получение кредита

Функция подтверждает кредит со стороны открывшего кредитную линию участника, если кредитная линия с подтверждением.

public int ApproveCredit( int serviceId, string fromUser, int creditId, bool approve, string hash )

  • serviceId - Id сервиса
  • fromUser - Id участника который дает кредит
  • creditId - Id кредита
  • approve - подтверждается или нет кредит
  • hash - Хеш SHA1 следующий строки: serviceId + fromUser + creditId + secretKey

Функция возвращает код ошибки: см. приложение

Вернуть кредит

Функция возвращает кредит полностью или частично

public int ReturnCredit( int serviceId, string user, int creditId, decimal amount, string hash )

  • serviceId - Id сервиса
  • user - Id участника который возвращает кредит
  • creditId - Id кредита
  • amount - сумма возврата
  • hash - Хеш SHA1 следующий строки: serviceId + user + creditId + amount + secretKey (amount вида '0.00')

Функция возвращает код ошибки: см. приложение

Вернуть кредит досрочно

Функция инициирует возврат кредита кредитодателем досрочно без взимания процентов.

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

public int RequestReturnCredit( int serviceId, string fromUser, int creditId, string hash )

  • serviceId - Id сервиса
  • fromUser - Id участника который требует возврат
  • creditId - Id кредита
  • hash - Хеш SHA1 следующий строки: serviceId + fromUser + creditId + secretKey

Функция возвращает код ошибки: см. приложение

Список кредитов

Функция получает список кредитов. Можно получить список кредитов выданных участником или список кредитов полученных участником. Также возможна фильтрация по статусу кредита. Список возвращается постранично, со страницей не более 50 записей

public int GetCredits( int serviceId, string fromUser, string toUser, int status, int pageNum, int pageSize, string hash, out CreditExt result )

  • serviceId - Id сервиса
  • fromUser - Id участника открывшего кредит
  • toUser - Id участника для которого открыт кредит
  • status – комбинированный статус кредита (см. приложение)
  • pageNum - номер страницы (начинается с 1)
  • pageSize - размер страницы(не больше 50)
  • hash - Хеш SHA1 следующий строки: serviceId + fromUser + toUser + secretKey
  • result - список кредитов (содержит параметры для постраничного разбиения и список кредитов
      <result>
        <Pager>
          <PageSize>*int*</PageSize>
          <PageNumber>*int*</PageNumber>
          <PageCount>*int*</PageCount>
          <TotalCount>*int*</TotalCount>
        </Pager>
        <Credits>
          <CreditInfoExt>
            <CreditId>*int*</CreditId>
            <FromUser>*string*</FromUser>
            <ToUser>*string*</ToUser>
            <CreateDate>*dateTime*</CreateDate>
            <Percent xsi:nil="true" />
            <Amount>*decimal*</Amount>
            <CurrencyId>*int*</CurrencyId>
            <Duration>*int*</Duration>
            <AmountToReturnNow>*decimal*</AmountToReturnNow>
            <AmountToReturnTotal>*decimal*</AmountToReturnTotal>
            <Status>*int*</Status>
          </CreditInfoExt>
          <CreditInfoExt>
            <CreditId>*int*</CreditId>
            <FromUser>*string*</FromUser>
            <ToUser>*string*</ToUser>
            <CreateDate>*dateTime*</CreateDate>
            <Percent xsi:nil="true" />
            <Amount>*decimal*</Amount>
            <CurrencyId>*int*</CurrencyId>
            <Duration>*int*</Duration>
            <AmountToReturnNow>*decimal*</AmountToReturnNow>
            <AmountToReturnTotal>*decimal*</AmountToReturnTotal>
            <Status>*int*</Status>
          </CreditInfoExt>
        </Credits>
      </result>

Функция возвращает код ошибки: см. приложение

Если указать только fromUser возвращается кредиты выданные fromUser. Если указать только toUser то возвращаются кредиты полученные toUser. Если указаны оба параметра то возвращаются кредиты выданные fromUser для toUser.

Детали кредита

Функция получает информацию по кредиту, включая историю платежей.

public int GetCreditDetails( int serviceId, string toUser, int creditId, string hash, out CreditDetailExt result )

  • serviceId - Id сервиса
  • toUser - Id участника получившего кредит
  • creditId - Id кредита
  • hash - Хеш SHA1 следующий строки: serviceId + toUser + creditId + secretKey
  • result - детали кредита
      <result>
        <CreditInfo>
          <CreditId>*int*</CreditId>
          <FromUser>*string*</FromUser>
          <ToUser>*string*</ToUser>
          <CreateDate>*dateTime*</CreateDate>
          <Percent>
            <PercentModuleId>*int*</PercentModuleId>
            <Data xsi:nil="true" />
          </Percent>
          <Amount>*decimal*</Amount>
          <CurrencyId>*int*</CurrencyId>
          <Duration>*int*</Duration>
          <AmountToReturnNow>*decimal*</AmountToReturnNow>
          <AmountToReturnTotal>*decimal*</AmountToReturnTotal>
          <Status>*int*</Status>
        </CreditInfo>
        <CreditDetails>
          <CreditPayExt>
            <PayDate>*dateTime*</PayDate>
            <Amount>*decimal*</Amount>
          </CreditPayExt>
          <CreditPayExt>
            <PayDate>*dateTime*</PayDate>
            <Amount>*decimal*</Amount>
          </CreditPayExt>
        </CreditDetails>
      </result>

Функция возвращает код ошибки: см. приложение

Информация по участнику

Функция получает рейтинг участника

public int GetUserInfo( int serviceId, string user, string hash, out UserInfoExt result )

  • serviceId - Id сервиса
  • user - Id участника
  • hash - Хеш SHA1 следующий строки: serviceId + user + secretKey
  • result - детали участника
      <result>
        <User>*string*</User>
        <TrustLevel>*int*</TrustLevel>
        <ReliableLevel>*double*</ReliableLevel>
        <ExpiredCount>*int*</ExpiredCount>
        <Summary>
          <UserInfoSummaryExt>
            <CurrencyId>*int*</CurrencyId>
            <AmountAvailableToGet>*decimal*</AmountAvailableToGet>
            <AmountToReturn>*decimal*</AmountToReturn>
            <AmountFromCredit>*decimal*</AmountFromCredit>
          </UserInfoSummaryExt>
          <UserInfoSummaryExt>
            <CurrencyId>*int*</CurrencyId>
            <AmountAvailableToGet>*decimal*</AmountAvailableToGet>
            <AmountToReturn>*decimal*</AmountToReturn>
            <AmountFromCredit>*decimal*</AmountFromCredit>
          </UserInfoSummaryExt>
        </Summary>
      </result>

Функция возвращает код ошибки: см. приложение

Top участников

Функция получает список участников с наибольшим рейтингом

public int GetUsersTop( int serviceId, int topCount, string hash, out List<UserInfoExt> result )

  • serviceId - Id сервиса
  • topCount - количество участников
  • hash - Хеш SHA1 следующий строки: serviceId + topCount + secretKey
  • result - список участников (заполнены только id участника и TrustLevel), структура описана в функции GetUserInfo

Функция возвращает код ошибки: см. приложение

Получение списка долгов для участников открывших кредитные линии и для участников для которых открыты кредитные линии указанным участником

Функция получает список участников и количество долгов для указанного участника.

public int GetUsersDebtUsingCreditLines( int serviceId, string fromUser, string hash, out List<UserDebtInfoExt> result )

  • serviceId - Id сервиса
  • fromUser - участник
  • hash - Хеш SHA1 следующий строки: serviceId + fromUser + secretKey
  • result - список участников и количество долгов
      <result>
        <UserDebtInfoExt>
          <User>*string*</User>
          <DebtCount>*int*</DebtCount>
        </UserDebtInfoExt>
        <UserDebtInfoExt>
          <User>*string*</User>
          <DebtCount>*int*</DebtCount>
        </UserDebtInfoExt>
      </result>

Функция возвращает код ошибки: см. приложение

Функции для работы с метаданными

Записать метаданные

public int SetMetaData( int serviceId, string user, string key, string value, string hash )

  • serviceId - Id сервиса
  • user - участник (может быть пустым)
  • key - ключ
  • value - значение(если пустое то ключ удаляется)
  • hash - Хеш SHA1 следующий строки: serviceId + user + key + value

Функция возвращает код ошибки: см. приложение

Прочитать метаданные

public int GetMetaData( int serviceId, string user, string key, string hash, out List<UserDataInfoExt> result )

  • serviceId - Id сервиса
  • user - участник (может быть пустым)
  • key - ключ (может содержать , например param - вернутся все ключи начинающиеся с param)
  • hash - Хеш SHA1 следующий строки: serviceId + user + key
  • result - мета данные
      <result>
        <UserDataInfoExt>
          <User>*string*</User>
          <Key>*string*</Key>
          <Value>*string*</Value>
        </UserDataInfoExt>
        <UserDataInfoExt>
          <User>*string*</User>
          <Key>*string*</Key>
          <Value>*string*</Value>
        </UserDataInfoExt>
      </result>

Функция возвращает код ошибки: см. приложение

Приложение

Коды ошибок

public enum ResultCodes

{
Ok = 0,
InvalidParameter = 1,
InvalidHash = 2,
InvalidCurrency = 3,
InvalidPercentType = 4
AmountTooBig = 5
DurationTooBig = 6
NotEnoughMoney = 7
NoPurse = 8
Error = 100,
PayModuleError = 110,
InternalError = 500
}

Статусы кредитов

public enum CreditStatus

{
Active = 1,
Completed = 2,
Debtor = 4, // должник
DebtorCompleted = 8, // должник, но все взыскали
ReturnRequest = 0x10,
ReturnRequestCompleted = 0x20,
WaitApprove = 0x40, // ожидается подтерждение
NotApproved = 0x80 // не получено подтверждение
}

статусы можно комбинировать операцией ИЛИ