> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.6mm.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.6mm.com/_mcp/server.

# Кошелек для финансирования

Это руководство предназначено для **Agent Java SDK `v0.3.0`**, Java 8+ и помеченного публичного контракта. Примеры выполняются в серверной части партнера после инициализации `client` в [Быстрый старт](/ru/sdk/agent-sdk/java/quick-start).

## Пример предварительных условий

Фрагменты Java разделяют этот импорт. Инициализируйте `client` с помощью быстрого запуска и получите `platformUserId` из сохраненной привязки. Примеры идентификаторов пользователей/заказов необходимо заменить вашими собственными сохраненными значениями.

```java
import com.sixmm.agent.*;
import com.sixmm.agent.model.*;
import java.util.*;
```

## Запросы и переводы кошелька

### Различаем три кошелька

| кошелек                                       | Источник баланса                        | использовать                                                        |
| --------------------------------------------- | --------------------------------------- | ------------------------------------------------------------------- |
| Собственный пользовательский кошелек продавца | Собственная система учета торговца      | Доступный баланс пользователя на стороне продавца                   |
| Финансирование платформы                      | `queryUserAssets` из `funding`          | Торговые фонды Seconds и взаимный перевод «Финансирование/Контракт» |
| Платформенный контракт                        | Поле актива контракта `queryUserAssets` | Маржа по бессрочному контракту и переводной баланс                  |

`queryAccount` Запросите маржинальный счет торговой платформы, а не кошелек пользователя продавца. Этот интерфейс не имеет параметров `environment` и не может быть запрошен как имитируемый пользовательский актив.

Запросите два кошелька платформы симулированных пользователей:

```java
QueryUserAssetsResponse assets = client.queryUserAssets(
        QueryUserAssetsRequest.of(platformUserId)
                .withFunding()
                .withEnvironment(ExecutionEnvironment.SIMULATED));
```

Интерфейс: `POST /v1/agent/query-user-assets`. Финансирование запрашивается только тогда, когда `includeFunding=true`; по умолчанию используется исходная семантика запроса актива контракта.

| поля ответа                                                                         | значение                                                                                                                |
| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| `walletBalance`, `availableBalance`, `frozenMargin`, `usedMargin`, `isolatedMargin` | Суммы, связанные с контрактным кошельком                                                                                |
| `funding.assetCode`                                                                 | В настоящее время USDT                                                                                                  |
| `funding.availableAmount`, `heldAmount`, `totalAmount`                              | Доступное финансирование, занятость и общая сумма                                                                       |
| `funding.materialized`                                                              | Был ли счет финансирования материализован?                                                                              |
| `environment`                                                                       | Это поле отображается, когда среда передается явно; старые запросы, в которых не указана среда, не возвращают это поле. |
| `isSimulatedUser`                                                                   | Классификация счетов; не может заменить выбор торговой среды                                                            |

Суммы обрабатываются как строки или `BigDecimal`, а не `float`/`double`.

### Направления перевода средств

Создайте: `POST /v1/agent/wallet-transfer`, SDK `walletTransfer`.

| `direction`           | Поток средств                                    | `transferAll`                                               |
| --------------------- | ------------------------------------------------ | ----------------------------------------------------------- |
| `PARTNER_TO_FUNDING`  | Мерчант → Финансирование платформы               | Только фиксированная сумма                                  |
| `FUNDING_TO_PARTNER`  | Финансирование платформы → Мерчант               | Только фиксированная сумма                                  |
| `FUNDING_TO_CONTRACT` | Платформа единой среды Финансирование → Контракт | Поддерживает фиксированную сумму или все выводимые средства |
| `CONTRACT_TO_FUNDING` | Платформа той же среды Контракт → Финансирование | Поддерживает фиксированную сумму или все выводимые средства |

Текущая валюта поддерживает только USDT. Фиксированная сумма должна представлять собой положительную строку длиной до 8 знаков после запятой и не может использовать экспоненциальное представление. Когда `transferAll=true`, опустите `amount` и запишите его как окончательный ответ `amount`; «все» включает только выводимые средства.

Пример: Продавец переводит 10 USDT в симулированное финансирование. Сначала сохраните бизнес-заказ и среду в системе мерчанта, а затем отправьте запрос:

```java
String fundingOrderNo = "SIM-FUNDING-20261010-000001";
WalletTransferResponse transfer = client.walletTransfer(
        WalletTransferRequest.of(fundingOrderNo, "merchant-user-001",
                "PARTNER_TO_FUNDING", "10.00000000", false)
                .withEnvironment(ExecutionEnvironment.SIMULATED));
```

Финансирование Переведите все средства, которые могут быть переведены в моделируемый Контракт:

```java
WalletTransferResponse move = client.walletTransfer(
        WalletTransferRequest.of("SIM-F2C-20261010-000001", "merchant-user-001",
                "FUNDING_TO_CONTRACT", null, true)
                .withEnvironment(ExecutionEnvironment.SIMULATED));
```

Та же операция должна продолжать использовать исходный `agentOrderNo`; разные операции и разные среды используют разные номера заказа. Изменение суммы, пользователя, направления или среды с тем же номером заказа будет отклонено. Передача финансирования/контракта может осуществляться только в той же среде, а симулированные средства не могут быть переведены в реальные средства.

### Подтверждение результата и восстановление неизвестного результата

Ответы о финансировании представлены в виде `status`, `SUCCESS`, `PROCESSING` или `FAILED`, и возвращаются `orderNo`, `direction`, `currency`, `amount`, `resultCode` и т. д. `code=0` означает лишь то, что запрос обработан успешно и вам нужно продолжать судить `status`.

| результат                                                              | Торговая обработка                                                                                                                                   |
| ---------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| `SUCCESS`                                                              | Полная локальная бухгалтерская обработка на основе фактической суммы                                                                                 |
| `PROCESSING`                                                           | Сохраните его на месте для подтверждения и проверьте исходный заказ.                                                                                 |
| HTTP Тайм-аут, сетевая ошибка, результат не может быть проанализирован | Результат считается неизвестным и запрашивается исходный заказ; его нельзя напрямую определить как сбой или создать новый заказ и повторить попытку. |
| Идентифицирован `FAILED`                                               | Освободите локальное резервирование в соответствии с явным результатом отказа; создать новый бизнес-заказ, когда бизнес необходимо снова начать      |

Запрос на финансирование использует выделенный интерфейс `POST /v1/agent/wallet-transfer-status`:

```java
WalletTransferResponse recovered = client.queryWalletTransfer(
        WalletTransferQueryRequest.of(fundingOrderNo)
                .withEnvironment(ExecutionEnvironment.SIMULATED));
```

Используйте эту выделенную конечную точку для восстановления исходной операции финансирования; `queryOrder` не может заменить его. Сохраните исходную среду и явно передайте ее во время восстановления. Если `environment` опущено в `wallet-transfer-status`, сервер использует среду, сохраненную в исходном заказе, включая смоделированные заказы. Явно конфликтующая среда возвращает `102002` (`order environment mismatch`). Если вызывающая сторона опускает среду, в ответе также отсутствует `environment`; это не означает, что первоначальный заказ является производственным заказом.

Местные депозиты и снятие средств торговцев идемпотентны; постоянные заказы и балансы резервируются до инициации и резервируются для подтверждения, когда результат неизвестен. Доступ к финансированию использует специальный запрос для подтверждения окончательного статуса; не предполагайте, что старые методы передачи контракта Webhook или отмены автоматически применимы к Финансированию.

### Поток передачи существующего контракта

Исходные `transfer`, `transferAllOut`, `reverse`, `queryOrder`, `listOrders` продолжают обрабатывать исходный процесс передачи контракта. `queryOrder` — запрос поручений на перевод средств, `listOrders` — список сверки переводов; вместо, [Постоянные запросы](/ru/sdk/agent-sdk/java/perpetual-queries) используются для бессрочных торговых ордеров.

В исходном ответе на финансирование используется `orderStatus`; в ответе на финансирование используется `status`, не смешивайте их. Исходный перевод Webhook проверяется с помощью `X-Agent-Timestamp`, `X-Agent-Nonce`, `X-Agent-Signature`, а исходный текст подписи — `timestamp + nonce + rawBody`; исходное тело запроса сначала проверяется, затем десериализуется и становится идемпотентным. Явные уведомления моделируемой среды содержат `environment=SIMULATED`, производственные уведомления остаются совместимыми со старыми полями. Сумма, номер заказа, статус и среда должны быть проверены в местном бизнес-заказе.

## Источник и связанные руководства

* [Официальный источник v0.3.0](https://github.com/6mm-com/agent-java-sdk/tree/54aa3c1)
* [Обзор запроса и нумерация страниц](/ru/sdk/agent-sdk/java/perpetual-queries)
* [Руководство по обновлению](/ru/sdk/agent-sdk/java/upgrade)

## Поля запроса на финансирование

| Поле                           | Необходимый       | Значение                                                                                    |
| ------------------------------ | ----------------- | ------------------------------------------------------------------------------------------- |
| `agentOrderNo`                 | Да                | Глобально уникальный партнерский номер заказа; сохраняться перед отправкой.                 |
| `agentUserId / platformUserId` | Один              | Определить привязанного пользователя; если оба указаны, они должны совпадать.               |
| `direction`                    | Да                | Одно из четырех направлений, описанных выше.                                                |
| `currency`                     | По умолчанию USDT | Поддерживается только USDT.                                                                 |
| `transferAll`                  | По умолчанию ложь | Верно поддерживаются только внутренние переводы финансирования/контракта.                   |
| `amount`                       | Условный          | Положительная десятичная строка для фиксированного перевода; опустите для transferAll=true. |
| `environment`                  | Необязательный    | Производство при пропуске для новой передачи; SIMULATED выбирает моделируемые фонды.        |

## Поля ответа о финансировании

| Поле                           | Значение                                                                                                                                                |
| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `orderNo`                      | Возвращаемый идентификатор операции; сохраните вместе с исходным номером заказа партнера.                                                               |
| `status`                       | SUCCESS / PROCESSING / FAILED; определяет завершение дела.                                                                                              |
| `direction / currency`         | Подтвержденное направление перевода и актив.                                                                                                            |
| `amount`                       | Фактическая сумма перевода в виде строки.                                                                                                               |
| `transferAll`                  | Запросила ли эта операция все выводимые средства.                                                                                                       |
| `agentUserId / platformUserId` | Возвращен идентификатор пользователя; сравнить с сохраненным заказом.                                                                                   |
| `resultCode`                   | Детализация результата операции; сохраняйте для примирения и поддержки.                                                                                 |
| `environment`                  | Отображается, когда вызывающая сторона явно предоставила его; Отсутствие не является доказательством производства для запроса статуса исходного заказа. |