static void Main(string[] args) { // TODO: Add SF_API_PLATFORM = '-dos-net'; if (args.Length < 3) { Console.Error.WriteLine(@" Envia un archivo DTE en formato JSON al SII. SUPERFACTURA [usuario] [contraseña] [ambiente] [archivo] [opciones] usuario : Correo electrónico de su cuenta de SuperFactura. contraseña : Contraseña de su cuenta de SuperFactura. ambiente : Usar 'cer' para certificación o 'pro' para producción. archivo : Archivo en formato JSON o XML con los datos del DTE. opciones : Opcional. Cadena en formato JSON con opciones adicionales. Documentación: https://superfactura.cl/pages/otros-lenguajes Envíe sus consultas a: [email protected] " ); Environment.Exit(1); } string user = args[0]; string pass = args[1]; string ambiente = args[2]; string dteFile = null; string optionsJSON = null; if (args.Length >= 4) { dteFile = args[3]; } if (args.Length >= 5) { optionsJSON = args[4]; } API api; dynamic options = null; if (optionsJSON != null) { options = JsonConvert.DeserializeObject(optionsJSON); } if (options != null && options.url != null) { // Conexión a un servidor local api = new API((string)options.url, user, pass); } else { // Conexión a la nube de SuperFactura api = new API(user, pass); } string printer = null; string saveHTML = null; if (options != null) { if (options.savePDF != null) { api.SetSavePDF((string)options.savePDF); } if (options.saveXML != null) { api.SetSaveXML((string)options.saveXML); } printer = GetAndRemove(options, "printer"); if (printer != null) { options["getEscPos"] = 1; } saveHTML = GetAndRemove(options, "saveHTML"); if (saveHTML != null) { options["getHTML"] = 1; } } if (optionsJSON != null) { optionsJSON = JsonConvert.SerializeObject(options); api.AddOptions(optionsJSON); } // string json = System.IO.File.ReadAllText(dteFile, System.Text.Encoding.GetEncoding("ISO-8859-1")); string json = System.IO.File.ReadAllText(dteFile, System.Text.Encoding.Default); try { APIResult res = api.SendDTE(json, ambiente); // Console.WriteLine("Se creó el DTE con folio " + res.folio); // {"ok":true,"folio":"125"} Console.WriteLine("{\"ok\":" + (res.ok ? "true" : "false") + ",\"folio\":\"" + res.folio + "\"}"); if (printer != null) { res.PrintEscPos(printer); } if (saveHTML != null) { api.WriteFile(saveHTML + ".html", System.Text.Encoding.Default.GetBytes(res.html)); } } catch (Exception e) { // IMPORTANTE: Este mensaje se debe mostrar al usuario para poder darle soporte. // OBS: Lo tiramos por StdOut (en vez de StdErr para asegurar de que sea capturado por los usuarios. Console.WriteLine(e.Message); } }
static void Main(string[] args) { // No se envía usuario ni contraseña, ya que estos datos serán centralizados en el servidor. API api = new API("http://127.0.0.1:9080"); // Enviar documentID (importante para evitar documentos duplicados en caso de falla de red y reenvío): // Si se envía un ID ya utilizado, se retornará el mismo documento, en vez de crear uno nuevo. string documentID = "F123"; // El ID debe ser único por documento. Si se envía un ID ya usado, la API retornará el documento enviado anteriormente. api.SetOption("documentID", documentID); // Solicitar muestra impresa en formato EscPos para impresoras térmicas api.SetOption("getEscPos", true); // Solicitar descarga del PDF // api.SetSavePDF(@"C:\Users\kripp\Desktop\dte-" + documentID); // Solicitar descarga del XML firmado // api.SetSaveXML(@"C:\Users\kripp\Desktop\dte-" + documentID); // Aca se costruye el JSON con el contenido del documento. string json = @" { ""Encabezado"" : { ""IdDoc"" : { ""TipoDTE"" : ""33"" }, ""Emisor"" : { ""RUTEmisor"" : ""99581150-2"" }, ""Receptor"" : { ""RUTRecep"" : ""1-9"", ""RznSocRecep"" : ""Test"", ""GiroRecep"" : ""Giro"", ""DirRecep"" : ""Dirección"", ""CmnaRecep"" : ""Comuna"", ""CiudadRecep"" : ""Ciudad"" } }, ""Detalles"" : [ { ""NmbItem"" : ""Item 1"", ""DscItem"" : ""Descripción del item 1"", ""QtyItem"" : ""3"", ""UnmdItem"" : ""KG"", ""PrcItem"" : ""100"" }, { ""NmbItem"" : ""Item 2"", ""DscItem"" : ""Descripción del item 2"", ""QtyItem"" : ""5"", ""UnmdItem"" : ""KG"", ""PrcItem"" : ""65"" } ] } "; try { APIResult res = api.SendDTE(json, "cer"); Console.WriteLine("Se creó el DTE con folio " + res.folio); // Imprimir el documento a una impresora Esc/Pos conectada en LPT1 res.PrintEscPos("LPT1:"); // Mostrar XML firmado // Console.WriteLine(res.xml); } catch (Exception e) { Console.WriteLine(System.AppDomain.CurrentDomain.BaseDirectory); // IMPORTANTE: Este mensaje se debe mostrar al usuario para poder darle soporte. Console.WriteLine(e.Message); } }