> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.6mm.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.6mm.com/_mcp/server.

# 契約の移転と調整

このガイドは、**Agent Java SDK `v0.3.0`**、Java 8 以降、およびタグ付けされたパブリック コントラクトを対象としています。例は `client` を初期化した後にパートナー バックエンドで実行されます。 [クイックスタート](/ja/sdk/agent-sdk/java/quick-start).

## 前提条件の例

Java スニペットはこれらのインポートを共有します。クイック スタートを使用して `client` を初期化し、保存されたバインディングから `platformUserId` を取得します。ユーザー/オーダー ID の例は、独自の永続化された値に置き換える必要があります。

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

## 定額振込

定額送金には `transfer` を使用してください。 `Direction.IN` は転送を意味します
パートナー プラットフォームから 6MM に転送します。 `Direction.OUT` は 6MM からの転送を意味します
パートナープラットフォームに戻ります。

金額には文字列または `BigDecimal` を使用します。 `double` または `float` は使用しないでください。

### `agentUserId` による転送

```java
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` による転送

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

### 両方の ID を入力してください

両方の ID が指定された場合、サービスはそれらが同じ ID を指していることを検証します。
バインドされたユーザー。

```java
TransferRequest req = TransferRequest
        .fixed("AGT-ORDER-1003", "agent-user-001", Direction.IN, "USDT", "20.00")
        .withPlatformUserId("1188041528");

TransferResponse resp = client.transfer(req);
```

リクエストフィールド:

| 分野               | タイプ    | 必須   | 説明                                |
| ---------------- | ------ | ---- | --------------------------------- |
| `agentOrderNo`   | string | はい   | 世界的に一意のパートナー注文番号                  |
| `agentUserId`    | string | 条件付き | `platformUserId` が存在しない場合は必須      |
| `platformUserId` | string | 条件付き | `agentUserId` が存在しない場合は必須         |
| `direction`      | 列挙型    | はい   | `IN` または `OUT`                    |
| `currency`       | string | いいえ  | 不在の場合は `defaultCurrency` から埋められます |
| `amount`         | string | はい   | 小数の金額文字列                          |

応答フィールド:

| 分野               | タイプ    | 説明                                |
| ---------------- | ------ | --------------------------------- |
| `orderNo`        | string | プラットフォーム注文番号                      |
| `orderStatus`    | string | `SUCCESS`、`FAILED`、`PROCESSING`など |
| `agentUserId`    | string | パートナー側ユーザーID                      |
| `platformUserId` | string | 6MM 外部ユーザー ID                     |

## 注文の確認とべき等性

`transfer` が呼び出された後、エージェント サービスは取引を同期的に呼び出します。
メインパスのコア。ほとんどの場合、API 応答にはすでに
同期取引コアの結果。

| 結果           | 意味                             | パートナーのアクション                                              |
| ------------ | ------------------------------ | -------------------------------------------------------- |
| `SUCCESS`    | 転送が成功しました                      | ローカル注文を成功としてマークする                                        |
| `FAILED`     | 転送が拒否または失敗しました                 | 失敗の理由を保存し、必要に応じて表示します                                    |
| `PROCESSING` | トレーディングコアのタイムアウトまたはネットワークの不確実性 | 新しい注文番号で再試行しないでください。 webhook を待つか、`queryOrder` に電話してください |

冪等性の要件:

* 1 つのビジネス トランザクションに対して 1 つの `agentOrderNo` を使用します。
* HTTP がタイムアウトするか、ネットワークに障害が発生した場合は、最初に同じ `agentOrderNo` をクエリします。
* Webhooks は再試行される可能性があります。べき等キーによって重複を排除します。

## オールアウトを転送

`transferAllOut` は、ユーザーの出金可能な 6MM 側の残高を元の残高に戻します。
パートナープラットフォーム。

```java
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` によって:

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

応答内の `amount` は実際の送金額です。

## 逆順

リバースは、バックエンドが成功した場合に転送オーダーを補うために使用されます。
逆流をサポートします。一般的なケースには、パートナーの現地注文の例外が含まれます。
または手動調整ロールバック。

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

フィールド:

| 分野               | タイプ    | 必須 | 説明           |
| ---------------- | ------ | -- | ------------ |
| `origOrderNo`    | string | はい | 元の転送オーダー番号   |
| `reverseOrderNo` | string | はい | 世界的に一意な逆注文番号 |
| `reverseReason`  | string | はい | 逆の理由         |

注:

* リバースは通常のキャンセル操作ではありません。
* 逆順序も順序番号によって冪等である必要があります。
* 元の注文が取り消された後、webhook は元の注文をプッシュする可能性があります
  `REVERSED` 最終状態。

## クエリの順序

```java
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`

一般的な応答フィールド:

| 分野               | タイプ    | 説明                           |
| ---------------- | ------ | ---------------------------- |
| `orderType`      | string | 注文タイプ                        |
| `orderNo`        | string | パートナー注文番号                    |
| `status`         | string | 注文状況                         |
| `direction`      | string | `IN` または `OUT`               |
| `transferMode`   | string | `FIXED_AMOUNT` または `ALL_OUT` |
| `currency`       | string | 通貨                           |
| `amount`         | string | 額                            |
| `agentUserId`    | string | パートナー側ユーザーID                 |
| `platformUserId` | string | 6MM 外部ユーザー ID                |
| `failReason`     | string | 失敗の理由                        |
| `createdAt`      | string | 作成時間                         |
| `completedAt`    | string | 完了時間                         |

## リストの注文

```java
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` ごとに重複を排除します。

## ソースおよび関連ガイド

* [公式 v0.3.0 ソース](https://github.com/6mm-com/agent-java-sdk/tree/54aa3c1)
* [クエリの概要とページネーション](/ja/sdk/agent-sdk/java/perpetual-queries)
* [資金調達ウォレット](/ja/sdk/agent-sdk/java/funding-wallet)
* [アップグレードガイド](/ja/sdk/agent-sdk/java/upgrade)

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

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

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

[イベントフィールドとJSONの例](/ja/sdk/agent-sdk/java/webhook-events) · [署名の検証、応答、および再試行](/ja/sdk/security/webhooks-idempotency)