Documentación Métodos C#
Agregar referencia web en el proyecto: http://www.appoctava.cl/ws/WebService.php?wsdl
Registrada nuestra empresa, con el RUT y Paswoord obtenida abtendremos nuestro Token.
Services.APIFACTURAELECTRONICACHILE s = new Services.APIFACTURAELECTRONICACHILE();
// Parametros de entrada
// RUTACCESOAPI = RUT EMPRESA REGISTRADA.
// PASSWORDACCESOAPI = PASSWORD OBTENIDA CON EL METODO RegistraCedente.
// Establecer parametros de envío Ejemplo:
ArregloDeEstructuras resultado = s.ObtenerToken("99999999-9", "SOLICITAR PASSWORD DEMO");
XmlDocument xml = new XmlDocument();
xml.LoadXml(resultado.Any[0].OuterXml);
XmlNodeList xmllista = xml.SelectNodes("/item");
// Parametros de salida
string output = "";
foreach (XmlNode nodo in xmllista)
{
output += "Descripción: " + nodo["DescripcionResultado"].InnerText + "\t\t\r\n";
output += "Token: " + nodo["Token"].InnerText + "\t\t\r\n";
output += "Fecha y Hora Token: " + nodo["FechaHoraRegistro"].InnerText + "\t\t\r\n";
output += "Tiempo de Ejecución: " + nodo["TiempoEjecucion"].InnerText + "\t\t\r\n";
}
MessageBox.Show(output);
* El TOKEN tiene 6 horas de vida útil antes de su expiración.
RESPUESTAS DescripcionResultado:
TOK = Token Generado Correctamente.
TERR = Datos de Acceso para Generar Token Incorrectos.
TDUP = Ya Existe un Token Activo.
TBLOQ = La empresa se encuentra bloqueada para ingresar al sistema, favor contactar a su proveedor.
RESPUESTAS Token:
TOKEN
Services.APIFACTURAELECTRONICACHILE s = new Services.APIFACTURAELECTRONICACHILE();
// Parametros de entrada
// TOKEN = TOKEN OBTENIDO EN MÉTODO ObtenerToken
// TokenObtenido = valor obtenido por el método ObtenerToken.
ArregloDeEstructuras resultado = s.ValidarTokenExt(TokenObtenido);
XmlDocument xml = new XmlDocument();
xml.LoadXml(resultado.Any[0].OuterXml);
XmlNodeList xmllista = xml.SelectNodes("/item");
// Parametros de salida
string output = "";
foreach (XmlNode nodo in xmllista)
{
output += "Descripción: " + nodo["DescripcionResultado"].InnerText + "\t\t\r\n";
output += "Tiempo de Ejecución: " + nodo["TiempoEjecucion"].InnerText + "\t\t\r\n";
}
MessageBox.Show(output);
RESPUESTAS DescripcionResultado:
TDUP = Ya Existe un Token Activo.
TVAL = Token Válido.
TEXP = Token Expirado.
TINV = Token Invalido.
Método que permite procesar los XML (STRING) al Servidor Central .
Services.APIFACTURAELECTRONICACHILE s = new Services.APIFACTURAELECTRONICACHILE();
string xml_dte = "<DTE version=\"1.0\">"
+ "<Documento ID=\"F437T33\">"
+ "<Encabezado>"
+ "<IdDoc>"
+ "<TipoDTE>33</TipoDTE>"
+ "<Folio>1</Folio>"
+ "<FchEmis>2013-10-23</FchEmis>"
+ "</IdDoc>"
+ "<Emisor>"
+ "<RUTEmisor>99999999-9</RUTEmisor>"
+ "<RznSoc>EMPRESA DEMO SPA</RznSoc>"
+ "<GiroEmis>DESARROLLO DE SOFTWARE</GiroEmis>"
+ "<Acteco>513100</Acteco>"
+ "<DirOrigen>BASCUNAN GUERRERO 57 LOCAL 1</DirOrigen>"
+ "<CmnaOrigen>SANTIAGO</CmnaOrigen>"
+ "<CiudadOrigen>SANTIAGO</CiudadOrigen>"
+ "</Emisor>"
+ "<Receptor>"
+ "<RUTRecep>76024726-K</RUTRecep>"
+ "<RznSocRecep>PALOBLANCO SA</RznSocRecep>"
+ "<GiroRecep>PRODUCTORA DE SERVICIOS CULTURALES</GiroRecep>"
+ "<DirRecep>AV LA PAZ 451 502A</DirRecep>"
+ "<CmnaRecep>QUILPUE</CmnaRecep>"
+ "<CiudadRecep>QUILPUE</CiudadRecep>"
+ "</Receptor>"
+ "<Totales>"
+ "<MntNeto>63531</MntNeto>"
+ "<MntExe>0</MntExe>"
+ "<TasaIVA>19</TasaIVA>"
+ "<IVA>12071</IVA>"
+ "<MntTotal>75602</MntTotal>"
+ "</Totales>"
+ "</Encabezado>"
+ "<Detalle>"
+ "<NroLinDet>1</NroLinDet>"
+ "<NmbItem>POLERA PERSONALIZADA</NmbItem>"
+ "<QtyItem>27.0</QtyItem>"
+ "<UnmdItem>UN</UnmdItem>"
+ "<PrcItem>2353.0</PrcItem>"
+ "<MontoItem>63531</MontoItem>"
+ "</Detalle>"
+ "<Detalle>"
+ "<NroLinDet>2</NroLinDet>"
+ "<NmbItem>POLERA PERSONALIZADA 2</NmbItem>"
+ "<QtyItem>27.0</QtyItem>"
+ "<UnmdItem>UN</UnmdItem>"
+ "<PrcItem>2353.0</PrcItem>"
+ "<MontoItem>63531</MontoItem>"
+ "</Detalle>"
+ "<Detalle>"
+ "<NroLinDet>3</NroLinDet>"
+ "<NmbItem>POLERA PERSONALIZADA 3</NmbItem>"
+ "<QtyItem>27.0</QtyItem>"
+ "<UnmdItem>UN</UnmdItem>"
+ "<PrcItem>2353.0</PrcItem>"
+ "<MontoItem>63531</MontoItem>"
+ "</Detalle>"
+ "</Documento>"
+ "</DTE>";
string xml_adicional = "FORMATO XML ADICIONAL QUE DEBE SER SOLICITADO A SU PROVEEDOR.";
// Parametros de entrada
// ASIGNAFOLIO = True: ASIGA CORRELATIVO OCTAVA SOFTWARE- False: ASIGNA CORRELATIVO SEGUN NODO <Folio></Folio> EN EL XML DTE.
// TIPO IMPRESO = 1:COPIA ORIGINAL - 2:COPIA CEDIBLE.
// AMBIENTE = 1:PRODUCCIÓN - 0:PRUEBAS
// TokenObtenido = TOKEN OBTENIDO POR EL MÉDOTO INICIAL.
ArregloDeEstructuras resultado = s.ProcesaDte(xml_dte,xml_adicional,"1","1-2", "0", TokenObtenido);
XmlDocument xml = new XmlDocument();
xml.LoadXml(resultado.Any[0].OuterXml);
XmlNodeList xmllista = xml.SelectNodes("/item");
// Parametros de salida
string output = "";
foreach (XmlNode nodo in xmllista)
{
output += "Descripción: " + nodo["DescripcionResultado"].InnerText + "\t\t\r\n";
output += "ID Resultado FE: " + nodo["IdResultadoFE"].InnerText + "\t\t\r\n";
output += "Resultado FE: " + nodo["ResultadoFE"].InnerText + "\t\t\r\n";
output += "Url Pdf: " + nodo["UrlPdf"].InnerText + "\t\t\r\n";
output += "Folio Asignado: " + nodo["FolioAsignado"].InnerText + "\t\t\r\n";
output += "Tiempo de Ejecución: " + nodo["TiempoEjecucion"].InnerText + "\t\t\r\n";
}
MessageBox.Show(output);
RESPUESTAS DescripcionResultado:
TDUP = Ya Existe un Token Activo.
TVAL = Token Válido.
TEXP = Token Expirado.
TINV = Token Invalido.
RESPUESTAS (IdResultadoFE - ResultadoFE)
Número de resultado - Descripción de resultado
Ej: 0 - DTE procesado correctamente.
RESPUESTAS UrlPdf
Ruta del PDF procesado.
Método que permite Consultar los PDF (URL) al Servidor Central .
Services.APIFACTURAELECTRONICACHILE s = new Services.APIFACTURAELECTRONICACHILE();
// Parametros de entrada
// TIPODTE = TIPO DE DOCUMENTO TRIBUTARIO.
// FOLIODTE = NÚMERO DE FOLIO DEL DTE.
// AMBIENTE = 1:PRODUCCIÓN - 0:PRUEBAS
// TokenObtenido = valor obtenido por el método ObtenerToken.
ArregloDeEstructuras resultado = s.ConsultaPdf("33", "1", "0", TokenObtenido);
XmlDocument xml = new XmlDocument();
xml.LoadXml(resultado.Any[0].OuterXml);
XmlNodeList xmllista = xml.SelectNodes("/item");
// Parametros de salida
string output = "";
foreach (XmlNode nodo in xmllista)
{
output += "Descripción: " + nodo["DescripcionResultado"].InnerText + "\t\t\r\n";
output += "ID Resultado FE: " + nodo["IdResultadoFE"].InnerText + "\t\t\r\n";
output += "Resultado FE: " + nodo["ResultadoFE"].InnerText + "\t\t\r\n";
output += "Url Pdf: " + nodo["UrlPdf"].InnerText + "\t\t\r\n";
output += "Tiempo de Ejecución: " + nodo["TiempoEjecucion"].InnerText + "\t\t\r\n";
}
MessageBox.Show(output);
RESPUESTAS DescripcionResultado:
TDUP = Ya Existe un Token Activo.
TVAL = Token Válido.
TEXP = Token Expirado.
TINV = Token Invalido.
RESPUESTAS (IdResultadoFE - ResultadoFE)
Número de resultado - Descripción de resultado
Ej: 0 - Impreso DTE generado correctamente.
RESPUESTAS UrlPdf
Ruta del PDF consultado.
Método que permite Consultar los XML (URL) al Servidor Central .
Services.APIFACTURAELECTRONICACHILE s = new Services.APIFACTURAELECTRONICACHILE();
// Parametros de entrada
// TIPODTE = TIPO DE DOCUMENTO TRIBUTARIO.
// FOLIODTE = NÚMERO DE FOLIO DEL DTE.
// AMBIENTE = 1:PRODUCCIÓN - 0:PRUEBAS
// TokenObtenido = valor obtenido por el método ObtenerToken.
ArregloDeEstructuras resultado = s.ConsultaXml("33", "1", "0", TokenObtenido);
XmlDocument xml = new XmlDocument();
xml.LoadXml(resultado.Any[0].OuterXml);
XmlNodeList xmllista = xml.SelectNodes("/item");
// Parametros de salida
string output = "";
foreach (XmlNode nodo in xmllista)
{
output += "Descripción: " + nodo["DescripcionResultado"].InnerText + "\t\t\r\n";
output += "ID Resultado FE: " + nodo["IdResultadoFE"].InnerText + "\t\t\r\n";
output += "Resultado FE: " + nodo["ResultadoFE"].InnerText + "\t\t\r\n";
output += "Url Xml SII: " + nodo["UrlXmlSii"].InnerText + "\t\t\r\n";
output += "Url Xml Receptor: " + nodo["UrlXmlReceptor"].InnerText + "\t\t\r\n";
output += "Tiempo de Ejecución: " + nodo["TiempoEjecucion"].InnerText + "\t\t\r\n";
}
MessageBox.Show(output);
RESPUESTAS DescripcionResultado:
TDUP = Ya Existe un Token Activo.
TVAL = Token Válido.
TEXP = Token Expirado.
TINV = Token Invalido.
RESPUESTAS (IdResultadoFE - ResultadoFE)
Número de resultado - Descripción de resultado
Ej: 0 - XML DTE SII retornado correctamente.
RESPUESTAS UrlXmlSii
Ruta del xml enviado al SII consultado.
RESPUESTAS UrlXmlReceptor
Ruta del xml enviado al receptor consultado.
Método que permite Consultar el estado en el SII de los DTEs.
Services.APIFACTURAELECTRONICACHILE s = new Services.APIFACTURAELECTRONICACHILE();
// Parametros de entrada
// TIPODTE = TIPO DE DOCUMENTO TRIBUTARIO.
// FOLIODTE = NÚMERO DE FOLIO DEL DTE.
// AMBIENTE = 1:PRODUCCIÓN - 0:PRUEBAS
// TokenObtenido = valor obtenido por el método ObtenerToken.
ArregloDeEstructuras resultado = s.ConsultaEstadoDte("33", "1", "0", TokenObtenido);
XmlDocument xml = new XmlDocument();
xml.LoadXml(resultado.Any[0].OuterXml);
XmlNodeList xmllista = xml.SelectNodes("/item");
// Parametros de salida
string output = "";
foreach (XmlNode nodo in xmllista)
{
output += "Descripción: " + nodo["DescripcionResultado"].InnerText + "\t\t\r\n";
output += "ID Resultado FE: " + nodo["IdResultadoFE"].InnerText + "\t\t\r\n";
output += "Resultado FE: " + nodo["ResultadoFE"].InnerText + "\t\t\r\n";
output += "Codigo Estado SII: " + nodo["CodEstadoSII"].InnerText + "\t\t\r\n";
output += "Glosa Estado SII: " + nodo["GlosaEstadoSII"].InnerText + "\t\t\r\n";
output += "Tiempo de Ejecución: " + nodo["TiempoEjecucion"].InnerText + "\t\t\r\n";
}
MessageBox.Show(output);
RESPUESTAS DescripcionResultado:
TDUP = Ya Existe un Token Activo.
TVAL = Token Válido.
TEXP = Token Expirado.
TINV = Token Invalido.
RESPUESTAS (IdResultadoFE - ResultadoFE)
Número de resultado - Descripción de resultado
Ej: 0 - Estado DTE SII retornado correctamente.
RESPUESTAS (CodEstadoSII - GlosaEstadoSII)
Código estado del DTE en el SII - Closa estado del DTE en el SII.
* Tabla informativa
CodEstadoSII | GlosaEstadoSII | TIPO DTE |
---|---|---|
0 | Documento Recibido por el SII. Datos Coinciden con los Registrados | TODOS MENOS BOLETA |
1 | Documento Recibido por el SII pero Datos NO Coinciden con los registrados | TODOS MENOS BOLETA |
3 | Documento No Recibido por el SII | TODOS MENOS BOLETA |
4 | Documento No Autorizado | TODOS MENOS BOLETA |
5 | Documento Anulado | TODOS MENOS BOLETA |
11 | Existe Nota de Credito que Modifica Textos Documento | TODOS MENOS BOLETA |
12 | Existe Nota de Debito que Modifica Montos Documento | TODOS MENOS BOLETA |
13 | Existe Nota de Credito que Modifica Montos Documento | TODOS MENOS BOLETA |
14 | Existe Nota de Debito que Anula Documento | TODOS MENOS BOLETA |
15 | Existe Nota de Credito que Anula Documento | TODOS MENOS BOLETA |
DOK | Documento Recibido por el SII. Datos Coinciden con los Registrados | SOLO BOLETA |
FAN | Documento Anulado | SOLO BOLETA |
FAU | Documento No Recibido por el SII | SOLO BOLETA |
Método que permite notificar a los receptores los DTEs a su casila electrónica registrada en el SII.
Services.APIFACTURAELECTRONICACHILE s = new Services.APIFACTURAELECTRONICACHILE();
// Parametros de entrada
// TIPODTE = TIPO DE DOCUMENTO TRIBUTARIO.
// FOLIODTE = NÚMERO DE FOLIO DEL DTE.
// ADJUNTARPDF = 1: ADJUNTA PDF - 0: NO ADJUNTA PDF
// EMAILCC = EMAIL COPIA NOTIFICACIÓN.
// TokenObtenido = valor obtenido por el método ObtenerToken.
ArregloDeEstructuras resultado = s.NotificaDte("33", "230", "0", "moisesoe@gmail.com", TokenObtenido);
XmlDocument xml = new XmlDocument();
xml.LoadXml(resultado.Any[0].OuterXml);
XmlNodeList xmllista = xml.SelectNodes("/item");
// Parametros de salida
string output = "";
foreach (XmlNode nodo in xmllista)
{
output += "Descripción: " + nodo["DescripcionResultado"].InnerText + "\t\t\r\n";
output += "ID Resultado FE: " + nodo["IdResultadoFE"].InnerText + "\t\t\r\n";
output += "Resultado FE: " + nodo["ResultadoFE"].InnerText + "\t\t\r\n";
output += "Email Receptor: " + nodo["EmailNotificacion"].InnerText + "\t\t\r\n";
output += "Tiempo de Ejecución: " + nodo["TiempoEjecucion"].InnerText + "\t\t\r\n";
}
MessageBox.Show(output);
* Este método solo funciona con DTE procesados en ambiente de producción.
RESPUESTAS DescripcionResultado:
TDUP = Ya Existe un Token Activo.
TVAL = Token Válido.
TEXP = Token Expirado.
TINV = Token Invalido.
RESPUESTAS (IdResultadoFE - ResultadoFE)
Número de resultado - Descripción de resultado
Ej: 0 - DTE notificado correctamente al receptor.
RESPUESTAS EmailNotificacion
Email del receptor al cual fue notificado el DTE.
Método que permite cargar el xml de los Folios(CAF = Código de Autorización de Folios) al servidor central.
Services.APIFACTURAELECTRONICACHILE s = new Services.APIFACTURAELECTRONICACHILE();
String stringcaf = "<AUTORIZACION>"
+ "<CAF version=\"1.0\">"
+ "<DA>"
+ " <RE>99999999-9</RE>"
+ " <RS>demo spa</RS>"
+ "<TD>33</TD>"
+ "<RNG>"
+ " <D>1</D>"
+ " <H>55</H>"
+ " </RNG>"
+ " <FA>2017-01-03</FA>"
+ " <RSAPK>"
+ " <M>uDa0w829Kpc3mgTipZFM045+74IT86I0CYXJv+qjq4gpocRCsG8gpVA+h4QwXw6KEgzcfQU9sfTyplZT8zHAfQ==</M>"
+ " <E>Aw==</E>"
+ " </RSAPK>"
+ " <IDK>55</IDK>"
+ " </DA>"
+ " <FRMA algoritmo=\"SHA1withRSA\">XaLXfU0CCMc68/5iMQwsz6UxLh6VDLWZCaHIsBVbXDNsMWdzbcIR8IYj9mXP4TsNyw8xS6UuzO+sEMwdlfpHLw==</FRMA>"
+ "</CAF>"
+ "<RSASK>-----BEGIN RSA PRIVATE KEY-----"
+ "MIIBOgIBAAJBALg2tMPNvSqXN5oE4qWRTNOOfu+CE/OiNAmFyb/qo6uIKaHEQrBv"
+ "IKVQPoeEMF8OihIM3H0FPbH08qZWU/MxwH0CAQMCQHrPIy0z03G6JRFYlxkLiI0J"
+ "qfUBYqJsIrED29VHF8eu+Jl3ts5DK8HsSSvEuTwSlf/gN74FFY2Mv82+VDEB+isC"
+ "IQDxSFOAvvI3VQ6zc+Q1GvMVBoBVj9ypMxsAExIKmj8U8QIhAMNzPS+8GCetXx1R"
+ "+OVp/5QLvDNQIPQqhtLepssPb7RNAiEAoNriVdSheji0d6KYI2dMuK8AOQqTG3dn"
+ "VWIMBxF/Y0sCIQCCTNN1KBAac5S+NqXuRqpisn13isCixwSMlG8yCkp4MwIhAM8F"
+ "HtEbN4/3xezHqdpfRdNj782tEfXqb24N0GHiqpgW"
+ "-----END RSA PRIVATE KEY-----"
+ " </RSASK>"
+ " <RSAPUBK>-----BEGIN PUBLIC KEY-----"
+ "MFowDQYJKoZIhvcNAQEBBQADSQAwRgJBALg2tMPNvSqXN5oE4qWRTNOOfu+CE/Oi"
+ "NAmFyb/qo6uIKaHEQrBvIKVQPoeEMF8OihIM3H0FPbH08qZWU/MxwH0CAQM="
+ " -----END PUBLIC KEY-----"
+ " </RSAPUBK>"
+ " </AUTORIZACION>";
// Parametros de entrada
// STRINGCAF = STRING DEL XML CAF.
// AMBIENTE = 1:PRODUCCIÓN - 0:PRUEBAS
// TokenObtenido = valor obtenido por el método ObtenerToken.
ArregloDeEstructuras resultado = s.CargaFolio(stringcaf, "1", TokenObtenido);
XmlDocument xml = new XmlDocument();
xml.LoadXml(resultado.Any[0].OuterXml);
XmlNodeList xmllista = xml.SelectNodes("/item");
// Parametros de salida
string output = "";
foreach (XmlNode nodo in xmllista)
{
output += "Descripción: " + nodo["DescripcionResultado"].InnerText + "\t\t\r\n";
output += "ID Resultado FE: " + nodo["IdResultadoFE"].InnerText + "\t\t\r\n";
output += "Resultado FE: " + nodo["ResultadoFE"].InnerText + "\t\t\r\n";
output += "Tiempo de Ejecución: " + nodo["TiempoEjecucion"].InnerText + "\t\t\r\n";
}
MessageBox.Show(output);
* Este método solo funciona con DTE procesados en ambiente de producción.
RESPUESTAS DescripcionResultado:
TDUP = Ya Existe un Token Activo.
TVAL = Token Válido.
TEXP = Token Expirado.
TINV = Token Invalido.
RESPUESTAS (IdResultadoFE - ResultadoFE)
Número de resultado - Descripción de resultado
Ej: 0 - Caf cargado correctamente.