ナビゲーションにスキップ

契約の移転と調整

契約の移転と調整: 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 を指していることを検証します。 バインドされたユーザー。

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 に電話してください

冪等性の要件:

  • 1 つのビジネス トランザクションに対して 1 つの 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 ごとに重複を排除します。

ソースおよび関連ガイド

Funds イベントのコールバック

transfer.completed には、SUCCESS、FAILED、または元の注文の更新 REVERSED が含まれる場合があります。 reverse.completed は反転注文のターミナルイベントです。 transfer.dead は、再試行後も最終状態が未確認のままであり、手動による調整が必要であることを意味します。確認された失敗ではありません。イベント名だけでは資金が入金されたことを証明するものではありません。

承認の成功は資金移動の成功とは異なります。有効な targetStatus=FAILED 通知を記録した後、HTTP 2xx も返します。販売者および environment スコープ内で orderType:orderId:targetStatus による資金イベントの重複排除を永続化します。

イベントフィールドとJSONの例 · 署名の検証、応答、および再試行