Для разработчиков

В этом разделе вы найдете всю необходимую документацию по сервису Escrow, описание API и веб-сервиса.


Описание сущностей

Объект ExtUserInfo

ExternalId
ID пользователя
Deposit
сумма депозита
Phone
мобильный телефон пользователя
Purse
кошелек пользователя
Agree
флаг: пользователь согласен с условиями сделки и оплатил залог (если нужно)
IsDepositPaid
флаг: пользователь оплатил залог
Accepted
флаг: пользователь согласен с условиями сделки
Canceled
флаг: пользователь не согласен с условиями сделки
InvoiceId
номер счета
TranId
номер транзакции при оплате залога

Объект UserInfo

Id
ID пользователя
ServiceId
ID сервиса
Locale
локаль
Created
дата создания

Объект UserProfileInfo

Id
ID пользователя
Tags
теги

Объект OfferInfo

Id
ID оферты
ServiceId
ID сервиса
CategoryId
ID категории
Description
описание
Tags
теги
Count
количество
CountMeasure
размерность
CurrencyId
валюта
Amount
сумма сделки
AmountCurrencyId
валюта
DealType
тип оферты
DepositToSeller
флаг: признак оплаты залогом
Duration
длительность
DurationToContract
время на создание предложения
DurationToDeal
время на создание сделки
Seller
объект ExtUserInfo
Buyer
объект ExtUserInfo
Status
статус
Created
дата создания оферты

Объект ContractInfo

Id
ID предложения
ServiceId
ID сервиса
VersionId
версия предложения
UserId
ID пользователя
Description
описание
Tags
теги
Amount
сумма сделки
AmountCurrencyId
валюта
Count
количество
CountMeasure
размерность
CurrencyId
валюта
DurationToDeal
время для создания сделки
Duration
длительность
DepositToSeller
флаг: признак оплаты залогом
Seller
объект ExtUserInfo
Buyer
объект ExtUserInfo
Comiss
комиссия
Status
статус
Seller
объект ExtUserInfo
Buyer
объект ExtUserInfo
Comiss
комиссия
Status
статус
Created
дата создания предложения
Modified
дата изменения предложения

Объект DealInfo

Id
ID сделки
ServiceId
ID сервиса
ContractId
ID предложения
Description
описание
Tags
теги
Amount
сумма сделки
AmountCurrencyId
валюта
Count
количество
CountMeasure
размерность
CurrencyId
валюта
Duration
длительность сделки
DepositToSeller
флаг: признак оплаты залогом
Seller
объект ExtUserInfo
Buyer
объект ExtUserInfo
Comiss
комиссия
Status
статус
StatusOld
старый статус
Created
дата создания сделки
Modified
дата изменения сделки
CanCreateСlaim
флаг: возможность написать претензию в арбитраж
CanCreateLawsuit
флаг: возможность написать иск в арбитражю

Объект OfferUserInfo

OfferId
ID оферты
UserId
ID пользователя
ExternalUserId
ID пользователя во внешней системе
Purse
кошелек пользователя
Phone
мобильный телефон пользователя
Count
количество

Способ формирования поля Hash

Поле hash формируется следующим образом:

serviceId + userId + serviceSecretKey

полученная строка кодируется методом SHA1

Примеры использования

Продавец или Покупатель создает предложение пользователю из своего списка контактов в WebMoney. Вызывается метод веб-сервиса ContractCreate

ContractCreate(serviceId, userId, amount, amountCurrencyId, seller, buyer, currencyId, description, count, duration,
	durationToDeal, depositToSeller, hash, out contractId);

serviceId           - ID сервиса
userId              - ID пользователя
amount              - сумма предложения
amountCurrencyId    - валюта
seller              - класс ExtUserInfo описывающий параметры продавца
buyer               - класс ExtUserInfo описывающий параметры покупателя
currencyId          - валюта
description         - описание предложения
count               - кол-во
duration            - длительность
durationToDeal      - время для заключения сделки
depositToSeller     - флаг: оплата будет произведена залогом
hash                - строка подписи

out contractId      - ID созданного предложения

Условия предложения сохраняются на сервисе, второй стороне отправляется уведомление о предложении заключить Escrow-сделку.

Вторая сторона, получив предложение, может принять условия предложения (предварительно оплатив залог). Вызывается метод веб-сервиса ContractAccept.

Оплата залога выполняется вне рамок сервиса Escrow.

ContractAccept(serviceId, userId, contractId, purse, tranId, hash);

serviceId           - ID сервиса
userId              - ID пользователя
contractId          - ID предложения
purse               - кошелек, платежные реквизиты
tranId              - ID транзакции, по которой произошла оплата залога
hash                - строка подписи

Кроме соглашения с условиями предложения пользователь может отказаться от него. Вызывается метод веб-сервиса ContractCancel.

ContractCancel(serviceId, userId, contractId, hash);

serviceId           - ID сервиса
userId              - ID пользователя
hash                - строка подписи

Если условия предложения будут приняты, то создается сделка. Сделка создается автоматически, после соглашения второй стороны.

На протяжении срока сделки, сервис ожидает подтверждения от обоих участников о завершении сделки, либо о нарушении ее условий.

В случае если сторона согласна с выполнением условий сделки вызывается метод веб-сервиса DealSuccess.

DealSuccess(serviceId, userId, dealId, hash);

serviceId           - ID сервиса
userId              - ID пользователя
userId              - ID сделки
hash                - строка подписи

В случае если сторона не согласна с выполнением условий сделки вызывается метод веб-сервиса DealCancel.

DealCancel(serviceId, userId, dealId, hash);

serviceId           - ID сервиса
userId              - ID пользователя
dealId              - ID сделки
hash                - строка подписи

Если от обеих сторон получено подтверждение о успешном завершении сделки — средства, внесенные в качестве гарантийной оплаты, возвращаются участникам.

Если стороны обоюдно решили отменить сделку — средства, внесенные в качестве гарантийной оплаты, также возвращаются участникам.

В случае, если одна из сторон сообщила о выполнении условий сделки, а другая сторона заявила о нарушении ее условий — сделка считается «спорной».

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

Для подачи иска вызывается метод веб-сервиса ArbitrageCreateClaim.

ArbitrageCreateClaim(serviceId, userId, dealId, hash, out claimUrl)

serviceId           - ID сервиса
userId              - ID пользователя
dealId              - ID сделки
hash                - строка подписи

out claimUrl        - ссылка на иск в Арбитраже

По результатам рассмотрения иска Арбитражом залоги обоих участников переводятся выигравшей стороне (за исключением комиссии Арбитража).