Для разработчиков
В этом разделе вы найдете всю необходимую документацию по сервису 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 - ссылка на иск в Арбитраже
По результатам рассмотрения иска Арбитражом залоги обоих участников переводятся выигравшей стороне (за исключением комиссии Арбитража).