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.
| Clase | Estado | Cuándo ocurre |
|---|---|---|
InvalidRequestError | 400, 404, 409 | Parámetros inválidos, recurso inexistente o conflicto de estado |
AuthenticationError | 401 | API key ausente, con formato inválido o revocada |
PermissionError | 403 | La operación exige una llave live |
IdempotencyError | 409 | Llave de idempotencia reutilizada con otros datos |
RateLimitError | 429 | Superaste 120 peticiones por minuto con la misma llave |
ApiError | 5xx | Error 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
| Propiedad | Qué contiene |
|---|---|
message | Descripción en español; se puede mostrar al usuario |
type | Tipo de error, por ejemplo invalid_request_error |
code | Código estable para decidir en tu código, por ejemplo email_taken |
status | Estado HTTP de la respuesta, si la hubo |
param | Parámetro que causó el error, si aplica |
requestId | Id de la petición; inclúyelo al escribir a soporte |
details | Datos 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
InvalidRequestErrorindica un problema en los datos: corrígelos antes de reintentar. - Los errores de red, los
429y los5xxya se reintentaron solos. Si aun así fallan, reintenta más tarde con la misma llave de idempotencia. - Guarda el
requestIden tus logs y envíalo cuando escribas a soporte.
Códigos frecuentes
| Código | Qué significa |
|---|---|
parameter_missing | Falta un parámetro obligatorio (mira param) |
parameter_invalid | Un parámetro no tiene el formato o el valor esperado |
resource_missing | El id no existe o es de otro modo |
email_taken | Ya hay un cliente con ese email; details.existingId trae su id |
external_id_taken | Ya hay un cliente con ese externalId; details.existingId trae su id |
missing_api_key | No configuraste LANDAPAY_API_KEY ni apiKey |
timeout | La API no respondió a tiempo |
invalid_signature | La firma del webhook no coincide con tu secreto |