Skip to navigation

Java Bắt đầu nhanh

Java Bắt đầu nhanh: Agent Java SDK tích hợp v0.3.0, ví dụ, tham số và ngữ nghĩa phản hồi.

View as Markdown

Hướng dẫn này hướng tới Agent Java SDK v0.3.0, Java 8+ và hợp đồng công khai được gắn thẻ. Khởi tạo client bằng cách sử dụng các bước cài đặt và cấu hình trên trang này; chạy các ví dụ trong phần phụ trợ của đối tác.

Điều kiện tiên quyết mẫu

Đoạn mã Java chia sẻ những nội dung nhập này. Khởi tạo client bằng cách sử dụng Bắt đầu nhanh và lấy platformUserId từ liên kết đã lưu. ID người dùng/đơn đặt hàng mẫu phải được thay thế bằng các giá trị cố định của riêng bạn.

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

Tọa độ Maven

Tọa độ nguồn hiện tại:

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

GitHub là nguồn lưu trữ chứ không phải kho lưu trữ phụ thuộc Maven. Nếu SDK không có đã được xuất bản lên kho lưu trữ Maven, hãy cài đặt nó vào Maven cục bộ của bạn kho lưu trữ đầu tiên:

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

Sau khi cài đặt cục bộ, dự án kinh doanh của bạn có thể giải quyết com.sixmm.exchange.sdk:agent:0.3.0 từ kho lưu trữ Maven cục bộ.

Đối với môi trường thử nghiệm và xây dựng nhóm, hãy xuất bản SDK lên kho lưu trữ Maven chẳng hạn như Nexus, Artifactory, Gói GitHub, Maven Central hoặc sử dụng GitHub dịch vụ xây dựng dựa trên như JitPack.

Để biết về sự tích hợp hiện có, hãy xem SDK hướng dẫn nâng cấp. Sử dụng thẻ nguồn v0.3.0 ổn định để cài đặt SDK và đọc tài liệu tích hợp phù hợp với nó.

Khởi tạo ứng dụng khách

Đồng bằng 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());

Khởi động mùa xuân

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());
}
}

Thuộc tính ứng dụng ví dụ:

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

Ràng buộc người dùng

Bind tạo hoặc tìm nạp mối quan hệ giữa người dùng đối tác và 6MM người dùng nền tảng. Gọi nó khi người dùng lần đầu tiên tham gia vào luồng giao dịch hoặc trước khi lần chuyển đầu tiên vào 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);

Các trường yêu cầu:

Cánh đồngKiểuYêu cầuSự miêu tả
agentUserIdstringĐúngID người dùng phía đối tác duy nhất
usernamestringKHÔNGTên hiển thị phía đối tác được sử dụng làm biệt hiệu của người dùng nền tảng
extstringKHÔNGTrường mở rộng. Nên sử dụng chuỗi JSON

Các trường phản hồi:

Cánh đồngKiểuSự miêu tả
platformUserIdstring6MM ID người dùng bên ngoài
bindStatusstringThông thường BOUND
isSimulatedUserbooleanĐây có phải là người dùng mô phỏng hay không

Luồng kinh doanh được đề xuất

Mục giao dịch đầu tiên

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.

Gửi tiền vào 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.

Rút lại cho đối tác

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.

Nguồn và hướng dẫn liên quan

Xử lý lỗi

SDK ngoại lệ được chia thành hai loại:

Ngoại lệKịch bảnĐề xuất xử lý
AgentApiExceptionTrạng thái HTTP không phải là 2xx hoặc phản hồi của Đại lý code != 0Đọc getHttpStatus(), getCode() và getResponseBody() và coi đó là lỗi kinh doanh/API
AgentSdkExceptionLỗi mạng, tuần tự hóa, cấu hình hoặc ký kếtGhi nhật ký và coi nó như một ngoại lệ của hệ thống

Ví dụ:

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

Nhận Webhooks

Tất cả bốn loại sự kiện đều có chung lệnh gọi lại người bán đã định cấu hình URL; được cơ quan gửi đi event. Xác minh số byte nhận được ban đầu, sau đó kiểm tra khoảng thời gian, người bán và môi trường. Chỉ trả về HTTP 2xx sau khi xác nhận dữ liệu kinh doanh và bản ghi chống trùng lặp thành công hoặc lưu một tác vụ liên tục một cách đáng tin cậy.

Sự kiện và cảnh báo thanh lý · Xác minh chữ ký, phản hồi và thử lại