Функции кредитного сервиса
При подключении нужно получить serviceId и secretKey.
Вебсервис находится по адресу : https://debtservice.webmoney.ru/ws/creditservicews.asmx
Сервис предназначен для работы крупных проектов с большой аудиторией (например, социальные сети).
Для получения доступа к сервису напишите письмо на all@wmtransfer.com
Добавить кредитную линию
Функция создает или модифицирует кредитную линию со следующими параметрами:
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),
где
имеет формат public class PercentDataExchange
{
int PercentModuleId;
public List<PercentKeyValue> Data;
}
где:
Функция возвращает код ошибки: см. приложение, и 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 )
<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 )
Функция возвращает код ошибки: см. приложение
Получить кредит
Функция получает кредит по открытой кредитной линии
public int ObtainCredit( int serviceId, string toUser, int creditLineId, decimal amount, int duration, string hash, out int creditId )
Функция возвращает код ошибки: см. приложение
Подтвердить получение кредита
Функция подтверждает кредит со стороны открывшего кредитную линию участника, если кредитная линия с подтверждением.
public int ApproveCredit( int serviceId, string fromUser, int creditId, bool approve, string hash )
Функция возвращает код ошибки: см. приложение
Вернуть кредит
Функция возвращает кредит полностью или частично
public int ReturnCredit( int serviceId, string user, int creditId, decimal amount, string hash )
Функция возвращает код ошибки: см. приложение
Вернуть кредит досрочно
Функция инициирует возврат кредита кредитодателем досрочно без взимания процентов.
В случае если у кредитополучателя средств для возврата нет, то производится попытка перекредитования по другим открытым линиям на него, но с учетом что процентные условия не хуже текущих. Если перекредитоваться не удается, то постоянно производятся попытки снять средства и если они появляются то сразу возвращаются.
public int RequestReturnCredit( int serviceId, string fromUser, int creditId, string hash )
Функция возвращает код ошибки: см. приложение
Список кредитов
Функция получает список кредитов. Можно получить список кредитов выданных участником или список кредитов полученных участником. Также возможна фильтрация по статусу кредита. Список возвращается постранично, со страницей не более 50 записей
public int GetCredits( int serviceId, string fromUser, string toUser, int status, int pageNum, int pageSize, string hash, out CreditExt 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 )
<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 )
<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 )
Функция возвращает код ошибки: см. приложение
Получение списка долгов для участников открывших кредитные линии и для участников для которых открыты кредитные линии указанным участником
Функция получает список участников и количество долгов для указанного участника.
public int GetUsersDebtUsingCreditLines( int serviceId, string fromUser, string hash, out List<UserDebtInfoExt> 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 )
Функция возвращает код ошибки: см. приложение
Прочитать метаданные
public int GetMetaData( int serviceId, string user, string key, string hash, out List<UserDataInfoExt> 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 // не получено подтверждение
}
статусы можно комбинировать операцией ИЛИ