Cuándo usar esta guía
Integración estándar (NO requiere esta guía)
Usa la integración estándar si quieres:- Consumir la API de Confío para crear pagos desde tu aplicación.
- Recibir webhooks de Confío sobre cambios de estado de pagos.
- Usar una cuenta centralizada de Confío para procesar pagos de todos tus usuarios.
- Contacta a tu gerente de cuenta de Confío para obtener tu
CONFIO_ACCESS_TOKEN. - Proporciona la URL de tu endpoint de webhooks y el token que Confío debe usar para autenticarse contra ese endpoint.
- Comienza con la guía de creación de pagos y la guía de webhooks.
Programa de partners (SÍ requiere esta guía)
Esta guía aplica si:- Eres un Partner (por ejemplo, Shopify, Dropi, WooCommerce u otra plataforma de e-commerce).
- Cada comercio de tu plataforma conecta su propia tienda de Confío.
- Confío debe validar un token emitido por tu plataforma antes de crear la integración.
- Tu plataforma debe recibir un token emitido por Confío para llamar la API pública en nombre de esa integración.
Confío admite distintos flujos de Partner. Esta guía documenta el contrato público para Partners que exponen endpoints propios (/merchanty/notifications). Shopify y WooCommerce tienen flujos específicos gestionados por la interfaz de Confío.
Conceptos y tokens
Confío registrará una URL base de tu API (PARTNER_BASE_URL). A partir de esa
URL, Confío llama rutas fijas:
Por ejemplo, si tu URL base es
https://tu-api.com/confio, Confío llamará:
GET https://tu-api.com/confio/merchantPOST https://tu-api.com/confio/notifications
PARTNER_ACCESS_TOKEN: token que genera tu plataforma. El comercio lo copia en Confío al activar la integración. Confío lo usa comoAuthorization: Bearer <PARTNER_ACCESS_TOKEN>cuando llama a tus endpoints. Debe seguir siendo válido mientras la integración esté activa.CONFIO_ACCESS_TOKEN: token que Confío genera al crear la integración. Confío lo envía en el webhook dehandshake. Tu plataforma debe guardarlo y usarlo comoAuthorization: Bearer <CONFIO_ACCESS_TOKEN>al llamar la API pública de Confío.
Resumen del flujo
Requisitos previos
Antes de activar integraciones, coordina con Confío:- Registro del Partner en Confío.
- Configuración de la URL base de tu API (
PARTNER_BASE_URL). - Los eventos de webhook soportados por este contrato:
payment.statusChangedpaymentAttempt.statusChanged
GET {PARTNER_BASE_URL}/merchantPOST {PARTNER_BASE_URL}/notifications- Generación y validación de
PARTNER_ACCESS_TOKEN. - Almacenamiento seguro del
CONFIO_ACCESS_TOKENrecibido en el handshake.
Paso 1: Generar el PARTNER_ACCESS_TOKEN
Tu plataforma debe permitir que el comercio genere un token para conectar su cuenta con Confío. Este token:
- Debe identificar inequívocamente al comercio en tu plataforma.
- Debe poder revocarse si la integración se desactiva.
- Debe permanecer válido mientras la integración esté activa, porque Confío lo reutiliza en webhooks futuros.
Paso 2: Implementar GET /merchant
Confío usa este endpoint para validar el PARTNER_ACCESS_TOKEN y obtener la información del comercio.
Solicitud
Este ejemplo asume PARTNER_BASE_URL=https://tu-api.com/confio.
Respuesta 200
id: identificador del comercio en tu plataforma.name: nombre visible del comercio.
Errores recomendados
401 Unauthorized: falta el bearer token o el token es inválido.403 Forbidden: token revocado o no autorizado.404 Not Found: comercio no encontrado.429 Too Many Requests: rate limit.5xx: error interno o dependencia no disponible.
Ejemplo de implementación
Paso 3: Recibir el webhook handshake
Después de validar el comercio, Confío crea un CONFIO_ACCESS_TOKEN y lo entrega a tu plataforma con un webhook handshake.
Solicitud
data.organization: identificador de la organización en Confío.data.store: identificador de la tienda en Confío.data.token:CONFIO_ACCESS_TOKENque tu plataforma debe guardar.X-Confio-Event: también contiene el evento (handshake).X-Confio-Checksum: contiene el mismo valor designature.checksum.
Firma/checksum de webhooks
Confío incluye un checksum SHA-256 en cada webhook. Para validarlo:- Toma los valores de
dataen el orden indicado porsignature.properties. - Concatena esos valores como strings.
- Concatena
timestamp. - Concatena la clave de firma.
- Calcula SHA-256 y representa el resultado en hexadecimal mayúscula, sin prefijos como
sha256=.
CONFIO_ACCESS_TOKEN de la integración. En el handshake, esa clave es el mismo data.token que estás recibiendo.
Ejemplo para handshake:
Ejemplo de endpoint POST /notifications
Paso 4: Llamar la API pública de Confío
Usa elCONFIO_ACCESS_TOKEN recibido en el handshake para autenticar llamadas a Confío.
Ejemplo:
Webhooks posteriores
Para Partners que usan este contrato, Confío crea automáticamente un webhook hacia:payment.statusChangedpaymentAttempt.statusChanged
CONFIO_ACCESS_TOKEN.
Estos webhooks usan el mismo formato de envoltura (event, data, timestamp, signature) y se autentican con:
Eliminar integración (teardown)
Cuando la integración se inactiva en Confío, Confío envía un webhook teardown a tu endpoint.
CONFIO_ACCESS_TOKEN que guardaste durante el handshake.
Seguridad y buenas prácticas
- Usa HTTPS siempre.
- Valida
Authorization: Bearer PARTNER_ACCESS_TOKENen cada solicitud recibida desde Confío. - Valida
X-Confio-Eventysignature.checksumantes de procesar el payload. - Guarda
CONFIO_ACCESS_TOKENde forma segura. - Al crear pagos con la API pública, usa un
Idempotency-Keypara identificar cada operación lógica de creación; usa una clave nueva para cada pago nuevo. - Diseña
/notificationsde forma idempotente: Confío puede reintentar webhooks si no recibe una respuesta2xx. - Registra solicitudes y respuestas para auditoría y soporte.
Pruebas de integración
Flujo recomendado:- Genera un
PARTNER_ACCESS_TOKENen tu entorno de pruebas. - Activa la integración en el sandbox de Confío.
- Verifica que Confío llama
GET {PARTNER_BASE_URL}/merchant. - Verifica que recibes el webhook
handshakey guardas elCONFIO_ACCESS_TOKEN. - Crea un pago usando la API pública con
CONFIO_ACCESS_TOKEN. - Confirma que recibes webhooks de estado en
{PARTNER_BASE_URL}/notifications.