Przejdź do nawigacji

Java Szybki start

Java Szybki start: Agent Java SDK integracja v0.3.0, przykłady, parametry i semantyka odpowiedzi.

Zobacz jako Markdown

Ten przewodnik jest przeznaczony dla Agent Java SDK v0.3.0, Java 8+ i oznaczonych zamówień publicznych. Zainicjuj client, korzystając z kroków instalacji i konfiguracji opisanych na tej stronie; uruchom przykłady w zapleczu partnera.

Przykładowe wymagania wstępne

Fragmenty Java dzielą ten import. Zainicjuj client za pomocą Szybki start i uzyskaj platformUserId z zapisanego powiązania. Przykładowe identyfikatory użytkowników/zamówień należy zastąpić własnymi, utrwalonymi wartościami.

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

Współrzędne Mavena

Aktualne współrzędne źródła:

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

GitHub to hosting źródeł, a nie repozytorium zależności Maven. Jeśli SDK nie nie został jeszcze opublikowany w repozytorium Maven, zainstaluj go w lokalnym Mavenie najpierw repozytorium:

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

Po instalacji lokalnej Twój projekt biznesowy może zostać rozwiązany com.sixmm.exchange.sdk:agent:0.3.0 z lokalnego repozytorium Mavena.

W przypadku kompilacji zespołowych i środowisk testowych opublikuj SDK w repozytorium Maven takie jak Nexus, Artifactory, GitHub Packages, Maven Central lub skorzystaj z GitHub oparta na usłudze kompilacji, taka jak JitPack.

Aby zapoznać się z istniejącą integracją, zobacz SDK przewodnik aktualizacji. Użyj stabilnego znacznika źródłowego v0.3.0, aby zainstalować SDK i przeczytaj odpowiednią dokumentację integracji.

Inicjalizacja klienta

Zwykły 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());

Wiosenne buty

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

Przykładowe właściwości aplikacji:

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

Powiąż użytkownika

Bind tworzy lub pobiera relację pomiędzy użytkownikiem-partnerem a 6MM użytkownik platformy. Wywołaj go, gdy użytkownik po raz pierwszy wejdzie w przepływ transakcji lub przed pierwszy przelew do 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);

Pola żądania:

PoleTypWymaganyOpis
agentUserIdstringTakUnikalny identyfikator użytkownika po stronie partnera
usernamestringNIENazwa wyświetlana po stronie partnera używana jako pseudonim użytkownika platformy
extstringNIEPole rozszerzenia. Zalecany jest ciąg JSON.

Pola odpowiedzi:

PoleTypOpis
platformUserIdstring6MM identyfikator użytkownika zewnętrznego
bindStatusstringZwykle BOUND
isSimulatedUserbooleanCzy jest to symulowany użytkownik

Zalecane przepływy biznesowe

Pierwsze wejście handlowe

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.

Wpłata do 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.

Wycofaj się do partnera

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.

Źródło i powiązane przewodniki

Obsługa błędów

SDK wyjątki są podzielone na dwie kategorie:

WyjątekScenariuszSugerowana obsługa
AgentApiExceptionHTTP status nie jest 2xx lub odpowiedź agenta code != 0Przeczytaj getHttpStatus(), getCode() i getResponseBody() i potraktuj to jako porażkę biznesową/API
AgentSdkExceptionBłąd sieci, serializacji, konfiguracji lub podpisywaniaZaloguj go i potraktuj jako wyjątek systemowy

Przykład:

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

Odbierz Webhooks

Wszystkie cztery typy zdarzeń mają wspólne skonfigurowane wywołanie zwrotne sprzedawcy URL; wysyłka przez organ event. Sprawdź oryginalnie odebrane bajty, a następnie sprawdź okno czasowe, sprzedawcę i środowisko. Zwróć HTTP 2xx dopiero po zatwierdzeniu danych biznesowych i pomyślnych zapisach deduplikacji lub niezawodnym zapisaniu trwałego zadania.

Zdarzenia i ostrzeżenia o likwidacji · Weryfikacja podpisu, odpowiedzi i ponowne próby