Μετάβαση στην πλοήγηση

Μεταβιβάσεις και Συμφωνίες Συμβάσεων

Μεταβιβάσεις και Συμφωνίες Συμβάσεων: Agent Java SDK Ενσωμάτωση v0.3.0, παραδείγματα, παράμετροι και σημασιολογία απόκρισης.

Προβολή ως Markdown

Αυτός ο οδηγός στοχεύει Agent Java SDK v0.3.0, Java 8+ και τη δημόσια σύμβαση με ετικέτα. Τα παραδείγματα εκτελούνται σε ένα backend συνεργάτη μετά την προετοιμασία του client στο Γρήγορη εκκίνηση.

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

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

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

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

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

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

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

Μετά την κλήση του 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 στην απάντηση είναι το πραγματικό μεταφερόμενο ποσό.

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

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

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Αναγνωριστικό χρήστη από την πλευρά του συνεργάτη
platformUserIdstring6MM αναγνωριστικό εξωτερικού χρήστη
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 παραδείγματα · Επαλήθευση υπογραφής, απαντήσεις και επαναλήψεις