Crear orden de compra de certificados
POST/orders
Crea una orden en estado PENDING para la empresa del usuario autenticado, con precio calculado según el tipo de usuario y el rango de volumen (ver GET /pricing), y genera quantity ítems PREPAID con la vigencia indicada (quedan utilizables solo cuando la orden pasa a PAID). Devuelve los datos para abrir el widget de pago de WOMPI. El precio unitario ya incluye IVA; total_amount = precio unitario × cantidad. Responde 200 (no 201). Si falla la consulta a la pasarela después de crear la orden, la orden queda PENDING y puede recuperarse con POST /orders/{uuid}/retry. La respuesta 500 de ese caso no incluye el uuid de la orden: obténgalo con GET /orders (la orden más reciente, en PENDING) antes de llamar a POST /orders/{uuid}/retry. Repetir POST /orders crea otra orden PENDING. Tipo de emisión: la orden se compra para un issuance_flow (BIOMETRIC o DOCUMENTARY) y sus cupos solo se consumen en solicitudes de ese tipo; no se pasan de un tipo a otro. Sin issuance_flow se usa el de la empresa (viafirma → BIOMETRIC; mail y dual → DOCUMENTARY). Se cotiza con la lista de precios de ese tipo (ver GET /pricing); si el tipo de usuario no tiene lista para ese tipo de emisión, responde 422 PRICING_TIER_NOT_FOUND.
Request
Responses
- 200
- 401
- 403
- 404
- 422
- 429
- 500
Orden creada (PENDING) y datos del widget de pago
No autenticado
La empresa del usuario está inactiva (message: 'Acceso no autorizado. La empresa se encuentra inactiva.')
El usuario no tiene empresa asociada (message: 'No se encontró la empresa asociada al usuario.')
Tres casos, sin crear la orden: (a) validación del cuerpo fallida: errors y message = 'Los datos proporcionados no son válidos.'; (b) issuance_flow no reconocido o no permitido para la empresa: error_code = INVALID_ISSUANCE_FLOW o ISSUANCE_FLOW_NOT_ALLOWED y errors.issuance_flow; (c) no existe un rango de precios para la cantidad, el tipo de usuario y el tipo de emisión: error_code = PRICING_TIER_NOT_FOUND. Para usuarios de tipo 3 y 4 el rango se busca con la cantidad efectiva (certificados vigentes de la empresa solicitados el año actual o el anterior + quantity, ver GET /pricing), así que puede ocurrir aunque quantity sea pequeña; el número del mensaje es esa cantidad efectiva, no la quantity enviada. Muestre message al usuario.
Límite general de 60 peticiones por minuto excedido.
Error interno. Incluye el fallo al obtener el token de aceptación de la pasarela.