탐색으로 건너뛰기

계약 이전 및 조정

계약 이전 및 조정: Agent Java SDK v0.3.0 통합, 예시, 매개변수 및 응답 의미 체계.

Markdown으로 보기

이 가이드는 Agent Java SDK v0.3.0, Java 8+ 및 태그된 공개 계약을 대상으로 합니다. 예제는 client를 초기화한 후 파트너 백엔드에서 실행됩니다. 빠른 시작.

예시 전제조건

Java 조각은 이러한 가져오기를 공유합니다. 빠른 시작을 사용하여 client를 초기화하고 저장된 바인딩에서 platformUserId를 가져옵니다. 예시 사용자/주문 ID는 고유한 지속 값으로 대체되어야 합니다.

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

고정금액 이체

고정 금액 이체에는 transfer을 사용하세요. Direction.IN는 전송을 의미합니다. 파트너 플랫폼에서 6MM로 이동합니다. Direction.OUT는 6MM에서 전송을 의미합니다. 파트너 플랫폼으로 돌아갑니다.

금액에는 문자열이나 BigDecimal를 사용하세요. double 또는 float를 사용하지 마세요.

agentUserId로 전송

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로 전송

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

두 ID 모두 제공

두 ID가 모두 제공되면 서비스는 두 ID가 동일한 ID를 가리키는지 확인합니다. 바인딩된 사용자.

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

요청 필드:

필드유형필수의설명
agentOrderNostring예전 세계적으로 고유한 파트너 주문 번호
agentUserIdstring조건부로platformUserId가 없는 경우 필수
platformUserIdstring조건부로agentUserId가 없는 경우 필수
direction열거형예IN 또는 OUT
currencystring아니요부재 시 defaultCurrency부터 채워짐
amountstring예소수점 문자열

응답 필드:

필드유형설명
orderNostring플랫폼 주문 번호
orderStatusstringSUCCESS, FAILED, PROCESSING 등
agentUserIdstring파트너 측 사용자 ID
platformUserIdstring6MM 외부 사용자 ID

주문 확인 및 멱등성

transfer이 호출된 후 에이전트 서비스는 동기적으로 거래를 호출합니다. 메인 경로에 코어가 있습니다. 대부분의 경우 API 응답에는 이미 동기식 거래 핵심 결과.

결과의미파트너 활동
SUCCESS전송 성공지역 주문을 성공으로 표시
FAILED전송이 거부되었거나 실패했습니다.실패 이유를 저장하고 적절한 경우 표시
PROCESSING트레이딩 코어 시간 초과 또는 네트워크 불확실성새로운 주문 번호로 재시도하지 마세요. webhook을 기다리거나 queryOrder에 전화하세요.

멱등성 요구 사항:

  • 하나의 비즈니스 트랜잭션에 하나의 agentOrderNo을 사용합니다.
  • HTTP 시간이 초과되거나 네트워크에 장애가 발생하면 먼저 동일한 agentOrderNo를 쿼리하세요.
  • Webhooks을(를) 다시 시도할 수 있습니다. 멱등성 키로 중복을 제거합니다.

모두 밖으로 전송

transferAllOut는 사용자의 출금 가능한 6MM측 잔액을 다시 파트너 플랫폼.

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 작성자:

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

응답의 amount은 실제 전송된 금액입니다.

역순

Reverse는 백엔드가 성공할 때 성공적인 전송 주문을 보상하는 데 사용됩니다. 역방향 흐름을 지원합니다. 일반적인 사례에는 파트너 현지 주문 예외가 포함됩니다. 또는 수동 조정 롤백.

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

전지:

필드유형필수의설명
origOrderNostring예원본 이전 주문 번호
reverseOrderNostring예전역적으로 고유한 역순 번호
reverseReasonstring예반대 이유

참고:

  • 역방향은 일반적인 취소 작업이 아닙니다.
  • 역순 주문도 주문 번호별로 멱등성이 있어야 합니다.
  • 원래 주문이 취소된 후 webhook는 원래 주문의 REVERSED 최종 상태입니다.

쿼리 순서

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

지원되는 orderType 값:

  • TRANSFER_IN
  • TRANSFER_OUT

일반적인 응답 필드:

필드유형설명
orderTypestring주문 유형
orderNostring파트너 주문 번호
statusstring주문 상태
directionstringIN 또는 OUT
transferModestringFIXED_AMOUNT 또는 ALL_OUT
currencystring통화
amountstring양
agentUserIdstring파트너 측 사용자 ID
platformUserIdstring6MM 외부 사용자 ID
failReasonstring실패 이유
createdAtstring생성시간
completedAtstring완료 시간

주문 나열

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

페이지 매김 권장사항:

  • page 1부터 시작합니다.
  • pageSize를 100 이하로 유지하세요.
  • 조정 작업의 경우 기간별로 페이지를 지정하고 orderNo별로 중복을 제거합니다.

소스 및 관련 가이드

자금 이벤트 콜백

transfer.completed는 SUCCESS, FAILED 또는 REVERSED의 원래 주문 업데이트를 전달할 수 있습니다. reverse.completed는 역주문 터미널 이벤트입니다. transfer.dead는 확인된 실패가 아니라 재시도 후에도 최종 상태가 확인되지 않은 상태로 남아 있으며 수동 조정이 필요함을 의미합니다. 이벤트 이름만으로는 자금이 적립되었음을 증명할 수 없습니다.

성공적인 승인은 성공적인 자금 이동과 다릅니다. 유효한 targetStatus=FAILED 알림을 기록한 후 HTTP 2xx도 반환합니다. 판매자 및 environment 범위 내에서 orderType:orderId:targetStatus에 의한 자금 이벤트 중복 제거를 지속합니다.

이벤트 필드 및 JSON 예시 · 서명 확인, 응답 및 재시도