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 é direcionado a Agent Java SDK v0.3.0, Java 8+ e ao contrato público marcado. Inicialize client usando as etapas de instalação e configuração nesta página; execute os exemplos em um back-end de parceiro.

Pré-requisitos de exemplo

Os trechos Java compartilham essas importações. Inicialize client usando o Quick Start e obtenha platformUserId da ligação salva. Os exemplos de IDs de usuário/pedido devem ser substituídos por 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>

GitHub é hospedagem de origem, não um repositório de dependência do Maven. Se o SDK não tiver já foi publicado em um repositório Maven, instale-o em 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, seu projeto comercial pode ser resolvido com.sixmm.exchange.sdk:agent:0.3.0 do repositório Maven local.

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

Para uma integração existente, consulte o SDK guia de atualização. Use a tag de origem estável v0.3.0 para instalar o SDK e leia 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 do aplicativo:

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

Vincular usuário

Bind cria ou busca o relacionamento entre um usuário parceiro e um 6MM usuário da plataforma. Chame-o quando um usuário 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 usuário exclusivo do parceiro
usernamestringNãoNome de exibição do parceiro usado como apelido do usuário da plataforma
extstringNãoCampo de extensão. A string JSON é recomendada

Campos de resposta:

CampoTipoDescrição
platformUserIdstring6MM ID de usuário externo
bindStatusstringGeralmente BOUND
isSimulatedUserbooleanSe este é um usuário simulado

Fluxos de negócios 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 são divididas em duas categorias:

ExceçãoCenárioManuseio sugerido
AgentApiExceptionO status HTTP não é 2xx ou 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 assinaturaRegistre-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 compartilham o retorno de chamada do comerciante configurado URL; envio pelo órgão event. Verifique os bytes recebidos originais e, em seguida, verifique a janela de tempo, o comerciante e o ambiente. Retorne HTTP 2xx somente após confirmar dados de negócios e registros de desduplicação bem-sucedidos ou salvar de forma confiável uma tarefa persistente.

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