Skip to navigation

Java Швидкий старт

Java Швидкий початок: інтеграція Agent Java SDK v0.3.0, приклади, параметри та семантика відповіді.

View as 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 Packages, 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 поділяються на дві категорії:

ВинятокСценарійРекомендоване поводження
AgentApiExceptionHTTP статус не 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 лише після фіксації бізнес-даних і успішної дедуплікації записів або надійного збереження постійного завдання.

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