Перейти к навигации

Java Быстрый старт

Java Быстрый старт: интеграция с Agent Java SDK v0.3.0, примеры, параметры и семантика ответов.

Просмотр в формате Markdown

Это руководство предназначено для Agent Java SDK v0.3.0, Java 8+ и помеченного публичного контракта. Инициализируйте client с помощью шагов по установке и настройке, описанных на этой странице; запустите примеры в серверной части партнера.

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

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

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

Координаты Maven

Текущие координаты источника:

<dependency>
<groupId>com.sixmm.exchange.sdk</groupId>
<artifactId>agent</artifactId>
<version>0.3.0</version>
</dependency>

GitHub — это хостинг исходного кода, а не репозиторий зависимостей Maven. Если SDK не уже опубликован в репозитории Maven, установите его в свой локальный Maven сначала репозиторий:

git clone https://github.com/6mm-com/agent-java-sdk.git
cd agent-java-sdk
git checkout v0.3.0
mvn install

После локальной установки ваш бизнес-проект может решить com.sixmm.exchange.sdk:agent:0.3.0 из локального репозитория Maven.

Для групповых сборок и тестовых сред опубликуйте SDK в репозитории Maven. например Nexus, Artifactory, пакеты GitHub, Maven Central или используйте GitHub. сервис сборки, такой как JitPack.

Информацию о существующей интеграции см. SDK руководство по обновлению. Используйте стабильный тег исходного кода v0.3.0 для установки SDK и прочтите соответствующую документацию по интеграции.

Инициализация клиента

Обычный Java

import com.sixmm.agent.AgentClient;
import com.sixmm.agent.AgentClientConfig;
AgentClient client = new AgentClient(AgentClientConfig.builder()
.baseUrl("https://agent-api.6mm.com")
.agentCode("AGENT001")
.apiSecret("your-api-secret")
.defaultCurrency("USDT")
.build());

Весенние ботинки

import com.sixmm.agent.AgentClient;
import com.sixmm.agent.AgentClientConfig;
import java.time.Duration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class AgentSdkConfig {
@Bean
public AgentClient agentClient(AgentSdkProperties props) {
return new AgentClient(AgentClientConfig.builder()
.baseUrl(props.getBaseUrl())
.agentCode(props.getAgentCode())
.apiSecret(props.getApiSecret())
.defaultCurrency("USDT")
.timeout(Duration.ofSeconds(10))
.build());
}
}

Пример свойств приложения:

agent.sdk.base-url=https://agent-api.6mm.com
agent.sdk.agent-code=AGENT001
agent.sdk.api-secret=${AGENT_API_SECRET}

Привязать пользователя

Bind создает или извлекает связь между пользователем-партнером и 6MM пользователь платформы. Вызовите его, когда пользователь впервые входит в торговый процесс или перед первый перенос в 6MM.

import com.sixmm.agent.model.BindRequest;
import com.sixmm.agent.model.BindResponse;
BindResponse resp = client.bind(
BindRequest.of("agent-user-001")
.withUsername("alice")
.withExt("{\"source\":\"web\"}"));
System.out.println(resp.platformUserId);
System.out.println(resp.bindStatus);
System.out.println(resp.isSimulatedUser);

Поля запроса:

ПолеТипНеобходимыйОписание
agentUserIdstringДаУникальный идентификатор пользователя на стороне партнера
usernamestringНетОтображаемое имя на стороне партнера, используемое в качестве псевдонима пользователя платформы.
extstringНетПоле расширения. Рекомендуется строка JSON

Поля ответа:

ПолеТипОписание
platformUserIdstring6MM идентификатор внешнего пользователя
bindStatusstringОбычно BOUND
isSimulatedUserbooleanЯвляется ли это симулированным пользователем

Рекомендуемые бизнес-потоки

Первая торговая запись

1. User logs in to the partner site.
2. Partner backend calls bind with agentUserId.
3. Partner stores the agentUserId and platformUserId relationship.
4. User clicks the trading entry.
5. Redirect mode: call createEntryUrl and open webUrl in the browser.
6. Embed mode: Trading Widget calls tokenProvider, and partner backend calls createEmbedToken.

Внести депозит в 6MM

1. Partner creates a unique agentOrderNo.
2. Partner calls transfer(Direction.IN).
3. If SUCCESS is returned, mark the local order as successful.
4. If PROCESSING is returned, wait for webhook or poll queryOrder.
5. If FAILED is returned or AgentApiException is thrown, handle it as failed.

Вывод обратно к партнеру

1. Partner creates a unique agentOrderNo.
2. Fixed amount withdraw: call transfer(Direction.OUT).
3. Full withdraw: call transferAllOut.
4. Confirm the final result by orderStatus, webhook, or queryOrder.

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

Обработка ошибок

Исключения SDK делятся на две категории:

ИсключениеСценарийРекомендуемое обращение
AgentApiExceptionСтатус HTTP не 2xx, или ответ агента code != 0Прочтите getHttpStatus(), getCode() и getResponseBody() и рассматривайте это как бизнес/API неудачу.
AgentSdkExceptionОшибка сети, сериализации, конфигурации или подписи.Зарегистрируйте это и рассматривайте как системное исключение.

Пример:

import com.sixmm.agent.AgentApiException;
import com.sixmm.agent.AgentSdkException;
try {
TransferResponse resp = client.transfer(TransferRequest.fixed(
"AGT-ORDER-1001", "agent-user-001", Direction.IN, "USDT", "10.00"));
// Update the local order according to resp.orderStatus.
} catch (AgentApiException e) {
// Business rejection or HTTP error.
log.warn("6mm agent api rejected request, httpStatus={}, code={}, body={}",
e.getHttpStatus(), e.getCode(), e.getResponseBody());
} catch (AgentSdkException e) {
// Local SDK error or network error.
log.error("6mm agent sdk request failed", e);
}

Получите Webhooks

Все четыре типа событий используют настроенный обратный вызов продавца URL; отправка телом event. Проверьте исходные полученные байты, затем проверьте временное окно, продавца и среду. Возвращайте HTTP 2xx только после фиксации бизнес-данных и успешных записей дедупликации или надежного сохранения постоянной задачи.

Предупреждения о событиях и ликвидации · Проверка подписи, ответы и повторные попытки