탐색으로 건너뛰기

Java 빠른 시작

Java 빠른 시작: Agent Java SDK v0.3.0 통합, 예시, 매개변수 및 응답 의미 체계.

Markdown으로 보기

이 가이드는 Agent Java SDK v0.3.0, Java 8+ 및 태그된 공개 계약을 대상으로 합니다. 이 페이지의 설치 및 구성 단계를 사용하여 client을 초기화합니다. 파트너 백엔드에서 예시를 실행하세요.

예시 전제조건

Java 조각은 이러한 가져오기를 공유합니다. 빠른 시작을 사용하여 client를 초기화하고 저장된 바인딩에서 platformUserId를 가져옵니다. 예시 사용자/주문 ID는 고유한 지속 값으로 대체되어야 합니다.

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

메이븐 좌표

현재 소스 좌표:

<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}

사용자 바인딩

바인딩은 파트너 사용자와 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예고유한 파트너측 사용자 ID
usernamestring아니요플랫폼 사용자의 닉네임으로 사용되는 파트너 측 표시 이름
extstring아니요확장 필드. JSON 문자열을 권장합니다.

응답 필드:

필드유형설명
platformUserIdstring6MM 외부 사용자 ID
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 != 0getHttpStatus(), 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 수신

4가지 이벤트 유형 모두 구성된 판매자 콜백URL 을 공유합니다. 본체 event에 의해 전달됩니다. 원래 수신된 바이트를 확인한 다음 시간 창, 판매자 및 환경을 확인하십시오. 비즈니스 데이터 및 성공적인 중복 제거 기록을 커밋하거나 영구 작업을 안정적으로 저장한 후에만 HTTP 2xx를 반환합니다.

이벤트 및 청산 경고 · 서명 확인, 응답 및 재시도