Ir para a navegação

Java Início rápido

Java Início rápido: integração do Agent Java SDK v0.3.0, exemplos, parâmetros e semântica de resposta.

Ver como Markdown

Este guia é dirigido a Agent Java SDK v0.3.0, Java 8+ e ao contrato público assinalado. Inicialize client utilizando os passos de instalação e configuração nesta página; execute os exemplos num back-end de parceiro.

Pré-requisitos de exemplo

Os trechos Java partilham estas importações. Inicialize client utilizando o Quick Start e obtenha platformUserId a partir da ligação guardada. Os exemplos de IDs de utilizador/encomenda devem ser substituídos pelos seus próprios valores persistentes.

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

Coordenadas Maven

Coordenadas de origem atuais:

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

O GitHub é alojamento de origem, não um repositório de dependências do Maven. Se o SDK não tiver já foi publicado num repositório Maven, instale-o no seu Maven local repositório primeiro:

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

Após a instalação local, o seu projeto comercial pode ser resolvido com.sixmm.exchange.sdk:agent:0.3.0 do repositório Maven local.

Para compilações de pessoal e ambientes de teste, publique o SDK num repositório Maven como Nexus, Artifactory, GitHub Packs, Maven Central ou utilizar um GitHub serviço de construção baseado em JitPack.

Para uma integração existente, consulte o SDK guia de atualização. Utilize a etiqueta de origem estável v0.3.0 para instalar o SDK e leia a sua documentação de integração correspondente.

Inicialização do cliente

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

Exemplo de propriedades da aplicação:

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

Vincular utilizador

O Bind cria ou procura a relação entre um utilizador parceiro e um 6MM utilizador da plataforma. Chame-o quando um utilizador entrar pela primeira vez no fluxo de negociação ou antes do primeira transferência para 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 solicitação:

CampoTipoObrigatórioDescrição
agentUserIdstringSimID de utilizador exclusivo do parceiro
usernamestringNãoNome de visualização do parceiro utilizado como apelido do utilizador da plataforma
extstringNãoCampo de extensão. A string JSON é recomendada

Campos de resposta:

CampoTipoDescrição
platformUserIdstring6MM ID de utilizador externo
bindStatusstringGeralmente BOUND
isSimulatedUserbooleanSe este for um utilizador simulado

Fluxos de negócio recomendados

Primeira 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.

Deposite em 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.

Retirar de volta para o parceiro

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.

Fonte e guias relacionados

Tratamento de erros

As exceções SDK dividem-se em duas categorias:

ExceçãoCenárioManuseamento sugerido
AgentApiExceptionO estado HTTP não é 2xx nem a resposta do agente code != 0Leia getHttpStatus(), getCode() e getResponseBody() e trate-os como uma falha comercial/API
AgentSdkExceptionFalha de rede, serialização, configuração ou assinaturaRegiste-o e trate-o como uma exceção do sistema

Exemplo:

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

Receba Webhooks

Todos os quatro tipos de eventos partilham o callback do comerciante configurado URL; envio pelo organismo event. Verifique os bytes recebidos originais e, em seguida, verifique a janela de tempo, o comerciante e o ambiente. Devolver HTTP 2xx apenas após confirmar dados de negócio e registos de desduplicação bem-sucedidos ou guardar de forma fiável uma tarefa persistente.

Eventos e avisos de liquidação · Verificação de assinaturas, respostas e novas tentativas