Для разработчиков
В этом разделе вы найдете всю необходимую документацию по сервису Escrow, описание API и веб-сервиса.
- Веб-сервис
- Расширение веб-сервиса для более удобной работы с объектами
- Описание сущностей
- Примеры использования
Описание сущностей
Коды ошибок
- 0
- Операция прошла успешно
- 1
- Ошибка при формировании хэша
- 2
- Ошибка при формировании подписи
- 3
- Ошибочные параметры
- 4
- Внутренняя ошибка
- 5
- Сумма депозита должна быть больше 0.1
- 6
- Недопустимый вызов метода веб-сервиса
- 7
- Время действия оферты истекло
- 8
- Неправильный формат мобильного телефона
- 9
- Сумма сделки должна быть больше 0
- 10
- Не задано описание сделки
- 11
- Неправильный id пользователя
- 12
- Неправильный статус предложения
- 13
- Пользователь не найден
- 14
- Предложение не найдено
- 15
- Оферта не найдена
- 16
- Сделка не найдена
- 17
- Ошибка при создании оферты
- 18
- Ошибка при создании предложения
- 19
- Ошибка при создании сделки
- 20
- Ошибка при выписке счета
- 21
- Ошибка при создании пользователя
- 22
- Валюта не найдена
- 23
- Модуль оплаты не найден
- 24
- Нет средств
- 25
- Транзакция не найдена
- 26
- Неправильный статус сделки
- 27
- Модуль оплаты не был загружен
- 28
- Ошибка при создании транзакции
- 29
- Счет не найден
- 30
- Валюта сервиса не найдена
- 31
- Неправильный тип для оповещения
- 32
- Неправильный статус оферты
- 33
- Оповещение уже было отправлено
- 34
- Время действия предложения истекло
- 35
- Время действия сделки истекло
- 36
- Неправильный формат кошелька
- 37
- Кошелек не принадлежит пользователю
- 38
- Ошибка в параметрах продавца
- 39
- Ошибка в параметрах покупателя
- 40
- Неправильное значение времени действия
- 41
- Неправильное значение времени действия для заключения предложения
- 42
- Неправильное значение времени действия для создания сделки
- 43
- Неправильный тип претензии
- 44
- Продавец и покупатель должны быть разными пользователями
- 45
- Оферту нельзя обновить, т.к. на нее есть заявки
- 46
- Параметр количество больше, чем есть в наличии
- 47
- Не правильно задано количество
- 48
- Не правильно задано количество
- 49
- Нельзя подписаться на оферту дважды
- 50
- Тип кошелька не соответствует валюте
- 51
- Невозможно создать этап сделки
- 52
- Тикет просрочен
Статусы оферты
- 1
- Активная оферта
- 2
- Неактивная оферта
- 4
- Удаленная оферта
- 8
- Завершенная оферта
- 16
- Время действия оферты истекло
Статусы предложения
- 1
- Продавец согласен с условиями предложения
- 2
- Покупатель согласен с условиями предложения
- 4
- Продавец подтвердил условия предложения
- 8
- Покупатель подтвердил условия предложения
- 16
- Продавец не согласился с условиями предложения
- 32
- Покупатель не согласился с условиями предложения
- 64
- Предложение отменено
- 128
- Из предложения создана сделка
- 256
- Предложение не подтверждено продавцом
- 512
- Предложение не подтверждено покупателем
- 1024
- Предложение не отменено продавцом
- 2048
- Предложение не отменено покупателем
- 4096
- Время действия предложения истекло
- 8192
- Участники согласились с условиями, ожидается оплата залогов
Статусы сделки
- 1
- Новая сделка
- 2
- Продавец подтвердил условия сделки
- 4
- Покупатель подтвердил условия сделки
- 8
- Продавец расторг сделку
- 16
- Покупатель расторг сделку
- 32
- Сделка состоялась
- 64
- Сделка не состоялась
- 128
- Продавец не согласился с выполнением условий сделки
- 256
- Покупатель не согласился с выполнением условий сделки
- 512
- Продавец не согласился с расторжением сделки
- 1024
- Продавец не согласился с расторжением сделки
- 2048
- Время действия сделки истекло
Объект 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 - ссылка на иск в Арбитраже
По результатам рассмотрения иска Арбитражом залоги обоих участников переводятся выигравшей стороне (за исключением комиссии Арбитража).
В своей работе можно использовать хелпер.
