Saltar al contenido principal

Rutas

Una ruta describe un corredor por el que tu compañía está configurada para enviar — el tipo de pago que usa, la tasa cotizada para ese corredor, su esquema de comisiones y los límites vigentes en este momento. RoutesClient expone un único endpoint de lectura que lista lo disponible hoy.

Accede directamente en RetornaClient o a través de client.routes() — las dos formas ejecutan el mismo código.

getRoutes() / getRoutes(sourceCurrency)​

Lista las rutas configuradas para la compañía autenticada.

Firma​

public RoutesResponse getRoutes()

public RoutesResponse getRoutes(String sourceCurrency)

La sobrecarga sin argumentos equivale a llamar a la otra con sourceCurrency = null, que cae en la moneda de origen default del backend, USDR.

Parámetros​

NombreTipoRequeridoDescripción
sourceCurrencyStringNoMoneda desde la que se cotizan las rutas. Null cae en el default del backend (USDR).

Retorno​

RoutesResponse:

AccesorTipoSignificado
routes()List<Route>Rutas configuradas. El campo en el wire es routes, no data.

Cada Route:

AccesorTipoSignificado
name()StringNombre de la ruta.
method()StringMétodo de pago de esta ruta (por ejemplo "BANK_TRANSFER"). Se guarda como string para que un método nuevo no rompa la deserialización.
country()StringPaís de destino, ISO 3166-1 alpha-2.
currency()StringMoneda de destino.
rate()StringTasa de cambio cotizada para la ruta, como decimal string (p. ej. "852.79") — igual que el resto de los montos en el wire. Es indicativa, viene de la configuración del corredor, no es un monto de dinero liquidado.
fees()List<RouteFee>Esquema de comisiones; vacío cuando no aplica ninguna. Cada RouteFee tiene pricingRule(), pricingType(), percentageValue() (double), flatValue() (double), pricingLabel() — todos en camelCase también en el wire, a diferencia del resto de este envelope.
limits()RouteLimitsVer abajo.

RouteLimits:

AccesorTipoSignificado
perTransaction()PerTransactionLimitmin()/max(), strings decimales, límites por transacción.
transaction()TransactionWindowsVentanas basadas en cantidad: daily(), weekly(), monthly(), cada una un TransactionWindow con max(), current(), remaining() (todos int).
fund()FundWindowsVentanas basadas en valor: daily(), weekly(), monthly(), cada una un FundWindow con max(), current(), remaining() (todos strings decimales).

Ejemplo​

import app.retorna.sdk.RetornaClient;
import app.retorna.sdk.RetornaClientBuilder;
import app.retorna.sdk.core.environment.RetornaEnvironment;
import app.retorna.sdk.models.route.Route;
import app.retorna.sdk.models.route.RoutesResponse;

RetornaClient client = new RetornaClientBuilder()
.environment(RetornaEnvironment.SANDBOX)
.clientId(System.getenv("RETORNA_CLIENT_ID"))
.clientSecret(System.getenv("RETORNA_CLIENT_SECRET"))
.privateKey(System.getenv("RETORNA_PRIVATE_KEY"))
.buildClient();

RoutesResponse routes = client.getRoutes("USDR");
for (Route route : routes.routes()) {
System.out.printf("%s -> %s %s (%s) rate=%s max/txn=%s%n",
route.name(), route.country(), route.currency(), route.method(),
route.rate(), route.limits().perTransaction().max());
}

Errores​

  • IllegalArgumentException — un sourceCurrency no null pero vacío.
  • RetornaB2BException con codeEnum() uno de: B2B_UNAUTHORIZED, B2B_COMPANY_NOT_FOUND — no hay compañía asociada a las credenciales, B2B_RATE_LIMITED — reintentable, B2B_UNKNOWN.
  • RetornaAuthException — falla del intercambio de token.
  • RetornaSdkException — falla de red o falla de deserialización.

Notas​

  • Los límites se mueven a medida que se consume el período — léelos en el momento de la llamada y no los guardes como una tabla fija.
  • rate() en una ruta es informativo para planificar un corredor; consigue la tasa real fijada para una transferencia concreta con createQuotation.

Referencia de API​

GET /me/routes