WebMoney
Регистрация

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

В этом разделе вы найдете всю необходимую документацию по сервису 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        - ссылка на иск в Арбитраже

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


В своей работе можно использовать хелпер.