Saltar a la navegación

Java Inicio rápido

Java Inicio rápido: Agent Java SDK integración v0.3.0, ejemplos, parámetros y semántica de respuesta.

Ver como Markdown

Esta guía está dirigida a Agent Java SDK v0.3.0, Java 8+ y el contrato público etiquetado. Inicialice client siguiendo los pasos de instalación y configuración de esta página; Ejecute los ejemplos en un backend asociado.

Requisitos previos de ejemplo

Los fragmentos Java comparten estas importaciones. Inicialice client usando el Inicio rápido y obtenga platformUserId del enlace guardado. Los ID de usuario/pedido de ejemplo deben reemplazarse con sus propios valores persistentes.

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

Coordenadas Maven

Coordenadas de origen actuales:

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

GitHub es un alojamiento de origen, no un repositorio de dependencia de Maven. Si el SDK no lo ha hecho publicado en un repositorio de Maven todavía, instálelo en su Maven local repositorio primero:

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

Después de la instalación local, su proyecto empresarial puede resolverse com.sixmm.exchange.sdk:agent:0.3.0 del repositorio local de Maven.

Para entornos de prueba y compilaciones de equipos, publique el SDK en un repositorio de Maven. como Nexus, Artifactory, GitHub Packages, Maven Central o utilice GitHub servicio de compilación basado en JitPack.

Para una integración existente, consulte la SDK guía de actualización. Utilice la etiqueta fuente estable v0.3.0 para instalar SDK y lea la documentación de integración correspondiente.

Inicialización del cliente

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

Bota de primavera

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

Propiedades de aplicación de ejemplo:

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

Vincular usuario

Bind crea o recupera la relación entre un usuario asociado y un 6MM usuario de la plataforma. Llámelo cuando un usuario ingresa por primera vez al flujo comercial o antes del primera transferencia a 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);

Campos de solicitud:

CampoTipoRequeridoDescripción
agentUserIdstringSíID de usuario único del lado del socio
usernamestringNoNombre para mostrar del lado del socio utilizado como apodo del usuario de la plataforma
extstringNoCampo de extensión. Se recomienda la cadena JSON

Campos de respuesta:

CampoTipoDescripción
platformUserIdstring6MM ID de usuario externo
bindStatusstringGeneralmente BOUND
isSimulatedUserbooleanSi se trata de un usuario simulado

Flujos comerciales recomendados

Primera entrada comercial

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.

Depositar en 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.

Retirarse de nuevo al socio

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.

Guías fuente y relacionadas

Manejo de errores

SDK las excepciones se dividen en dos categorías:

ExcepciónGuiónManejo sugerido
AgentApiExceptionEl estado de HTTP no es 2xx, o la respuesta del agente code != 0Lea getHttpStatus(), getCode() y getResponseBody() y trátelo como un fracaso empresarial/API.
AgentSdkExceptionFallo de red, serialización, configuración o firmaRegístrelo y trátelo como una excepción del sistema.

Ejemplo:

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

Recibir Webhooks

Los cuatro tipos de eventos comparten la devolución de llamada del comerciante configurada URL; despacho por el cuerpo event. Verifique los bytes recibidos originales, luego verifique la ventana de tiempo, el comerciante y el entorno. Devuelve HTTP 2xx solo después de confirmar datos comerciales y registros de deduplicación exitosos, o guardar de manera confiable una tarea persistente.

Eventos y avisos de liquidación. · Verificación de firma, respuestas y reintentos