Gezinmeye atla

Sözleşme Transferleri ve Mutabakat

Sözleşme Transferleri ve Mutabakat: 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. Örnekler, client başlatıldıktan sonra bir iş ortağı arka ucunda çalıştırılır. Hızlı Başlangıç.

Ö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.*;

Sabit Tutarlı Transfer

Sabit tutarda transferler için transfer kullanın. Direction.IN aktarma anlamına gelir iş ortağı platformundan 6MM’e. Direction.OUT, 6MM’den aktarım anlamına gelir iş ortağı platformuna geri dönün.

Tutarlar için dizeleri veya BigDecimal kullanın. double veya float kullanmayın.

agentUserId Tarafından Aktar

import com.sixmm.agent.model.Direction;
import com.sixmm.agent.model.TransferRequest;
import com.sixmm.agent.model.TransferResponse;
TransferResponse resp = client.transfer(TransferRequest.fixed(
"AGT-ORDER-1001",
"agent-user-001",
Direction.IN,
"USDT",
"10.00"));
System.out.println(resp.orderNo);
System.out.println(resp.orderStatus);
System.out.println(resp.agentUserId);
System.out.println(resp.platformUserId);

platformUserId Tarafından Aktar

TransferResponse resp = client.transfer(TransferRequest.fixedByPlatformUserId(
"AGT-ORDER-1002",
"1188041528",
Direction.OUT,
"USDT",
"5.00"));

Her İki Kimliği de Sağlayın

Her iki kimlik de sağlanırsa hizmet, bunların aynı şeyi işaret ettiğini doğrular bağlı kullanıcı

TransferRequest req = TransferRequest
.fixed("AGT-ORDER-1003", "agent-user-001", Direction.IN, "USDT", "20.00")
.withPlatformUserId("1188041528");
TransferResponse resp = client.transfer(req);

Talep alanları:

AlanTipGerekliTanım
agentOrderNostringEvetGlobal olarak benzersiz iş ortağı sipariş numarası
agentUserIdstringşartlı olarakplatformUserId bulunmadığında gereklidir
platformUserIdstringşartlı olarakagentUserId bulunmadığında gereklidir
directionnumaralandırmaEvetIN veya OUT
currencystringHAYIRYokken defaultCurrency adresinden doldurulur
amountstringEvetOndalık miktar dizesi

Yanıt alanları:

AlanTipTanım
orderNostringPlatform sipariş numarası
orderStatusstringSUCCESS, FAILED, PROCESSING, vb.
agentUserIdstringİş ortağı tarafı kullanıcı kimliği
platformUserIdstring6MM harici kullanıcı kimliği

Sipariş Onayı ve İdempotans

transfer çağrıldıktan sonra, Agent hizmeti eşzamanlı olarak ticareti çağırır ana yoldaki çekirdek. Çoğu durumda, API yanıtı zaten senkronize ticaret çekirdeği sonucu.

SonuçAnlamİş ortağı eylemi
SUCCESSAktarım başarılı olduYerel siparişi başarılı olarak işaretle
FAILEDAktarım reddedildi veya başarısız olduArıza nedenini kaydedin ve uygun olduğunda gösterin
PROCESSINGTicaret çekirdeği zaman aşımı veya ağ belirsizliğiYeni bir sipariş numarasıyla tekrar denemeyin. webhook bekleyin veya queryOrder’ı arayın

Idempotency gereksinimleri:

  • Bir ticari işlem için bir agentOrderNo kullanın.
  • HTTP zaman aşımına uğrarsa veya ağ başarısız olursa, önce aynı agentOrderNo sorgulayın.
  • Webhooks yeniden denenebilir. Bunları idempotency anahtarıyla tekilleştirin.

Tümünü Dışarıya Aktar

transferAllOut, kullanıcının çekilebilir 6MM tarafındaki bakiyesini geri taşır. ortak platformu.

import com.sixmm.agent.model.TransferAllOutRequest;
import com.sixmm.agent.model.TransferAllOutResponse;
TransferAllOutResponse resp = client.transferAllOut(
TransferAllOutRequest.of("AGT-ORDER-2001", "agent-user-001", "USDT"));
System.out.println(resp.orderStatus);
System.out.println(resp.amount);

platformUserId tarafından:

TransferAllOutResponse resp = client.transferAllOut(
TransferAllOutRequest.byPlatformUserId("AGT-ORDER-2002", "1188041528", "USDT"));

Yanıttaki amount aktarılan gerçek tutardır.

Ters Sıralama

Arka uç başarılı bir transfer emrini telafi etmek için ters kullanılır. ters akışı destekler. Tipik durumlar arasında iş ortağının yerel sipariş istisnaları yer alır veya manuel mutabakatın geri alınması.

import com.sixmm.agent.model.ReverseOrderRequest;
import com.sixmm.agent.model.ReverseOrderResponse;
ReverseOrderResponse resp = client.reverse(ReverseOrderRequest.of(
"AGT-ORDER-1001",
"REV-ORDER-1001",
"partner order rollback"));
System.out.println(resp.orderStatus);

Alanlar:

AlanTipGerekliTanım
origOrderNostringEvetOrijinal transfer emri numarası
reverseOrderNostringEvetGlobal olarak benzersiz ters sipariş numarası
reverseReasonstringEvetTers neden

Notlar:

  • Tersine çevirme normal bir iptal işlemi değildir.
  • Ters emirlerin de sıra numarasına göre bağımsız olması gerekir.
  • Orijinal bir emir tersine çevrildikten sonra, webhook orijinal emrin geri alınmasını sağlayabilir REVERSED son ​​durum.

Sorgu Sırası

import com.sixmm.agent.model.OrderQueryType;
import com.sixmm.agent.model.QueryOrderRequest;
import com.sixmm.agent.model.QueryOrderResponse;
QueryOrderResponse resp = client.queryOrder(
QueryOrderRequest.of("AGT-ORDER-1001", OrderQueryType.TRANSFER_IN));
System.out.println(resp.status);
System.out.println(resp.failReason);

Desteklenen orderType değerleri:

  • TRANSFER_IN
  • TRANSFER_OUT

Ortak yanıt alanları:

AlanTipTanım
orderTypestringEmir türü
orderNostringİş ortağı sipariş numarası
statusstringSipariş durumu
directionstringIN veya OUT
transferModestringFIXED_AMOUNT veya ALL_OUT
currencystringPara birimi
amountstringMiktar
agentUserIdstringİş ortağı tarafı kullanıcı kimliği
platformUserIdstring6MM harici kullanıcı kimliği
failReasonstringArıza nedeni
createdAtstringYaratılış zamanı
completedAtstringTamamlanma süresi

Siparişleri Listele

import com.sixmm.agent.model.ListOrdersRequest;
import com.sixmm.agent.model.ListOrdersResponse;
ListOrdersRequest req = ListOrdersRequest.page(1, 20);
req.orderType = "TRANSFER_IN";
req.status = "SUCCESS";
req.startTime = "2026-06-01T00:00:00Z";
req.endTime = "2026-06-16T00:00:00Z";
ListOrdersResponse resp = client.listOrders(req);
System.out.println(resp.total);
resp.orders.forEach(order -> System.out.println(order.orderNo));

Sayfalandırma önerileri:

  • page 1’den başlar.
  • pageSize değerini 100’de veya altında tutun.
  • Mutabakat işleri için, sayfa sayfa zaman aralığı ve orderNo tarihine kadar tekilleştirme.

Kaynak ve ilgili kılavuzlar

Etkinlik geri aramalarına fon sağlar

transfer.completed, SUCCESS, FAILED veya REVERSED orijinal sipariş güncellemesini taşıyabilir; reverse.completed bir ters sıra terminal olayıdır. transfer.dead, yeniden denemelerden sonra nihai durumun onaylanmadan kaldığı ve onaylanmış bir hata değil, manuel mutabakat gerektirdiği anlamına gelir. Etkinlik adı tek başına paranın yatırıldığını kanıtlamaz.

Başarılı onay, başarılı fon hareketinden farklıdır: geçerli bir targetStatus=FAILED bildirimi kaydettikten sonra, HTTP 2xx’i de döndürün. Satıcı ve environment kapsamında orderType:orderId:targetStatus tarafından fon olaylarının tekilleştirilmesine devam edin.

Etkinlik alanları ve JSON örnekleri · İmza doğrulama, yanıtlar ve yeniden denemeler