Gezinmeye atla

Java Hızlı Başlangıç

Java Hızlı Başlangıç: Agent Java SDK v0.3.0 entegrasyonu, örnekler, parametreler ve yanıt semantiği.

Markdown olarak görüntüle

Bu kılavuz Agent Java SDK v0.3.0, Java 8+ ve etiketli kamu sözleşmesini hedefler. Bu sayfadaki kurulum ve konfigürasyon adımlarını kullanarak client’i başlatın; örnekleri bir iş ortağı arka ucunda çalıştırın.

Örnek önkoşullar

Java parçacıkları bu içe aktarmaları paylaşır. Hızlı Başlangıç’ı kullanarak client’ı başlatın ve kaydedilen bağlamadan platformUserId’i edinin. Örnek kullanıcı/sipariş kimlikleri kendi kalıcı değerlerinizle değiştirilmelidir.

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

Maven Koordinatları

Mevcut kaynak koordinatları:

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

GitHub, bir Maven bağımlılık deposu değil, kaynak barındırmadır. Eğer SDK henüz bir Maven deposunda yayınlanmadıysa, bunu yerel Maven’inize yükleyin ilk önce depo:

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

Yerel kurulumdan sonra iş projeniz çözülebilir Yerel Maven deposundan com.sixmm.exchange.sdk:agent:0.3.0.

Ekip oluşturma ve test ortamları için SDK dosyasını bir Maven deposunda yayınlayın Nexus, Artifactory, GitHub Paketleri, Maven Central gibi veya GitHub kullanın JitPack gibi tabanlı oluşturma hizmeti.

Mevcut bir entegrasyon için bkz. SDK yükseltme kılavuzu. SDK’i yüklemek için kararlı v0.3.0 kaynak etiketini kullanın ve eşleşen entegrasyon belgelerini okuyun.

İstemci Başlatma

Düz 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());

Bahar Çizme

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

Örnek uygulama özellikleri:

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

Kullanıcıyı Bağla

Bind, bir iş ortağı kullanıcısı ile bir 6MM arasındaki ilişkiyi oluşturur veya getirir platformu kullanıcısı Kullanıcı işlem akışına ilk girdiğinde veya işlem yapılmadan önce bunu çağırın. 6MM’a ilk transfer.

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

Talep alanları:

AlanTipGerekliTanım
agentUserIdstringEvetBenzersiz iş ortağı tarafı kullanıcı kimliği
usernamestringHAYIRPlatform kullanıcısının takma adı olarak kullanılan iş ortağı tarafında görünen ad
extstringHAYIRUzatma alanı. JSON dizesi önerilir

Yanıt alanları:

AlanTipTanım
platformUserIdstring6MM harici kullanıcı kimliği
bindStatusstringGenellikle BOUND
isSimulatedUserbooleanBunun simüle edilmiş bir kullanıcı olup olmadığı

Önerilen İş Akışları

İlk Ticaret Girişi

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.

6MM’a Para Yatırın

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.

Ortağa Geri Çekilme

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.

Kaynak ve ilgili kılavuzlar

Hata İşleme

SDK istisnalar iki kategoriye ayrılmıştır:

İstisnaSenaryoÖnerilen kullanım
AgentApiExceptionHTTP durumu 2xx değil veya Temsilci yanıtı code != 0 değilgetHttpStatus(), getCode() ve getResponseBody()’yi okuyun ve bunu bir iş/API hatası olarak değerlendirin
AgentSdkExceptionAğ, serileştirme, yapılandırma veya imzalama hatasıGünlüğe kaydedin ve sistem istisnası olarak değerlendirin

Örnek:

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

Webhooks al

Dört etkinlik türünün tümü, yapılandırılmış satıcı geri aramasını URL paylaşır; event kuruluşu tarafından gönderim. Orijinal alınan baytları doğrulayın, ardından zaman penceresini, satıcıyı ve ortamı kontrol edin. Yalnızca iş verilerini ve başarılı veri tekilleştirme kayıtlarını kaydettikten veya kalıcı bir görevi güvenilir bir şekilde kaydettikten sonra HTTP 2xx’i döndürün.

Olaylar ve tasfiye uyarıları · İmza doğrulama, yanıtlar ve yeniden denemeler