External API

Documentación para desarrolladores

Integra pagos online y POS, consulta operaciones y recibe webhooks con la API externa de Avirato Payments.

External API - Guia de Integracion

Que es la External API

La External API de Avirato Payments permite a integradores externos (ERPs, plataformas de e-commerce, sistemas de gestion, etc.) procesar pagos online y pagos POS de forma segura, sin necesidad de conocer la infraestructura interna del sistema.

Con una sola integracion puedes:

  • Crear sesiones de pago online y redirigir al cliente a una pagina de pago segura
  • Procesar pagos POS enviando un cobro directamente a un terminal fisico
  • Modificar pagos: reembolsos totales y parciales, capturas de preautorizacion, cancelaciones y extensiones de preautorizacion
  • Consultar pagos: obtener detalles de una sesion, listar sesiones con filtros y paginacion, listar modificaciones

Entornos: Live y Test

La External API ofrece dos entornos completamente independientes:

LiveTest
PropositoProcesar pagos realesIntegrar y probar sin dinero real
URL basehttps://aviratopayments.com/external/v1/https://aviratopayments.com/external/v1/test/
API KeysKeys de entorno LiveKeys de entorno Test
Pagos onlineProcesador realSimulacion con tarjetas ficticias
Pagos POSTerminal fisico realSimulacion inmediata (magic amounts)
WebhooksEnviados por el procesador realGenerados automaticamente por el backend
Dinero realSiNo

Recomendacion: Integra primero en el entorno Test para verificar que tu sistema funciona correctamente. Una vez validado, cambia a Live simplemente usando tu API key de produccion y eliminando /test/ de las URLs.

URL Base

Live: https://aviratopayments.com/external/v1/
Test: https://aviratopayments.com/external/v1/test/

Todos los endpoints de esta documentacion muestran la URL completa del entorno Live. Para usar el entorno Test, inserta /test/ despues de /v1/. Por ejemplo:

  • Live: POST https://aviratopayments.com/external/v1/payment/session
  • Test: POST https://aviratopayments.com/external/v1/test/payment/session

Autenticacion rapida

Todas las peticiones requieren una API key en la cabecera X-API-KEY:

X-API-KEY: tu_api_key_aqui

Las API keys se gestionan desde el dashboard de Avirato Payments (seccion Integraciones > API Keys). Cada key esta vinculada a un webcode (identificador de negocio) y un entorno (Live o Test).

Ademas, todas las peticiones POST aceptan opcionalmente la cabecera Idempotency-Key para evitar operaciones duplicadas. Recomendamos usarla siempre en produccion. Reutilizar la misma clave con un body distinto u otro endpoint devuelve 409 Conflict (ver Autenticacion y Manejo de errores).

Para mas detalle: Autenticacion

Estructura de respuestas

Respuesta exitosa

Todas las respuestas exitosas siguen esta estructura:

{
  "success": true,
  "data": { ... }
}

El contenido de data varia segun el endpoint. El campo success siempre es true en respuestas 2xx.

Respuesta con error

{
  "success": false,
  "error": {
    "message": "Descripcion del error en ingles",
    "code": 12001,
    "statusCode": 400,
    "traceId": "abc123..."
  }
}

El traceId es unico por peticion. Incluyelo siempre cuando contactes con soporte tecnico. Ver Manejo de errores para el catalogo completo.

Conceptos clave antes de empezar

Sesion vs Pago (para pagos online)

Es fundamental entender esta distincion:

  • Sesion (sessionId): Es la intencion de cobro que tu sistema crea. Contiene el importe, URLs de retorno, etc.
  • Pago (paymentReference): Es la transaccion real autorizada por el procesador. Solo existe cuando el cliente completa el pago con exito.

Regla practica: Usa sessionId para consultar estado. Usa paymentReference para modificar (reembolsar, capturar, cancelar, extender).

Ver Pagos Online - Sesion vs Pago para la explicacion completa.

Operaciones asincronas

Las modificaciones (refund, capture, cancel, extend) son asincronas. La API acepta la peticion inmediatamente (HTTP 202) pero la operacion se procesa en background. El estado inicial es pending (refunds) o received (capture, cancel, extend) y evoluciona a success o failed conforme el procesador confirma.

Los pagos POS son sincronos: la peticion espera a que el terminal responda.

En entorno Test: Las modificaciones se resuelven de forma casi inmediata (el backend simula la respuesta del procesador). Recibiras el webhook de confirmacion en segundos.

Flujo tipico de integracion

1. Pago online

Tu sistema                        Avirato Payments                  Cliente
    |                                    |                              |
    |-- POST /payment/session ---------->|                              |
    |<-- 201 { sessionId, paymentUrl } --|                              |
    |                                    |                              |
    |-- Redirige al cliente ------------>+---------------------------->|
    |                                    |     (pagina de pago segura)  |
    |                                    |<-- Completa el pago ---------|
    |                                    |                              |
    |                                    |-- Redirige a urlOk -------->|
    |                                    |   (con datos cifrados)       |
    |                                    |                              |
    |-- GET /payment/session/{id} ------>|                              |
    |<-- { status: completed,            |                              |
    |      paymentReference: "..." } ----|                              |
    |                                    |                              |
    |   (Ahora puedes hacer refund,      |                              |
    |    capture, etc. con paymentRef)   |                              |

2. Pago POS

Tu sistema                        Avirato Payments         Terminal TPV
    |                                    |                      |
    |-- POST /pos/payment ------------->|                      |
    |                                    |-- Envia cobro ----->|
    |                                    |    (cliente paga     |
    |                                    |     en terminal)     |
    |                                    |<-- Resultado --------|
    |<-- 200 { status: success,          |                      |
    |          paymentReference } --------|                      |

Nota: Estos flujos funcionan de forma identica en el entorno Test, sustituyendo /external/v1/ por /external/v1/test/. La unica diferencia es que en Test el pago online se completa con tarjetas ficticias y el pago POS se simula con magic amounts (sin terminal real).

Diferencias clave entre Test y Live

AspectoLiveTest
Pago onlineEl cliente paga con tarjeta real en el formulario de pagoEl cliente usa tarjetas ficticias en formulario simulado
Pago POSEl terminal fisico procesa el cobroEl resultado se simula inmediatamente segun el importe
WebhooksEnviados por el procesador real cuando confirma la operacionGenerados automaticamente por el backend al completar la simulacion
ModificacionesProcesadas por el procesador real (puede tardar segundos/minutos)Simuladas instantaneamente por el backend
ReferenciasInfijo -EXT-, -PXT-, -POSX-, -RFX-, -CTX-, etc.Infijo -EXTT-, -PXTT-, -POSXT-, -RFXT-, -CTXT-, etc.
DineroTransacciones realesSin movimiento de dinero
DatosCompletamente aisladosCompletamente aislados (no se mezclan con live)

Indice de endpoints

Pagos Online

MetodoEndpointDescripcionHTTP Status
POST/payment/sessionCrear sesion de pago201
GET/payment/session/{sessionId}Obtener detalle de sesion200
GET/payment/sessionsListar sesiones200

Modificaciones (aplican a pagos online y POS)

MetodoEndpointDescripcionHTTP Status
POST/payment/refundReembolsar pago202
POST/payment/captureCapturar preautorizacion202
POST/payment/cancelCancelar preautorizacion202
POST/payment/extendExtender preautorizacion202
GET/payment/session/{sessionId}/modificationsListar modificaciones de una sesion200
GET/pos/payment/{posPaymentId}/modificationsListar modificaciones de un pago POS200
GET/modificationsListar todas las modificaciones200

Pagos POS

MetodoEndpointDescripcionHTTP Status
GET/pos/terminalsListar terminales activos200
POST/pos/paymentCrear pago POS200
GET/pos/paymentsListar pagos POS200

Recuerda: Para usar cualquier endpoint en el entorno Test, anade /test/ despues de /v1/. Ejemplo: POST /external/v1/test/payment/session.

Siguiente paso

  1. Configura tu autenticacion
  2. Crea tu primer pago online
  3. O empieza con pagos POS
  4. Aprende a modificar pagos
  5. Consulta pagos y modificaciones
  6. Recibe notificaciones via webhooks
  7. Manejo de errores
  8. Ejemplos completos end-to-end