Saltar a la navegación

Monedero de financiación

Funding Wallet: Agent Java SDK integración v0.3.0, ejemplos, parámetros y semántica de respuesta.

Ver como Markdown

Esta guía está dirigida a Agent Java SDK v0.3.0, Java 8+ y el contrato público etiquetado. Los ejemplos se ejecutan en un backend asociado después de inicializar client en Inicio rápido.

Requisitos previos de ejemplo

Los fragmentos Java comparten estas importaciones. Inicialice client usando el Inicio rápido y obtenga platformUserId del enlace guardado. Los ID de usuario/pedido de ejemplo deben reemplazarse con sus propios valores persistentes.

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

Consultas y transferencias de Wallet

Distinguir las tres carteras.

billeteraFuente de equilibriousar
Cartera de usuario propia del comercianteSistema de contabilidad propio del comerciante.El saldo disponible del usuario en el lado del comerciante
Financiamiento de la plataformaqueryUserAssets de fundingFondos de negociación de segundos y transferencia mutua de financiación/contrato
Contrato de plataformaEl campo de activo del contrato de queryUserAssetsMargen de contrato perpetuo y saldo transferible

queryAccount Consulta la cuenta de margen de la plataforma comercial, no la billetera del usuario comerciante. Esta interfaz no tiene environment parámetros y no se puede consultar como un activo de usuario simulado.

Consulta las dos billeteras de plataforma de usuarios simulados:

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

Interfaz: POST /v1/agent/query-user-assets. Se solicita financiación únicamente cuando includeFunding=true; La semántica de consulta de activos del contrato original se utiliza de forma predeterminada.

campos de respuestasignificado
walletBalance, availableBalance, frozenMargin, usedMargin, isolatedMarginMontos relacionados con la billetera del contrato
funding.assetCodeActualmente USDT
funding.availableAmount, heldAmount, totalAmountFinanciamiento disponible, ocupado y monto total
funding.materialized¿Se ha materializado la cuenta de financiación?
environmentEste campo se repite cuando el entorno se pasa explícitamente; Las solicitudes antiguas que omiten el entorno no devuelven este campo.
isSimulatedUserClasificación de cuentas; no puede reemplazar la selección del entorno comercial

Las cantidades se manejan como cadenas o BigDecimal, no float/double.

Direcciones de transferencia de fondos

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

directionFlujo de fondostransferAll
PARTNER_TO_FUNDINGComerciante → Financiamiento de plataformaSólo cantidad fija
FUNDING_TO_PARTNERFinanciamiento de plataforma → ComercianteSólo cantidad fija
FUNDING_TO_CONTRACTPlataforma del mismo entorno Financiación → ContratoAdmite una cantidad fija o todos los fondos retirables
CONTRACT_TO_FUNDINGPlataforma mismo entorno Contrato → FinanciaciónAdmite una cantidad fija o todos los fondos retirables

La moneda actual solo admite USDT. La cantidad fija debe ser una cadena positiva con hasta 8 decimales y no puede utilizar notación científica. Cuando transferAll=true, omita amount y regístrelo como la respuesta final amount; “todos” solo incluye los fondos retirables.

Ejemplo: El comerciante transfiere 10 USDT a una financiación simulada. Primero guarde el pedido comercial y el entorno en el sistema comercial y luego envíe la solicitud:

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

Financiamiento Transfiera todos los fondos que se puedan transferir al Contrato simulado:

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

La misma operación debe continuar usando el agentOrderNo original; diferentes operaciones y diferentes entornos utilizan diferentes números de pedido. Se rechazará el cambio de importe, usuario, dirección o entorno con el mismo número de pedido. Las transferencias de fondos/contratos solo se pueden realizar dentro del mismo entorno y los fondos simulados no se pueden transferir a fondos reales.

Confirmación de resultados y recuperación de resultados desconocidos

Las respuestas de financiación están representadas por status, SUCCESS, PROCESSING o FAILED, y se devuelven orderNo, direction, currency, amount, resultCode, etc. code=0 solo significa que la solicitud se procesó exitosamente y debes continuar juzgando status.

resultadoProcesamiento comercial
SUCCESSComplete el procesamiento contable local basado en el monto real
PROCESSINGManténgalo local para confirmación y verifique el pedido original.
HTTP Tiempo de espera, error de red, el resultado no se puede analizarEl resultado se considera desconocido y se consulta el orden original; No se puede determinar directamente como un error ni crear un nuevo pedido y volver a intentarlo.
Identificado FAILEDLiberar la reserva local de acuerdo con el claro resultado del fallo; crear una nueva orden comercial cuando el negocio necesita iniciarse nuevamente

La consulta de financiación utiliza la interfaz dedicada POST /v1/agent/wallet-transfer-status:

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

Utilice este punto final dedicado para recuperar la operación de financiación original; queryOrder no puede reemplazarlo. Guarde el entorno original y páselo explícitamente durante la recuperación. Si se omite environment de wallet-transfer-status, el servidor utiliza el entorno guardado en el pedido original, incluidos los pedidos simulados. Un entorno explícitamente en conflicto devuelve 102002 (order environment mismatch). Cuando la persona que llama omite el entorno, la respuesta omite environment también; Esto no significa que el pedido original sea un pedido de producción.

Los depósitos y retiros locales de los comerciantes son idempotentes; Las órdenes y saldos persistentes se reservan antes del inicio y se reservan para confirmación cuando se desconoce el resultado. El acceso a la financiación utiliza una consulta dedicada para confirmar el estado final; No asuma que la transferencia del contrato anterior Webhook o los métodos de reversión sean automáticamente aplicables a la Financiación.

Flujo de transferencia de contrato existente

Los transfer, transferAllOut, reverse, queryOrder, listOrders originales continúan procesando el proceso de transferencia del contrato original. queryOrder está consultando órdenes de transferencia de fondos, listOrders es una lista de conciliación de transferencias; en cambio, Consultas perpetuas se utilizan para órdenes comerciales perpetuas.

La respuesta de financiación original utiliza orderStatus; la respuesta de financiación utiliza status, no los mezcle. La transferencia original Webhook se verifica usando X-Agent-Timestamp, X-Agent-Nonce, X-Agent-Signature, y el texto de la firma original es timestamp + nonce + rawBody; el cuerpo de la solicitud original primero se verifica, luego se deserializa y se vuelve idempotente. Las notificaciones explícitas del entorno simulado contienen environment=SIMULATED, las notificaciones de producción siguen siendo compatibles con los campos antiguos. La cantidad, el número de pedido, el estado y el entorno deben verificarse con el pedido comercial local.

Guías fuente y relacionadas

Campos de solicitud de financiación

CampoRequeridoSignificado
agentOrderNoSíNúmero de pedido de socio único a nivel mundial; persistir antes de enviar.
agentUserId / platformUserIdUnoIdentificar al usuario vinculado; si se suministran ambos, deben coincidir.
directionSíUna de las cuatro direcciones documentadas anteriormente.
currencyPredeterminado USDTSólo se admite USDT.
transferAllFalso predeterminadoSolo las transferencias internas de financiación/contrato son compatibles con True.
amountCondicionalCadena decimal positiva para una transferencia fija; omitir para transferAll=true.
environmentOpcionalProducción cuando se omita para una nueva transferencia; SIMULATED selecciona fondos simulados.

Campos de respuesta de financiación

CampoSignificado
orderNoIdentificador de operación devuelto; conservar junto con el número de pedido del socio original.
statusSUCCESS / PROCESSING / FAILED; determina la finalización del negocio.
direction / currencyDirección de transferencia confirmada y activo.
amountMonto real transferido como una cadena.
transferAllSi esta operación solicitó todos los fondos retirables.
agentUserId / platformUserIdIdentidad de usuario devuelta; comparar con el pedido guardado.
resultCodeDetalle del resultado de la operación; retener para la reconciliación y el apoyo.
environmentSe repite cuando la persona que llama lo proporciona explícitamente; la ausencia no es prueba de producción para una consulta de estado del pedido original.