Antes de empezar
.NET 6 o superior
Una API key de pruebas de Flashpi
Guárdala en una variable de entorno, nunca en el código ni en el repositorio.
Tu certificado de firma .p12
Cargado en la cuenta de pruebas.
Tus datos de emisor
RUC, establecimiento y punto de emisión configurados en tu cuenta.
Paso 1 · Crea el proyecto
dotnet new console -n Facturacion
cd Facturacion
export FLASHPI_API_KEY="tu_api_key_de_pruebas"Paso 2 · Reemplaza Program.cs
// Program.cs (.NET 6 o superior)
using System.Net.Http.Headers;
using System.Net.Http.Json;
var apiKey = Environment.GetEnvironmentVariable("FLASHPI_API_KEY")
?? throw new InvalidOperationException("Falta la variable FLASHPI_API_KEY");
using var http = new HttpClient
{
BaseAddress = new Uri("https://api.flashpi.ec/v1/"),
Timeout = TimeSpan.FromSeconds(30)
};
http.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", apiKey);
var factura = new
{
comprador = new
{
tipo_identificacion = "cedula",
identificacion = "0102030405",
razon_social = "Cliente de ejemplo",
email = "[email protected]"
},
detalles = new[]
{
new { descripcion = "Servicio de ejemplo", cantidad = 1, precio_unitario = 25.00 }
}
};
var respuesta = await http.PostAsJsonAsync("facturas", factura);
var cuerpo = await respuesta.Content.ReadAsStringAsync();
if (!respuesta.IsSuccessStatusCode)
{
Console.Error.WriteLine($"Flashpi {(int)respuesta.StatusCode}: {cuerpo}");
return 1;
}
Console.WriteLine(cuerpo);
return 0;Paso 3 · Ejecútalo
dotnet runPaso 4 · Llévalo a una aplicación real
En ASP.NET Core no crees un HttpClient por solicitud. Regístralo con IHttpClientFactory (builder.Services.AddHttpClient<FlashpiClient>(...)) y lee la API key desde la configuración o un gestor de secretos.
Paso 5 · Maneja errores y reintentos
Ante EN_PROCESAMIENTO consulta el estado en lugar de reenviar. Para reintentos ante fallos de red, usa una política de reintentos (por ejemplo con Polly) y un identificador único por venta, para no duplicar comprobantes.
Errores frecuentes
| Síntoma | Causa probable | Qué hacer | Referencia |
|---|---|---|---|
401 Unauthorized | API key ausente, inválida o de otro ambiente. | Revisa el header Authorization y que uses la key del ambiente correcto. | Ver detalle |
422 Esquema XML | Algún campo no cumple la estructura esperada. | Lee el detalle del error y corrige el campo indicado. | Ver detalle |
SRI 43 | Clave de acceso ya registrada. | No reenvíes: consulta el estado del comprobante por su clave de acceso. | Ver detalle |
SRI 70 | Clave de acceso en procesamiento. | Espera unos segundos y consulta el estado. No reenvíes el comprobante. | Ver detalle |