> For the complete documentation index, see [llms.txt](https://docs.iexexchanger.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.iexexchanger.com/learn/9.-sistema-i-rasshireniya/08-iexwallet.md).

# iEXWallet

Подключите iEXWallet для приёма и выплат, свяжите точные сети и проверьте подписи и повторные операции

## Что вы получите

iEXWallet подключён как отдельный мерчант для входящих платежей и, при необходимости, как отдельная автовыплата. Для каждой валюты выбраны точные актив и сеть, callback подписывается отдельным секретом, а неопределённый ответ не приводит к повторной финансовой операции.

{% hint style="warning" %}
iEXWallet не обязателен для ручного запуска обменника. Подключайте автоматизацию после ручной контрольной заявки, с рабочим публичным HTTPS-доменом кошелька, минимальной суммой и утверждённым регламентом остановки.
{% endhint %}

## Поймите границы интеграции

| Возможность        | Поддерживается                                             |
| ------------------ | ---------------------------------------------------------- |
| Приём криптовалюты | Создание и проверка депозита, адрес и memo при наличии     |
| Выплата            | Создание и проверка выплаты                                |
| Каталоги           | Активы, сети и доступные балансы                           |
| Контроль           | Расчёт сетевой комиссии, списки депозитов и выплат         |
| Webhook            | Проверка и повторная отправка события со стороны iEXWallet |

Подключение iEXWallet не включает AML-проверку, выставление счетов и конвертацию активов. Эти задачи требуют отдельных сервисов и правил.

## Подготовьте данные в iEXWallet

До открытия формы получите:

* публичный базовый HTTPS-адрес вашего iEXWallet;
* `apiId` и `apiKey` текущего публичного API;
* API secret для HMAC-подписи запросов;
* отдельный Callback secret для подписи исходящих webhook;
* список активов и сетей, которые действительно разрешены кошельком;
* контрольные адреса и минимальные суммы для проверки.

Не храните секреты в задаче, переписке, названии мерчанта или документации. Доступ к скрытым полям соединения выдаётся отдельными правами и открывается временным кодом защищённой области.

## Создайте мерчант для приёма

Откройте **«Мерчанты и API» — «Список мерчантов»**, нажмите добавление и выберите **iEXWallet**.

{% stepper %}
{% step %}

### Назовите и оставьте выключенным

Укажите понятное внутреннее название, например **«iEXWallet — приём»**. Не включайте запись до проверки соединения и привязки сети.
{% endstep %}

{% step %}

### Заполните «Соединение»

Укажите **API domain** как публичный базовый HTTPS-адрес без локального имени и закрытого IP. В **API ID** внесите `apiId`. В текущем API он совпадает с `apiKey`: поле **API Key** можно оставить пустым для наследования API ID либо заполнить тем же значением.
{% endstep %}

{% step %}

### Сохраните секреты

В **API secret** внесите секрет HMAC. В **Callback secret** укажите отдельный секрет исходящих webhook из настроек iEXWallet. Если старое подключение не имеет отдельного callback-секрета, система совместимо использует API secret, но для нового подключения разделяйте эти значения.
{% endstep %}

{% step %}

### Зарегистрируйте callback

Скопируйте точный callback URL созданного мерчанта из панели и укажите его в iEXWallet. Не собирайте адрес вручную и не убирайте защитную часть URL. Проверьте **«Тест webhook»**, а затем фактическое событие депозита.
{% endstep %}

{% step %}

### Проверьте соединение

Получите актуальные активы, сети и балансы. Ошибка TLS, подписи, времени или публичности домена должна быть устранена до включения мерчанта.
{% endstep %}
{% endstepper %}

{% hint style="danger" %}
Не используйте HTTP, `localhost`, локальный домен или частный IP для API domain. Не передавайте API secret в URL и не делайте Callback secret одинаковым с API secret только ради упрощения.
{% endhint %}

## Свяжите приём с валютой

Откройте **«Основное» — «Валюты» — «Список валют»**, выберите валюту и перейдите в **«Автоматизация» — «Мерчанты»**.

1. Выберите **«iEXWallet — приём»**.
2. Выберите точный актив и короткий код сети из загруженного каталога.
3. Сверьте сеть валюты, платёжную систему и сеть iEXWallet — это три отдельных настройки.
4. Укажите реальные лимиты суммы и количества операций.
5. Проверьте правила мерчантов направления: они могут переопределить выбор валюты.
6. Сохраните, повторно откройте форму и убедитесь, что связь не изменилась.

Для актива с memo/tag проверьте, что значение показывается клиенту, передаётся в iEXWallet и сохраняется в заявке. Не используйте сеть без поддержки обязательного memo.

## Создайте автовыплату отдельно

Откройте **«Мерчанты и API» — «Список автовыплат»** и создайте отдельную выключенную запись iEXWallet.

{% stepper %}
{% step %}

### Заполните соединение

Укажите тот же тип публичного **API domain**, API ID, необязательный API Key и **API secret**. Callback secret для записи автовыплаты не требуется.
{% endstep %}

{% step %}

### Свяжите валюту «Получаю»

В валюте откройте **«Автоматизация» — «Выплаты»**, выберите созданную запись и точную сеть из каталога iEXWallet.
{% endstep %}

{% step %}

### Ограничьте первый контур

Разрешите минимальную проверочную сумму и только одно направление. Массовую автоматическую выплату оставьте выключенной до завершения отдельной операции.
{% endstep %}
{% endstepper %}

## Проверьте приём

1. Включите мерчант только для одного направления.
2. Создайте новую заявку с минимальной разрешённой суммой.
3. Сверьте актив, сеть, адрес, memo, сумму и срок оплаты.
4. Выполните принадлежащий проекту контрольный перевод.
5. Проверьте API-лог, внешний ID и поступление callback.
6. Убедитесь, что повторный webhook не создаёт второй депозит и не меняет другую заявку.
7. Дождитесь итогового статуса, а не только регистрации операции.

## Проверьте выплату

1. Сверьте доступный баланс и ожидаемую сетевую комиссию.
2. Используйте принадлежащий проекту адрес точной сети.
3. До подтверждения сравните сумму заявки, сумму отправки и комиссию.
4. Создайте одну выплату и сохраните внешний ID.
5. Дождитесь конечного состояния через проверку операции.
6. Сверьте API-лог, адрес, memo, сеть, сумму и итоговый статус заявки.

Статус создания выплаты не доказывает перевод средств. При сетевой ошибке сначала найдите операцию по внешнему ID в iEXWallet. Не отправляйте её повторно, пока результат неизвестен.

## Проверьте защиту повторов и подпись

iEXWallet подписывает точное тело запроса и использует время запроса. Изменение тела после вычисления подписи, неверные часы сервера или перепутанный секрет приводят к отказу авторизации.

Для действий, меняющих деньги, система использует ключ повторяемости. Безопасная проверка означает:

* повторный callback с тем же событием не создаёт второй результат;
* повторное открытие страницы не запускает выплату;
* после тайм-аута оператор сначала ищет уже созданную операцию;
* **«Переотправка webhook»** повторяет доставку существующего события, а не сам перевод;
* новый финансовый запрос выполняется только после подтверждения отсутствия прежнего.

## Остановитесь при расхождении

Выключите только затронутый мерчант или автовыплату, если:

* API domain, TLS или подпись не проходят проверку;
* нужный актив либо сеть отсутствуют в актуальном каталоге;
* часы сервера расходятся и подпись отклоняется;
* callback не подтверждается или приходит с неверным секретом;
* адрес, memo, сумма либо комиссия отличаются от заявки;
* результат операции остаётся неизвестным;
* журнал показывает повтор с другим внешним ID.

## Этап завершён, если

* [ ] мерчант приёма и автовыплата созданы раздельно;
* [ ] API domain является публичным HTTPS-адресом;
* [ ] API ID, необязательный API Key, API secret и Callback secret не перепутаны;
* [ ] секреты доступны только утверждённым ролям через защищённую область;
* [ ] callback URL скопирован из панели и проверен реальным событием;
* [ ] для каждой валюты выбран точный актив и код сети;
* [ ] правила направления не переопределяют связь неожиданно;
* [ ] приём подтверждён новой заявкой;
* [ ] выплата проверена отдельно минимальной суммой;
* [ ] повтор webhook и неопределённый ответ не создают вторую денежную операцию;
* [ ] команда умеет отключить приём и выплату независимо.

После интеграции повторите [сквозную контрольную заявку](/learn/10.-zapusk/01-control-order.md) и проверьте [диагностику системы](/learn/10.-zapusk/14-system-diagnostics.md).
