Ejecutar pago de una orden
POST/orders/:uuid/pay
Crea directamente la transacción de pago en la pasarela para una orden PENDING de la empresa del usuario (alternativa al widget de pago). El monto enviado es el total_amount de la orden. La orden sigue en PENDING al responder: el estado final (PAID si la transacción es APPROVED, FAILED si es DECLINED) llega de forma asíncrona por el webhook de WOMPI. Consulte GET /orders/{uuid} para ver el resultado. Si la transacción termina en VOIDED o ERROR, la orden permanece en PENDING (no pasa a FAILED): consulte el estado de la transacción en latest_transaction de GET /orders/{uuid} y, si ya es final, vuelva a pagar con POST /orders/{uuid}/pay y un nuevo token de pago (use POST /orders/{uuid}/retry si necesita un token de aceptación nuevo o los datos del widget) o elimine la orden. Si la orden es CERTIFICATE_RENEWAL, antes de cobrar se comprueba que el certificado aún se pueda renovar: si no, no se crea ninguna transacción, las órdenes de renovación PENDING de ese certificado pasan a FAILED y se responde 422 con reason; si sí, se actualiza la fecha de la orden, lo que pospone hasta 48 horas la revocación automática del certificado mientras el pago se completa. Esa espera solo se respeta hasta 3 días después de terminado el periodo de gracia (fecha de vencimiento + días de gracia + 3 días); pasado ese límite, la revocación automática revoca el certificado aunque haya un pago de renovación en curso. La validación del cuerpo se hace antes que cualquier otra comprobación (empresa del usuario, existencia y estado de la orden, renovación): un cuerpo inválido responde 422 aunque la orden no exista o no esté en PENDING.
Request
Responses
- 200
- 401
- 403
- 404
- 422
- 429
- 500
Transacción creada en la pasarela
No autenticado
La empresa del usuario está inactiva
Dos casos: (1) el usuario no tiene empresa asociada (message: 'No se encontró la empresa asociada al usuario.'); (2) la orden no existe, pertenece a otra empresa o no está en PENDING (message: 'Recurso no encontrado.'). Una orden CERTIFICATE_RENEWAL que pasó a FAILED tras un 422 también responde 404 en llamadas posteriores.
Dos casos: (1) validación del cuerpo fallida: {success: false, message: 'Los datos proporcionados no son válidos.', errors: {...}}; (2) orden CERTIFICATE_RENEWAL cuyo certificado ya no se puede renovar: {success: false, message, reason} (ver OrderRenewalNotPayable); la orden queda en FAILED y no se cobra.
Límite general de 60 peticiones por minuto excedido.
Error interno. Incluye: la pasarela rechazó la creación de la transacción (message: 'Error interno del servidor. WOMPI: error al crear transacción. HTTP <código>'), y la pasarela no respondió en 30 s o falló la conexión (message: 'Error interno del servidor. cURL error ...'). Nota: si installments pasa la validación sin llegar como número entero JSON (p. ej. "3", 3.0, true o un valor enviado como form-data), la respuesta es 500 con el cuerpo genérico del framework ({"message":"Server Error"}, sin success; página HTML si la petición no envía Accept: application/json) y no se crea ninguna transacción.