Passer à la navigation

Java Démarrage rapide

Java Démarrage rapide : intégration de Agent Java SDK v0.3.0, exemples, paramètres et sémantique de réponse.

Afficher en Markdown

Ce guide cible Agent Java SDK v0.3.0, Java 8+ et le contrat public étiqueté. Initialisez client en suivant les étapes d’installation et de configuration de cette page ; exécutez les exemples dans un backend partenaire.

Exemples de prérequis

Les extraits de code Java partagent ces importations. Initialisez client à l’aide de Quick Start et obtenez platformUserId à partir de la liaison enregistrée. Les exemples d’ID utilisateur/commande doivent être remplacés par vos propres valeurs persistantes.

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

Coordonnées Maven

Coordonnées de la source actuelle :

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

GitHub est un hébergement source, pas un référentiel de dépendances Maven. Si le SDK n’a pas n’a pas encore été publié dans un référentiel Maven, installez-le dans votre Maven local dépôt en premier :

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

Après une installation locale, votre projet d’entreprise peut être résolu com.sixmm.exchange.sdk:agent:0.3.0 depuis le référentiel Maven local.

Pour les builds d’équipe et les environnements de test, publiez le SDK dans un référentiel Maven tels que Nexus, Artifactory, GitHub Packages, Maven Central ou utilisez un GitHub service de build basé sur JitPack.

Pour une intégration existante, voir le SDK guide de mise à niveau. Utilisez la balise source stable v0.3.0 pour installer le SDK et lisez sa documentation d’intégration correspondante.

Initialisation du client

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

Botte de printemps

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

Exemple de propriétés d’application :

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

Lier l’utilisateur

Bind crée ou récupère la relation entre un utilisateur partenaire et un 6MM utilisateur de la plateforme. Appelez-le lorsqu’un utilisateur entre pour la première fois dans le flux de trading ou avant le premier transfert dans 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);

Champs de requête :

ChampTaperRequisDescription
agentUserIdstringOuiID utilisateur unique côté partenaire
usernamestringNonNom d’affichage côté partenaire utilisé comme surnom de l’utilisateur de la plateforme
extstringNonChamp d’extension. La chaîne JSON est recommandée

Champs de réponse :

ChampTaperDescription
platformUserIdstring6MM ID utilisateur externe
bindStatusstringHabituellement BOUND
isSimulatedUserbooleanS’il s’agit d’un utilisateur simulé

Flux commerciaux recommandés

Première entrée en bourse

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.

Dépôt sur 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.

Se retirer auprès du partenaire

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.

Source et guides associés

Gestion des erreurs

Les exceptions SDK sont divisées en deux catégories :

ExceptionScénarioManipulation suggérée
AgentApiExceptionL’état de HTTP n’est pas 2xx ou la réponse de l’agent code != 0Lisez getHttpStatus(), getCode() et getResponseBody() et traitez-le comme un échec commercial/API
AgentSdkExceptionÉchec du réseau, de la sérialisation, de la configuration ou de la signatureEnregistrez-le et traitez-le comme une exception système

Exemple:

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

Recevez Webhooks

Les quatre types d’événements partagent le rappel du commerçant configuré URL ; expédition par le corps event. Vérifiez les octets reçus d’origine, puis vérifiez la fenêtre horaire, le commerçant et l’environnement. Renvoyez HTTP 2xx uniquement après avoir validé les données commerciales et les enregistrements de déduplication réussis, ou enregistré de manière fiable une tâche persistante.

Événements et avertissements de liquidation · Vérification de signature, réponses et tentatives