> 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.

# Sözleşme Transferleri ve Mutabakat

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ıç](/tr/sdk/agent-sdk/java/quick-start).

## Ö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.

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

```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` Tarafından Aktar

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

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

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

Talep alanları:

| Alan             | Tip            | Gerekli       | Tanım                                              |
| ---------------- | -------------- | ------------- | -------------------------------------------------- |
| `agentOrderNo`   | string         | Evet          | Global olarak benzersiz iş ortağı sipariş numarası |
| `agentUserId`    | string         | şartlı olarak | `platformUserId` bulunmadığında gereklidir         |
| `platformUserId` | string         | şartlı olarak | `agentUserId` bulunmadığında gereklidir            |
| `direction`      | numaralandırma | Evet          | `IN` veya `OUT`                                    |
| `currency`       | string         | HAYIR         | Yokken `defaultCurrency` adresinden doldurulur     |
| `amount`         | string         | Evet          | Ondalık miktar dizesi                              |

Yanıt alanları:

| Alan             | Tip    | Tanım                                  |
| ---------------- | ------ | -------------------------------------- |
| `orderNo`        | string | Platform sipariş numarası              |
| `orderStatus`    | string | `SUCCESS`, `FAILED`, `PROCESSING`, vb. |
| `agentUserId`    | string | İş ortağı tarafı kullanıcı kimliği     |
| `platformUserId` | string | 6MM 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                                                                           |
| ------------ | -------------------------------------------------- | ------------------------------------------------------------------------------------------ |
| `SUCCESS`    | Aktarım başarılı oldu                              | Yerel siparişi başarılı olarak işaretle                                                    |
| `FAILED`     | Aktarım reddedildi veya başarısız oldu             | Arıza nedenini kaydedin ve uygun olduğunda gösterin                                        |
| `PROCESSING` | Ticaret çekirdeği zaman aşımı veya ağ belirsizliği | Yeni 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.

```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` tarafından:

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

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

Alanlar:

| Alan             | Tip    | Gerekli | Tanım                                         |
| ---------------- | ------ | ------- | --------------------------------------------- |
| `origOrderNo`    | string | Evet    | Orijinal transfer emri numarası               |
| `reverseOrderNo` | string | Evet    | Global olarak benzersiz ters sipariş numarası |
| `reverseReason`  | string | Evet    | Ters 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ı

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

Desteklenen `orderType` değerleri:

* `TRANSFER_IN`
* `TRANSFER_OUT`

Ortak yanıt alanları:

| Alan             | Tip    | Tanım                              |
| ---------------- | ------ | ---------------------------------- |
| `orderType`      | string | Emir türü                          |
| `orderNo`        | string | İş ortağı sipariş numarası         |
| `status`         | string | Sipariş durumu                     |
| `direction`      | string | `IN` veya `OUT`                    |
| `transferMode`   | string | `FIXED_AMOUNT` veya `ALL_OUT`      |
| `currency`       | string | Para birimi                        |
| `amount`         | string | Miktar                             |
| `agentUserId`    | string | İş ortağı tarafı kullanıcı kimliği |
| `platformUserId` | string | 6MM harici kullanıcı kimliği       |
| `failReason`     | string | Arıza nedeni                       |
| `createdAt`      | string | Yaratılış zamanı                   |
| `completedAt`    | string | Tamamlanma süresi                  |

## Siparişleri Listele

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

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

* [Resmi v0.3.0 kaynağı](https://github.com/6mm-com/agent-java-sdk/tree/54aa3c1)
* [Sorguya genel bakış ve sayfalandırma](/tr/sdk/agent-sdk/java/perpetual-queries)
* [Finansman cüzdanı](/tr/sdk/agent-sdk/java/funding-wallet)
* [Yükseltme kılavuzu](/tr/sdk/agent-sdk/java/upgrade)

## 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](/tr/sdk/agent-sdk/java/webhook-events) · [İmza doğrulama, yanıtlar ve yeniden denemeler](/tr/sdk/security/webhooks-idempotency)