Saltar al contenido principal

Errores

Errores de la librería landapay: clases tipadas como InvalidRequestError y RateLimitError, sus propiedades y cómo manejarlos con instanceof y requestId.

Clases de error

Cuando algo falla, la librería lanza un error de una clase concreta. Todas heredan de LandapayError, así que puedes capturarlas juntas o por separado.

ClaseEstadoCuándo ocurre
InvalidRequestError400, 404, 409Parámetros inválidos, recurso inexistente o conflicto de estado
AuthenticationError401API key ausente, con formato inválido o revocada
PermissionError403La operación exige una llave live
IdempotencyError409Llave de idempotencia reutilizada con otros datos
RateLimitError429Superaste 120 peticiones por minuto con la misma llave
ApiError5xxError de Landa Pay; ya se reintentó automáticamente
ConnectionError—Sin conexión o tiempo de espera agotado
SignatureVerificationError—La firma de un webhook no es válida o está vencida

Propiedades

PropiedadQué contiene
messageDescripción en español; se puede mostrar al usuario
typeTipo de error, por ejemplo invalid_request_error
codeCódigo estable para decidir en tu código, por ejemplo email_taken
statusEstado HTTP de la respuesta, si la hubo
paramParámetro que causó el error, si aplica
requestIdId de la petición; inclúyelo al escribir a soporte
detailsDatos extra del error, como existingId en los duplicados

Manejar errores

Distinguir los erroresTypeScript
import {  ConnectionError,  InvalidRequestError,  LandapayError,  RateLimitError,  landapay,} from "landapay"; try {  await landapay.customers.create({ name: "María Gómez", email: "[email protected]" });} catch (error) {  if (error instanceof InvalidRequestError && error.code === "email_taken") {    const existingId = error.details.existingId as string;    // Reutilizar el cliente existente  } else if (error instanceof RateLimitError || error instanceof ConnectionError) {    // Reintentar más tarde  } else if (error instanceof LandapayError) {    console.error(error.code, error.message, error.requestId);  } else {    throw error;  }}
  • Un InvalidRequestError indica un problema en los datos: corrígelos antes de reintentar.
  • Los errores de red, los 429 y los 5xx ya se reintentaron solos. Si aun así fallan, reintenta más tarde con la misma llave de idempotencia.
  • Guarda el requestId en tus logs y envíalo cuando escribas a soporte.

Códigos frecuentes

CódigoQué significa
parameter_missingFalta un parámetro obligatorio (mira param)
parameter_invalidUn parámetro no tiene el formato o el valor esperado
resource_missingEl id no existe o es de otro modo
email_takenYa hay un cliente con ese email; details.existingId trae su id
external_id_takenYa hay un cliente con ese externalId; details.existingId trae su id
missing_api_keyNo configuraste LANDAPAY_API_KEY ni apiKey
timeoutLa API no respondió a tiempo
invalid_signatureLa firma del webhook no coincide con tu secreto