> ## Documentation Index
> Fetch the complete documentation index at: https://whalescorp.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Интеграции обменников

В приложении Tonhub реализованы два варианта обмена криптовалют:

* [**Changelly**](https://changelly.com) — обмен через централизованный партнерский сервис Changelly.
* [**DeDust**](https://dedust.io) — swap через сайт [DeDust.io](http://DeDust.io) во встроенном WebView с использованием [TON Connect](https://docs.ton.org/develop/dapps/ton-connect/overview).

# Общая схема доступа

* **Экран "Exchange" / "Swap":** с главного экрана или из раздела продуктов пользователь может перейти к выбору способа обмена. При выборе **"Exchanges"** открывается экран выбора партнера: [**DeDust.io**](http://DeDust.io) и [**Changelly**](https://changelly.com).
* **DeDust:** по нажатию открывается фрагмент с WebView на [**https://tonhub.dedust.io/**](https://tonhub.dedust.io/), где интеграция построена через [TON Connect](https://docs.ton.org/develop/dapps/ton-connect/overview). Доступен только для **обычных кошельков**; если пользователь работает через [**Ledger**](https://www.ledger.com), опция DeDust в списке обменов не показывается.
* **Changelly:** по нажатию открывается **нативный сценарий обмена**, то есть выбор валюты получения, затем валюты отправки, затем ввод суммы, создание ордера и экран ордера с адресом для депозита. Дополнительно приложение предоставляет [**виджет Changelly**](https://widget.changelly.com), который открывается на отдельном экране во WebView на [widget.changelly.com](http://widget.changelly.com). Changelly доступен и для обычных кошельков, и для [Ledger](https://www.ledger.com).

# Интеграция Changelly

[**Changelly**](https://changelly.com) — это партнерский сервис обмена криптовалют. Пользователь задает валютную пару, то есть что он отправляет и что хочет получить, а также сумму; затем получает адрес для депозита, и после поступления средств выполняется обмен в выбранную валюту. В Tonhub интеграция реализована через виджет, то есть страницу [Changelly](https://changelly.com) во WebView.

## Процесс обмена

* Через **"Exchanges"** → выбор "[Changelly](https://changelly.com)" → открывается отдельный экран с WebView на [widget.changelly.com](http://widget.changelly.com) в режиме **Swap**, где пользователь сначала выбирает актив, который хочет **получить**.
* На экране Swap пользователь выбирает одну из валют: [TON](https://ton.org), [USDT](https://tether.to), то есть `usdton`, [SOL](https://solana.com), [USDC](https://www.centre.io/usdc) в сети Solana. После выбора открывается список валют **отправки**, то есть `ChangellyListFragment` — перечень валют, которые [Changelly](https://changelly.com) поддерживает для обмена в выбранную валюту. Затем следует этап расчета, где вводится сумма, показывается оценка, комиссии и создается транзакция через backend Tonhub API. После создания пользователь переходит на экран ордера, то есть `ChangellyOrderFragment`: там отображаются адрес депозита, сумма, курс и статус. Пользователь отправляет средства на указанный адрес, а приложение может периодически опрашивать статус ордера через resolve и показывать обновления.
* **Виджет:** отдельный экран `ChangellyFragment` открывает [**https://widget.changelly.com**](https://widget.changelly.com) с параметрами, например `fromDefault: ton`, `toDefault: usdton`, `merchant_id`, `v: 3`. Перед первым открытием пользователь принимает [условия и политику Changelly](https://changelly.com/terms-of-use), и этот флаг сохраняется локально. Виджет доступен только в mainnet; в testnet показывается сообщение, что сервис работает только в mainnet.

## API и backend

Все запросы к [Changelly](https://changelly.com) идут через backend Tonhub, то есть [connect.tonhubapi.com](http://connect.tonhubapi.com), а не напрямую к [Changelly API](https://docs.changelly.com):

* **GET `/changelly/currencies?currencyTo=`** — список валют, которые можно обменять на выбранную валюту, например `USD`, `SOL`, `USDC`. В ответе возвращается массив валют с полями ticker, name, image, blockchain, network и другими.
* **POST `/changelly/estimate`** — оценка обмена. Тело запроса: `{ toCurrency, fromCurrency, amount }`. В ответе приходят сумма к получению, комиссии, курс и лимиты, то есть min и max. Приложение проверяет лимиты и показывает ошибку при их превышении, например `ChangellyLimitError`.
* **POST `/changelly/transaction/create`** — создание обменного ордера. В теле передаются `fromCurrency`, `toCurrency`, `network`, `amount`, `idempotencyKey`, `wallet`, то есть адрес кошелька пользователя. В ответе возвращаются данные ордера: `payinAddress`, `payoutAddress`, `amountExpectedFrom`, `amountExpectedTo`, `networkFee`, `status` и другие поля. После создания ордера в mainnet может дополнительно отправляться аналитическое событие, например в [Maestra](https://maestra.ai).
* **POST `/changelly/transaction/details`** — получение деталей ордера по идентификатору.
* **POST `/changelly/transaction/resolve`** — обновление и разрешение статуса ордера, например после того как пользователь отправил депозит.
* **POST `/changelly/transactions`** — список обменных транзакций пользователя, где в тело запроса передаются адрес и другие параметры.

В ордере пользователь видит **payinAddress**, то есть адрес, на который нужно отправить исходную валюту, срок жизни ордера `expiresAt` и статусы: `new`, `waiting`, `confirming`, `exchanging`, `sending`, `finished`, `failed`, `refunded`, `hold`, `expired`, `overdue`, `resolved`. После отправки средств приложение периодически обновляет статус и показывает результат при успешном завершении.

# Интеграция DeDust

[**DeDust**](https://dedust.io) — это децентрализованная биржа, то есть DEX, и интерфейс для свопов в [сети TON](https://ton.org), включая обмен TON и токенов. В Tonhub интеграция реализована через открытие партнерской страницы [DeDust](https://dedust.io) во WebView с подстановкой параметров кошелька и использованием [TON Connect](https://docs.ton.org/develop/dapps/ton-connect/overview) для подписи транзакций. Вся логика swap, включая выбор пары, расчеты и отправку транзакций, выполняется на стороне [сайта DeDust](https://dedust.io), а приложение лишь предоставляет кошелек и bridge.

## Доступ к DeDust

* Через **"Exchanges"** → выбор "[DeDust.io](http://DeDust.io)" → открывается `DedustFragment`. DeDust отображается в списке обменов только если кошелек не [Ledger](https://www.ledger.com); при работе через Ledger опция скрыта.
* Открывается страница [**https://tonhub.dedust.io/**](https://tonhub.dedust.io/) с подставленными query-параметрами:
  * **address** — текущий адрес [TON](https://ton.org)-кошелька, bounceable или non-bounceable в зависимости от пользовательской настройки;
  * **utm\_source**, **utm\_content**, **ref** — `tonhub`, `extension`, `tonhub`;
  * **lang** — текущий язык приложения;
  * **currency** — выбранная пользователем основная валюта для показа эквивалентов;
  * **themeStyle** — `light` или `dark` в соответствии с темой приложения;
  * **pushNotifications** — `true` или `false` в зависимости от разрешения на push-уведомления.

Во WebView внедряется bridge, совместимый с [TON Connect](https://docs.ton.org/develop/dapps/ton-connect/overview), через `tonhubBridgeSource + injectionEngine`: страница [DeDust](https://dedust.io) может вызывать `connect`, `sendTransaction`, `signData` и другие методы, а запросы обрабатываются приложением, где пользователь подтверждает операции в Tonhub. Благодаря этому swap выполняется на стороне [DeDust](https://dedust.io), но подпись транзакций остается внутри Tonhub.

## Юридические документы

При первом открытии [DeDust](https://dedust.io) показывается экран подтверждения условий, то есть `ConfirmLegal`: с заголовком, описанием и ссылками на [условия использования и политику конфиденциальности DeDust](https://tonhub.dedust.io/docs/). После принятия флаг сохраняется локально, то есть по ключу `skipLegalDeDust`, и при следующих запусках WebView открывается сразу.

# Полезные ссылки

**Changelly**

* Виджет: [https://widget.changelly.com](https://widget.changelly.com)
* Условия использования: [https://changelly.com/terms-of-use](https://changelly.com/terms-of-use)
* Политика конфиденциальности: [https://changelly.com/privacy-policy](https://changelly.com/privacy-policy)
* Отслеживание транзакций: [https://changelly.com/track/](https://changelly.com/track/)

**DeDust**

* Страница интеграции Tonhub: [https://tonhub.dedust.io/](https://tonhub.dedust.io/)
* Условия использования: [https://tonhub.dedust.io/docs/term-of-use.pdf](https://tonhub.dedust.io/docs/term-of-use.pdf)
* Политика конфиденциальности: [https://tonhub.dedust.io/docs/privacy.pdf](https://tonhub.dedust.io/docs/privacy.pdf)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.