Traducción de
docs/en/providers/overview.md, que es el original. Si discrepan, manda el inglés.
Los proveedores son plugins, nunca ramas en el núcleo. La interfaz está en
apps/api/src/core/providers/provider-plugin.ts; el registro, en
plugin-registry.ts.
#Estado actual
| Proveedor | Estado en ejecución | Superficie | Fidelidad |
|---|---|---|---|
| Mercado Pago | Implementado | Operaciones concretas de Orders | Detalle |
| Stripe | Implementado | Operaciones concretas de PaymentIntents y Refunds | Detalle |
| PayPal | Implementado | Orders v2, Payments v2, OAuth y checkout de aprobación | Detalles |
«Implementado» se calcula: un plugin tiene que tener rutas y pasar la
conformidad estática. No se puede teclear en la tabla gateways. Quien opera
puede encender o apagar un proveedor, marcarlo como planeado, esqueleto o
obsoleto, y sobrescribir números contables, pero no puede editar el
enrutado, la validación ni el comportamiento de toWire.
#Responsabilidades del plugin
| Asunto | Lo pone el plugin | Lo pone el núcleo |
|---|---|---|
| HTTP | rutas reales y validación del contrato | entrada comodín y orden de la petición |
| Traducción | petición del proveedor → orden canónica; vista canónica → cable | operaciones y estados canónicos |
| Credenciales | formato, reconocimiento y negativa con su forma | búsqueda por digest y resolución del inquilino |
| Idempotencia | nombre de la cabecera y operaciones que la exigen | huella, lock, repetición y conflicto |
| Estados y errores | vocabulario total del proveedor | la decisión de que un estado o una negativa existen |
| Contabilidad | declaración de comisión, plazo y monedas | apuntes cuadrados y liquidación |
| Webhooks | asunto, cuerpo, firma y verificación | outbox, cola, reintentos e intentos |
| Checkout | plantilla de URL y catálogo de métodos | API pública de checkout y armazón compartido |
Los plugins son objetos planos, sin dependencias inyectadas. Eso impide que un proveedor cree una segunda implementación de las transacciones, la idempotencia, el libro mayor o la entrega.
#Las dos mitades de un proveedor
El comportamiento del backend vive en apps/api/src/providers/<id>/. La identidad
de cara al comprador vive aparte, en apps/checkout/providers/<id>/. No se
importan. Las capacidades del checkout cruzan la frontera por las respuestas de
la API.
Para el flujo completo de alta, ver Añadir un proveedor.