跳到导航

合同轉讓與對賬

合同傳輸和對賬: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,則服務將驗證它們是否指向同一個 綁定用戶。

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後,Agent服務同步調用交易 主路徑上的核心。在大多數情況下,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為實際轉賬金額。

逆序

反向用於補償成功的轉賬訂單,當後端 支持逆流。典型案例包括合作伙伴本地訂單異常 或手動協調回滾。

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。透過 orderType:orderId:targetStatus 在商家和 environment 範圍內持續進行資金事件重複資料刪除。

事件欄位和 JSON 範例 · 簽名驗證、回應和重試