> 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+ και τη δημόσια σύμβαση με ετικέτα. Τα παραδείγματα εκτελούνται σε ένα backend συνεργάτη μετά την προετοιμασία του `client` στο [Γρήγορη εκκίνηση](/el/sdk/agent-sdk/java/quick-start).

## Παράδειγμα προαπαιτούμενα

Τα αποσπάσματα Java μοιράζονται αυτές τις εισαγωγές. Αρχικοποιήστε το `client` χρησιμοποιώντας Γρήγορη εκκίνηση και αποκτήστε `platformUserId` από την αποθηκευμένη δέσμευση. Παραδείγματα αναγνωριστικών χρήστη/παραγγελιών πρέπει να αντικατασταθούν με τις δικές σας σταθερές τιμές.

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

### Δώστε και τις δύο ταυτότητες

Εάν παρέχονται και τα δύο αναγνωριστικά, η υπηρεσία επικυρώνει ότι δείχνουν στο ίδιο
δεσμευμένος χρήστης.

```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 | Αναγνωριστικό χρήστη από την πλευρά του συνεργάτη |
| `platformUserId` | string | 6MM αναγνωριστικό εξωτερικού χρήστη               |

## Επιβεβαίωση Παραγγελίας και Ανικανότητα

Μετά την κλήση του `transfer`, η υπηρεσία Agent καλεί συγχρονισμένα τη συναλλαγή
πυρήνα στο κύριο μονοπάτι. Στις περισσότερες περιπτώσεις, η απόκριση API περιέχει ήδη το
αποτέλεσμα του σύγχρονου πυρήνα συναλλαγών.

| Αποτέλεσμα   | Εννοια                                                   | Δράση συνεργάτη                                                                                |
| ------------ | -------------------------------------------------------- | ---------------------------------------------------------------------------------------------- |
| `SUCCESS`    | Η μεταφορά πέτυχε                                        | Επισημάνετε την τοπική παραγγελία ως επιτυχημένη                                               |
| `FAILED`     | Η μεταφορά απορρίφθηκε ή απέτυχε                         | Αποθηκεύστε την αιτία αποτυχίας και δείξτε την όταν χρειάζεται                                 |
| `PROCESSING` | Χρονικό όριο του πυρήνα συναλλαγών ή αβεβαιότητα δικτύου | Μην προσπαθήσετε ξανά με νέο αριθμό παραγγελίας. Περιμένετε για webhook ή καλέστε `queryOrder` |

Απαιτήσεις ανικανότητας:

* Χρησιμοποιήστε ένα `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` στην απάντηση είναι το πραγματικό μεταφερόμενο ποσό.

## Αντίστροφη σειρά

Το Reverse χρησιμοποιείται για την αντιστάθμιση μιας επιτυχημένης εντολής μεταφοράς όταν το backend
υποστηρίζει την αντίστροφη ροή. Οι τυπικές περιπτώσεις περιλαμβάνουν εξαιρέσεις τοπικής παραγγελίας συνεργατών
ή χειροκίνητη επαναφορά της συμφωνίας.

```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 | Αναγνωριστικό χρήστη από την πλευρά του συνεργάτη |
| `platformUserId` | string | 6MM αναγνωριστικό εξωτερικού χρήστη               |
| `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`.

## Πηγή και σχετικοί οδηγοί

* [Επίσημη πηγή έκδοσης 0.3.0](https://github.com/6mm-com/agent-java-sdk/tree/54aa3c1)
* [Επισκόπηση ερωτήματος και σελιδοποίηση](/el/sdk/agent-sdk/java/perpetual-queries)
* [Πορτοφόλι χρηματοδότησης](/el/sdk/agent-sdk/java/funding-wallet)
* [Οδηγός αναβάθμισης](/el/sdk/agent-sdk/java/upgrade)

## Χρηματοδοτεί επανάκληση συμβάντων

Το `transfer.completed` μπορεί να φέρει `SUCCESS`, `FAILED` ή μια αρχική ενημέρωση παραγγελίας `REVERSED`. Το `reverse.completed` είναι ένα συμβάν τερματικού εντολής αντιστροφής. `transfer.dead` σημαίνει ότι η τελική κατάσταση παραμένει μη επιβεβαιωμένη μετά από επαναλήψεις και χρειάζεται μη αυτόματη συμφωνία, όχι επιβεβαιωμένη αποτυχία. Το όνομα της εκδήλωσης από μόνο του δεν αποδεικνύει ότι πιστώθηκαν χρήματα.

Η επιτυχής επιβεβαίωση διαφέρει από την επιτυχημένη κίνηση κεφαλαίων: αφού καταγράψετε μια έγκυρη ειδοποίηση `targetStatus=FAILED`, επιστρέψτε επίσης HTTP 2xx. Συνέχιση της αφαίρεσης γεγονότων κεφαλαίων κατά `orderType:orderId:targetStatus` εντός του εμπόρου και του πεδίου `environment`.

[Πεδία συμβάντων και JSON παραδείγματα](/el/sdk/agent-sdk/java/webhook-events) · [Επαλήθευση υπογραφής, απαντήσεις και επαναλήψεις](/el/sdk/security/webhooks-idempotency)