|
| 1 | +# FiscalAPI SDK para .NET |
| 2 | + |
| 3 | +[](https://www.nuget.org/packages/FiscalApi/) |
| 4 | +[](https://github.com/FiscalAPI/fiscalapi-net/blob/main/LICENSE) |
| 5 | + |
| 6 | +SDK oficial de FiscalAPI para .NET, la API de facturación CFDI más importante en México. Simplifica la integración con los servicios de facturación electrónica, eliminando las complejidades del SAT y facilitando la generación de facturas, notas de crédito y complementos de pago. |
| 7 | + |
| 8 | +## 🚀 Características |
| 9 | + |
| 10 | +- Soporte completo para CFDI 4.0 |
| 11 | +- Compatible con múltiples versiones de .NET (desde .NET Framework 4.6.1 hasta .NET 8) |
| 12 | +- Operaciones asíncronas y sincrónicas |
| 13 | +- Flexibilidad en modos de operación: por valores o referencias |
| 14 | +- Manejo simplificado de errores |
| 15 | +- Documentación completa y ejemplos prácticos |
| 16 | + |
| 17 | +## 📦 Instalación |
| 18 | + |
| 19 | +Instala el paquete FiscalAPI vía NuGet Package Manager: |
| 20 | + |
| 21 | +```bash |
| 22 | +Install-Package FiscalApi |
| 23 | +``` |
| 24 | + |
| 25 | +O vía .NET CLI: |
| 26 | + |
| 27 | +```bash |
| 28 | +dotnet add package FiscalApi |
| 29 | +``` |
| 30 | + |
| 31 | +## ⚙️ Configuración |
| 32 | + |
| 33 | +Configura el cliente con tus credenciales: |
| 34 | + |
| 35 | +```csharp |
| 36 | +var settings = new FiscalApiOptions |
| 37 | +{ |
| 38 | + ApiUrl = "https://test.fiscalapi.com", // Usa https://fiscalapi.com para producción |
| 39 | + ApiKey = "<tu_api_key>", |
| 40 | + ApiVersion = "v4", |
| 41 | + Tenant = "<tenant>", |
| 42 | + TimeZone = "America/Mexico_City" |
| 43 | +}; |
| 44 | + |
| 45 | +var fiscalApi = FiscalApiClient.Create(settings); |
| 46 | +``` |
| 47 | + |
| 48 | +## 🔄 Modos de Operación |
| 49 | + |
| 50 | +FiscalAPI soporta dos modos de operación: |
| 51 | + |
| 52 | +### Por Referencias |
| 53 | +- Envía solo los IDs de objetos previamente creados en el dashboard. |
| 54 | +- Ideal para integraciones rápidas y ligeras. |
| 55 | + |
| 56 | +### Por Valores |
| 57 | +- Envía todos los campos requeridos en cada petición. |
| 58 | +- Proporciona mayor control sobre los datos. |
| 59 | +- No requiere configuración previa en el dashboard. |
| 60 | + |
| 61 | +## 📝 Ejemplos de Uso |
| 62 | + |
| 63 | +### Crear una Factura de Ingreso (Por Referencias) |
| 64 | + |
| 65 | +```csharp |
| 66 | +var invoice = new Invoice |
| 67 | +{ |
| 68 | + VersionCode = "4.0", |
| 69 | + Series = "A", |
| 70 | + Date = DateTime.Now, |
| 71 | + PaymentFormCode = "01", |
| 72 | + CurrencyCode = "MXN", |
| 73 | + TypeCode = "I", |
| 74 | + ExpeditionZipCode = "42501", |
| 75 | + Issuer = new InvoiceIssuer { Id = "id-del-emisor" }, |
| 76 | + Recipient = new InvoiceRecipient { Id = "id-del-receptor" }, |
| 77 | + Items = new List<InvoiceItem> |
| 78 | + { |
| 79 | + new InvoiceItem { Id = "id-del-producto", Quantity = 1 } |
| 80 | + }, |
| 81 | + PaymentMethodCode = "PUE", |
| 82 | +}; |
| 83 | + |
| 84 | +var response = await fiscalApi.Invoices.CreateAsync(invoice); |
| 85 | +``` |
| 86 | + |
| 87 | +### Crear una Nota de Crédito (Por Valores) |
| 88 | + |
| 89 | +```csharp |
| 90 | +var creditNote = new Invoice |
| 91 | +{ |
| 92 | + VersionCode = "4.0", |
| 93 | + Series = "NC", |
| 94 | + TypeCode = "E", // E para egreso (nota de crédito) |
| 95 | + ExpeditionZipCode = "42501", |
| 96 | + RelatedInvoices = new List<RelatedInvoice> |
| 97 | + { |
| 98 | + new RelatedInvoice |
| 99 | + { |
| 100 | + Uuid = "UUID-de-factura-relacionada", |
| 101 | + RelationshipTypeCode = "01" |
| 102 | + } |
| 103 | + } |
| 104 | +}; |
| 105 | + |
| 106 | +var response = await fiscalApi.Invoices.CreateAsync(creditNote); |
| 107 | +``` |
| 108 | + |
| 109 | +### Buscar en Catálogos SAT |
| 110 | + |
| 111 | +```csharp |
| 112 | +var apiResponse = await fiscalApi.Catalogs.SearchCatalogAsync("SatUnitMeasurements", "inter", 1, 10); |
| 113 | + |
| 114 | +if (apiResponse.Succeeded) |
| 115 | +{ |
| 116 | + foreach (var item in apiResponse.Data.Items) |
| 117 | + { |
| 118 | + Console.WriteLine($"Unidad: {item.Description}"); |
| 119 | + } |
| 120 | +} |
| 121 | +else |
| 122 | +{ |
| 123 | + Console.WriteLine(apiResponse.Message); |
| 124 | +} |
| 125 | +``` |
| 126 | + |
| 127 | +## ⏳ Operaciones Asíncronas y Sincrónicas |
| 128 | + |
| 129 | +### Asíncrono |
| 130 | + |
| 131 | +```csharp |
| 132 | +var apiResponse = await fiscalApi.Catalogs.SearchCatalogAsync("SatUnitMeasurements", "inter", 1, 10); |
| 133 | +``` |
| 134 | + |
| 135 | +### Sincrónico |
| 136 | + |
| 137 | +```csharp |
| 138 | +var apiResponse = Task.Run(async () => await fiscalApi.Catalogs.SearchCatalogAsync("SatUnitMeasurements", "inter", 1, 10)).Result; |
| 139 | +``` |
| 140 | + |
| 141 | +## 📋 Operaciones Principales |
| 142 | + |
| 143 | +### Facturas (CFDI) |
| 144 | +- Crear facturas de ingreso, notas de crédito y complementos de pago. |
| 145 | +- Cancelación de facturas. |
| 146 | +- Generación de PDF/XML. |
| 147 | + |
| 148 | +### Personas (Clientes/Emisores) |
| 149 | +- Alta y administración de personas. |
| 150 | +- Gestión de certificados (CSD). |
| 151 | + |
| 152 | +### Productos y Servicios |
| 153 | +- Administración de catálogos de productos. |
| 154 | +- Búsqueda en catálogos SAT. |
| 155 | + |
| 156 | +## 🤝 Contribuir |
| 157 | + |
| 158 | +1. Haz un fork del repositorio. |
| 159 | +2. Crea una rama para tu feature (`git checkout -b feature/AmazingFeature`). |
| 160 | +3. Realiza commits de tus cambios (`git commit -m 'Add some AmazingFeature'`). |
| 161 | +4. Haz push a la rama (`git push origin feature/AmazingFeature`). |
| 162 | +5. Abre un Pull Request. |
| 163 | + |
| 164 | +## 🐛 Reportar Problemas |
| 165 | + |
| 166 | +1. Usa la última versión del SDK. |
| 167 | +2. Verifica si el problema ya ha sido reportado. |
| 168 | +3. Proporciona un ejemplo mínimo reproducible. |
| 169 | +4. Incluye los mensajes de error completos. |
| 170 | + |
| 171 | +## 📄 Licencia |
| 172 | + |
| 173 | +Este proyecto está licenciado bajo la Licencia MIT. Consulta el archivo [LICENSE](LICENSE) para más detalles. |
| 174 | + |
| 175 | +## 🔗 Enlaces Úúles |
| 176 | + |
| 177 | +- [Documentación Oficial](https://docs.fiscalapi.com) |
| 178 | +- [Portal de FiscalAPI](https://fiscalapi.com) |
| 179 | +- [Soporte](https://fiscalapi.com/soporte) |
| 180 | + |
0 commit comments