Zur Navigation springen

Finanzierungs-Wallet

Funding Wallet: Agent Java SDK v0.3.0-Integration, Beispiele, Parameter und Antwortsemantik.

Als Markdown anzeigen

Dieser Leitfaden richtet sich an Agent Java SDK v0.3.0, Java 8+ und den getaggten öffentlichen Auftrag. Beispiele werden nach der Initialisierung von client in einem Partner-Backend ausgeführt Schnellstart.

Beispielvoraussetzungen

Die Java-Snippets teilen diese Importe. Initialisieren Sie client mit Quick Start und rufen Sie platformUserId aus der gespeicherten Bindung ab. Beispiel-Benutzer-/Bestell-IDs müssen durch Ihre eigenen persistenten Werte ersetzt werden.

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

Wallet-Abfragen und Überweisungen

Unterscheiden Sie die drei Geldbörsen

GeldbörseBalance-Quelleverwenden
Eigenes Benutzer-Wallet des HändlersEigenes Buchhaltungssystem des HändlersDas verfügbare Guthaben des Benutzers auf der Händlerseite
PlattformfinanzierungqueryUserAssets von fundingSekundenhandel mit Geldern und gegenseitige Finanzierung/Vertragsübertragung
PlattformvertragDas Vertragsvermögenswertfeld von queryUserAssetsDauervertragsmarge und übertragbarer Saldo

queryAccount Fragen Sie das Margin-Konto der Händlerplattform ab, nicht die Wallet des Händlerbenutzers. Diese Schnittstelle verfügt nicht über environment-Parameter und kann nicht als simuliertes Benutzer-Asset abgefragt werden.

Fragen Sie die beiden Plattform-Wallets simulierter Benutzer ab:

QueryUserAssetsResponse assets = client.queryUserAssets(
QueryUserAssetsRequest.of(platformUserId)
.withFunding()
.withEnvironment(ExecutionEnvironment.SIMULATED));

Schnittstelle: POST /v1/agent/query-user-assets. Eine Finanzierung wird nur beantragt, wenn includeFunding=true; Standardmäßig wird die ursprüngliche Abfragesemantik für Vertragsvermögenswerte verwendet.

AntwortfelderBedeutung
walletBalance, availableBalance, frozenMargin, usedMargin, isolatedMarginBeträge im Zusammenhang mit der Vertragsmappe
funding.assetCodeDerzeit USDT
funding.availableAmount, heldAmount, totalAmountVerfügbare Fördermittel, belegte Mittel und Gesamtbetrag
funding.materializedOb das Finanzierungskonto realisiert wurde?
environmentDieses Feld wird wiedergegeben, wenn die Umgebung explizit übergeben wird. Alte Anfragen, die die Umgebung weglassen, geben dieses Feld nicht zurück.
isSimulatedUserKontoklassifizierung; kann die Auswahl der Handelsumgebung nicht ersetzen

Beträge werden als Zeichenfolgen oder BigDecimal behandelt, nicht als float/double.

Anweisungen zur Finanzierungsübertragung

Erstellen: POST /v1/agent/wallet-transfer, SDK walletTransfer.

directionMittelflusstransferAll
PARTNER_TO_FUNDINGHändler → PlattformfinanzierungNur Festbetrag
FUNDING_TO_PARTNERPlattformfinanzierung → HändlerNur Festbetrag
FUNDING_TO_CONTRACTGleiche Umgebungsplattform. Finanzierung → VertragUnterstützt feste Beträge oder alle auszahlbaren Gelder
CONTRACT_TO_FUNDINGGleiche Umgebungsplattform. Vertrag → FinanzierungUnterstützt feste Beträge oder alle auszahlbaren Gelder

Die aktuelle Währung unterstützt nur USDT. Der feste Betrag muss eine positive Zeichenfolge mit bis zu 8 Dezimalstellen sein und darf nicht in wissenschaftlicher Schreibweise angegeben werden. Wenn transferAll=true, lassen Sie amount weg und notieren Sie es als endgültige Antwort amount; „Alle“ umfasst nur die auszahlbaren Gelder.

Beispiel: Händler überweist 10 USDT an eine simulierte Finanzierung. Speichern Sie zunächst den Geschäftsauftrag und die Umgebung im Händlersystem und senden Sie dann die Anfrage:

String fundingOrderNo = "SIM-FUNDING-20261010-000001";
WalletTransferResponse transfer = client.walletTransfer(
WalletTransferRequest.of(fundingOrderNo, "merchant-user-001",
"PARTNER_TO_FUNDING", "10.00000000", false)
.withEnvironment(ExecutionEnvironment.SIMULATED));

Finanzierung Übertragen Sie alle Gelder, die auf den simulierten Vertrag übertragen werden können:

WalletTransferResponse move = client.walletTransfer(
WalletTransferRequest.of("SIM-F2C-20261010-000001", "merchant-user-001",
"FUNDING_TO_CONTRACT", null, true)
.withEnvironment(ExecutionEnvironment.SIMULATED));

Derselbe Vorgang muss weiterhin das Original agentOrderNo verwenden. Unterschiedliche Vorgänge und unterschiedliche Umgebungen verwenden unterschiedliche Bestellnummern. Änderungen der Menge, des Benutzers, der Richtung oder der Umgebung mit derselben Bestellnummer werden abgelehnt. Finanzierungs-/Vertragsübertragungen können nur innerhalb derselben Umgebung durchgeführt werden und simulierte Gelder können nicht in echte Gelder übertragen werden.

Ergebnisbestätigung und Wiederherstellung unbekannter Ergebnisse

Finanzierungsantworten werden durch status, SUCCESS, PROCESSING oder FAILED dargestellt und als orderNo, direction, currency zurückgegeben. amount, resultCode usw. code=0 bedeutet nur, dass die Anfrage erfolgreich bearbeitet wurde und Sie weiterhin status beurteilen müssen.

ErgebnisHändlerabwicklung
SUCCESSKomplette lokale Buchhaltungsverarbeitung basierend auf dem tatsächlichen Betrag
PROCESSINGBewahren Sie es zur Bestätigung vor Ort auf und überprüfen Sie die Originalbestellung
HTTP Timeout, Netzwerkfehler, Ergebnis kann nicht analysiert werdenDas Ergebnis gilt als unbekannt und die ursprüngliche Bestellung wird abgefragt; Es kann nicht direkt als Fehler festgestellt werden. Alternativ können Sie auch keine neue Bestellung erstellen und es erneut versuchen.
Identifiziert FAILEDGeben Sie die lokale Reservierung gemäß dem eindeutigen Fehlerergebnis frei; Erstellen Sie einen neuen Geschäftsauftrag, wenn das Geschäft erneut aufgenommen werden muss

Die Finanzierungsabfrage verwendet die dedizierte Schnittstelle POST /v1/agent/wallet-transfer-status:

WalletTransferResponse recovered = client.queryWalletTransfer(
WalletTransferQueryRequest.of(fundingOrderNo)
.withEnvironment(ExecutionEnvironment.SIMULATED));

Verwenden Sie diesen dedizierten Endpunkt, um den ursprünglichen Finanzierungsvorgang wiederherzustellen. queryOrder kann es nicht ersetzen. Speichern Sie die ursprüngliche Umgebung und übergeben Sie sie bei der Wiederherstellung explizit. Wenn environment in wallet-transfer-status weggelassen wird, verwendet der Server die in der ursprünglichen Bestellung gespeicherte Umgebung, einschließlich simulierter Bestellungen. Eine explizit widersprüchliche Umgebung gibt 102002 (order environment mismatch zurück. Wenn der Aufrufer die Umgebung weglässt, wird in der Antwort auch environment weggelassen; Dies bedeutet nicht, dass es sich bei dem ursprünglichen Auftrag um einen Produktionsauftrag handelt.

Die lokalen Ein- und Auszahlungen der Händler sind idempotent; Permanente Aufträge und Salden werden vor der Initiierung reserviert und zur Bestätigung reserviert, wenn das Ergebnis unbekannt ist. Der Finanzierungszugriff verwendet eine spezielle Abfrage, um den endgültigen Status zu bestätigen. Gehen Sie nicht davon aus, dass alte Vertragsübertragungsmethoden Webhook oder Stornierungsmethoden automatisch auf die Finanzierung anwendbar sind.

Vorhandener Vertragsübertragungsablauf

Die ursprünglichen transfer, transferAllOut, reverse, queryOrder, listOrders verarbeiten weiterhin den ursprünglichen Vertragsübertragungsprozess. queryOrder fragt Geldtransferaufträge ab, listOrders ist eine Transferabgleichsliste; stattdessen, Ständige Abfragen werden für unbefristete Handelsaufträge verwendet.

Die ursprüngliche Finanzierungsantwort verwendet orderStatus; In der Finanzierungsantwort wird status verwendet. Mischen Sie diese nicht. Die ursprüngliche Übertragung Webhook wird mit X-Agent-Timestamp, X-Agent-Nonce, X-Agent-Signature überprüft, und der ursprüngliche Signaturtext ist timestamp + nonce + rawBody; Der ursprüngliche Anfragetext wird zunächst überprüft, dann deserialisiert und idempotent. Explizite simulierte Umgebungsbenachrichtigungen enthalten environment=SIMULATED, Produktionsbenachrichtigungen bleiben mit alten Feldern kompatibel. Menge, Bestellnummer, Status und Umgebung müssen mit der örtlichen Geschäftsbestellung abgeklärt werden.

Quelle und zugehörige Leitfäden

Felder für Finanzierungsanfragen

FeldErforderlichBedeutung
agentOrderNoJaWeltweit eindeutige Partner-Bestellnummer; vor dem Senden bestehen bleiben.
agentUserId / platformUserIdEinsIdentifizieren Sie den gebundenen Benutzer. Wenn beide angegeben sind, müssen sie übereinstimmen.
directionJaEine der vier oben dokumentierten Richtungen.
currencyStandard USDTNur USDT wird unterstützt.
transferAllStandardmäßig falschNur interne Finanzierungs-/Vertragsübertragungen unterstützen „true“.
amountBedingtPositive Dezimalzeichenfolge für eine feste Übertragung; weglassen für transferAll=true.
environmentOptionalProduktion, wenn sie für eine neue Übertragung weggelassen wird; SIMULATED wählt simulierte Fonds aus.

Felder für Finanzierungsantworten

FeldBedeutung
orderNoZurückgegebener Vorgangsbezeichner; zusammen mit der ursprünglichen Partner-Bestellnummer aufbewahren.
statusSUCCESS / PROCESSING / FAILED; bestimmt den Geschäftsabschluss.
direction / currencyBestätigte Übertragungsrichtung und Asset.
amountTatsächlich überwiesener Betrag als String.
transferAllOb für diesen Vorgang alle abhebbaren Gelder angefordert wurden.
agentUserId / platformUserIdZurückgegebene Benutzeridentität; mit der gespeicherten Bestellung vergleichen.
resultCodeDetails zum Operationsergebnis; zur Versöhnung und Unterstützung zurückhalten.
environmentWird angezeigt, wenn der Anrufer es explizit angegeben hat; Abwesenheit ist kein Produktionsbeweis für eine Abfrage des Originalauftragsstatus.