Download the PHP package lopezsoft/ubl21dian without Composer
On this page you can find all versions of the php package lopezsoft/ubl21dian. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download lopezsoft/ubl21dian
More information about lopezsoft/ubl21dian
Files in lopezsoft/ubl21dian
Package ubl21dian
Short Description Core for electronic invoicing pre-validation - DIAN UBL 2.1
License MIT
Homepage https://matias-api.com
Informations about the package ubl21dian
DIAN SDK Node
Librería para Node.js y TypeScript diseñada para facilitar la integración con los servicios web de la DIAN en Colombia. Permite la firma de documentos electrónicos (facturas, notas, nómina) bajo el estándar XAdES-EPES y la comunicación SOAP con los endpoints de la DIAN.
Este proyecto es una migración y modernización de la librería PHP lopezsoft/ubl21dian, aplicando principios de Clean Code, SOLID y Patrones de Diseño para una mayor mantenibilidad y extensibilidad.
✨ Características
- Arquitectura Moderna: Construida con TypeScript y siguiendo patrones de diseño como Facade, Command y Template Method.
- Firma XAdES-EPES: Firma de documentos UBL 2.1 según los requerimientos de la DIAN.
- Firma SOAP con WS-Security: Aseguramiento de los mensajes enviados al web service.
- Soporte Completo para Operaciones DIAN:
- Envío de facturas (síncrono y asíncrono).
- Envío de Nómina Electrónica.
- Envío de eventos (ApplicationResponse).
- Consulta de estado de documentos y ZIPs.
- Consulta de rangos de numeración.
- Consulta de adquirientes (
GetAcquirer). - ¡Y más!
- Fácilmente Extensible: Añadir nuevas operaciones de la DIAN es tan simple como crear una nueva clase
Command, sin modificar el código existente.
📦 Instalación
🚀 Uso Básico
La librería se utiliza a través de la clase DianClient, que actúa como una fachada para todas las operaciones. El flujo de trabajo es simple:
- Instanciar el cliente con la configuración necesaria.
- Inicializarlo con las credenciales del certificado.
- Ejecutar comandos para cada operación, pasándole los parámetros requeridos.
Ejemplo Completo: Enviar una Factura Electrónica
A continuación, un ejemplo completo de cómo firmar y enviar una factura electrónica.
Ejemplo 2: Consultar el Estado de un Documento
Ejemplo 3: Enviar Nómina Electrónica
📚 API (Resumen)
DianClient
Es la clase principal y el único punto de entrada a la librería.
new DianClient(options): Crea una nueva instancia del cliente.options.environment:1para PRODUCCIÓN o2para HABILITACIÓN.
initialize(options): Método asíncrono que carga y valida el certificado. Debe ser llamado antes de ejecutar cualquier comando.options.certificate:Buffercon el contenido del archivo.p12.options.passwordPsswrd: Contraseña del certificado.
execute(command, params): Método asíncrono que ejecuta una operación.command: Una instancia de la clase de comando que representa la operación (ej.new SendBillSyncCommand()).params: Un objeto con los parámetros que requiere ese comando específico.
Comandos Disponibles (/commands)
Cada clase representa una operación de la DIAN. Debes instanciar el comando que necesitas y pasarlo al método execute del cliente.
| Comando | Descripción | Parámetros (params) |
|---|---|---|
SendBillSyncCommand |
Envía una factura síncronamente. | { fileName: string, unsignedUblXml: string } |
SendBillAsyncCommand |
Envía una factura asíncronamente. | { fileName: string, unsignedUblXml: string } |
SendNominaSyncCommand |
Envía un documento de Nómina Electrónica. | { unsignedPayrollXml: string } |
SendEventCommand |
Envía un evento (ej. acuse de recibo). | { unsignedEventXml: string } |
SendBillAttachmentAsyncCommand |
Envía un documento adjunto (AttachedDocument). |
{ fileName: string, unsignedAttachedDocumentXml: string } |
SendTestSetAsyncCommand |
Envía un Set de Pruebas para habilitación. | { fileName: string, contentFile: string, testSetId: string } |
GetStatusCommand |
Consulta el estado de un documento. | { trackId: string } |
GetStatusZipCommand |
Consulta el estado de un envío asíncrono (ZIP). | { trackId: string } |
GetNumberingRangeCommand |
Consulta los rangos de numeración. | { accountCode: string, accountCodeT: string, softwareCode: string } |
GetXmlByDocumentKeyCommand |
Obtiene el XML de un documento por su CUFE/CUDE. | { trackId: string } |
GetExchangeEmailsCommand |
Obtiene los correos de intercambio del facturador. | null (no requiere) |
GetReferenceNotesCommand |
Obtiene las notas asociadas a un documento. | { trackId: string } |
GetAcquirerCommand |
Consulta la información de un adquiriente por su ID. | { identificationType: string, identificationNumber: string } |
📄 Licencia
Este proyecto está bajo la Licencia MIT. Puedes usarlo libremente en tus proyectos comerciales y de código abierto.
All versions of ubl21dian with dependencies
ext-dom Version *
ext-xml Version *
ext-curl Version *
ext-libxml Version *
ext-openssl Version *
ext-xmlwriter Version *
nesbot/carbon Version ^2.19 || ^3.8
ext-json Version *