API Factura Electrónica Chile

Documentación Métodos PHP

Agregar referencia web en el proyecto: http://www.appoctava.cl/ws/WebService.php?wsdl


Obtener Token

Registrada nuestra empresa, con el RUT y Paswoord obtenida abtendremos nuestro Token.

<?php 
    
//Desahabilitar cache
    
ini_set("soap.wsdl_cache_enabled""0");
    
//Parametros de entrada
    /*
    RUTACCESOAPI         = RUT EMPRESA REGISTRADA.
    PASSWORDACCESOAPI    = PASSWORD OBTENIDA CON EL METODO RegistraCedente.
    */
    
    //Establecer parametros de envío Ejemplo:
    
$parametros = array("RUTACCESOAPI" => "99999999-9","PASSWORDACCESOAPI" => "SOLICITAR PASSWORD DEMO"); 
    
    
//Dirección donde se encuentra el servicio
    
$client = new SoapClient("http://www.appoctava.cl/ws/WebService.php?wsdl");
    
    
//ObtenerToken
     
try{
      
//iniciar cliente soap    
      
$resultado $client->__SoapCall("ObtenerToken"$parametros);
      
      
//Parametros de salida
      
      
$DescripcionResultado=$resultado[0]->DescripcionResultado;
      
$Token=$resultado[0]->Token;
      
$FechaHoraToken=$resultado[0]->FechaHoraRegistro;
      
$TiempoEjecucion=$resultado[0]->TiempoEjecucion;
      
      echo 
$DescripcionResultado."<br/>";    
      echo 
$Token."<br/>";    
      echo 
$FechaHoraToken."<br/>";    
      
      
//Si hay algún problema intermedio ser atrapado aquí.
      
}catch (SoapFault $e){
          echo 
"Ups!! hubo un problema y no pudimos recuperar los datos.<br/>$e<hr/>";
      }  

     
?>

* 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


Validar Token Ext


<?php
      
//Desahabilitar cache
      
ini_set("soap.wsdl_cache_enabled""0");

      
//Dirección donde se encuentra el servicio
    
$client = new SoapClient("http://www.appoctava.cl/ws/WebService.php?wsdl");

      
//Parametros de entrada
      /*  TOKEN         = TOKEN OBTENIDO EN MÉTODO ObtenerToken      */
      
      // $TokenObtenido = valor obtenido por el método ObtenerToken.
      
$parametros = array("TOKEN" => $TokenObtenido);      
      
      try{
      
//iniciar cliente soap    
      
$resultado $client->__SoapCall("ValidarTokenExt"$parametros);
      
//parametro de salida
      
$DescripcionResultado $resultado[0]->DescripcionResultado;
      
$TiempoEjecucion=$resultado[0]->TiempoEjecucion;
      
      echo 
$DescripcionResultado."<br/>";
      
//Si hay algún problema intermedio ser atrapado aquí.
      
}catch (SoapFault $e){
          echo 
"Ups!! hubo un problema y no pudimos recuperar los datos.<br/>$e<hr/>";
      }         
      
?>


RESPUESTAS DescripcionResultado:

TDUP = Ya Existe un Token Activo.

TVAL = Token Válido.

TEXP = Token Expirado.

TINV = Token Invalido.


Procesa DTE

Método que permite procesar los XML (STRING) al Servidor Central .

<?php
    
//Desahabilitar cache
    
ini_set("soap.wsdl_cache_enabled""0");
    
    
//Dirección donde se encuentra el servicio
    
$client = new SoapClient("http://www.appoctava.cl/ws/WebService.php?wsdl");

      
    
$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>'
;
    
    
$xml_adicional 'FORMATO XML ADICIONAL QUE DEBE SER SOLICITADO A SU PROVEEDOR.';
    
    
/*
    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
    */
    
    // $Token = TOKEN OBTENIDO POR EL MÉDOTO INICIAL.
    
    
$parametros = array("STRINGXML" => $xml_dte,"STRINGXMLADICIONAL" => $xml_adicional,"ASIGNAFOLIO" => "True","TIPOIMPRESO" => "1-2","AMBIENTE" => "0","TOKEN" => $Token);
    
     try{
  
//iniciar cliente soap    
  
$resultado $client->__SoapCall("ProcesaDte"$parametros);
  
  
$DescripcionResultado=$resultado[0]->DescripcionResultado;
  
$IdResultadoFE =$resultado[0]->IdResultadoFE;
  
$ResultadoFE =$resultado[0]->ResultadoFE;
  
$FolioAsignado =$resultado[0]->FolioAsignado;
  
$UrlPdf=$resultado[0]->UrlPdf;
  
$TiempoEjecucion=$resultado[0]->TiempoEjecucion;
  
  echo 
$DescripcionResultado."<br/>";
  echo 
$IdResultadoFE."<br/>";
  echo 
$ResultadoFE."<br/>";
  echo 
$FolioAsignado."<br/>";
  echo 
$UrlPdf."<br/>";
  
  
//Si hay algún problema intermedio será atrapado aquí.
  
}catch (SoapFault $e){
      echo 
"Ups!! hubo un problema y no pudimos recuperar los datos.<br/>$e<hr/>";
  }   

  
?>


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.


Consulta PDF

Método que permite Consultar los PDF (URL) al Servidor Central .

<?php 
    
//Desahabilitar cache
    
ini_set("soap.wsdl_cache_enabled""0");
    
//Parametros de entrada
    /*
    TIPODTE   = TIPO DE DOCUMENTO TRIBUTARIO.
    FOLIODTE  = NÚMERO DE FOLIO DEL DTE.
    AMBIENTE = 1:PRODUCCIÓN - 0:PRUEBAS
    */
    
    //$Token = TOKEN OBTENIDO POR EL MÉDOTO INICIAL.

    //Establecer parametros de envío Ejemplo:
    
$parametros = array("TIPODTE" => "33","FOLIODTE" => "1","AMBIENTE" => "0","TOKEN" => $Token);
    
    
//Dirección donde se encuentra el servicio
    
$client = new SoapClient("http://www.appoctava.cl/ws/WebService.php?wsdl");
    
    
//ObtenerToken
     
try{
      
//iniciar cliente soap    
      
$resultado $client->__SoapCall("ConsultaPdf"$parametros);
      
$DescripcionResultado=$resultado[0]->DescripcionResultado;
      
$IdResultadoFE =$resultado[0]->IdResultadoFE;
      
$ResultadoFE =$resultado[0]->ResultadoFE;
      
$UrlPdf=$resultado[0]->UrlPdf;
      
      echo 
$DescripcionResultado."<br/>";
      echo 
$IdResultadoFE."<br/>";
      echo 
$ResultadoFE."<br/>";
      echo 
$UrlPdf."<br/>";
      
      
//Si hay algún problema intermedio será atrapado aquí.
      
}catch (SoapFault $e){
          echo 
"Ups!! hubo un problema y no pudimos recuperar los datos.<br/>$e<hr/>";
      }  

     
?>


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.


Consulta XML

Método que permite Consultar los XML (URL) al Servidor Central .

<?php 
    
//Desahabilitar cache
    
ini_set("soap.wsdl_cache_enabled""0");
    
//Parametros de entrada
    /*
    TIPODTE   = TIPO DE DOCUMENTO TRIBUTARIO.
    FOLIODTE  = NÚMERO DE FOLIO DEL DTE.
    AMBIENTE = 1:PRODUCCIÓN - 0:PRUEBAS
    */
    
    //$Token = TOKEN OBTENIDO POR EL MÉDOTO INICIAL.

    //Establecer parametros de envío Ejemplo:
    
$parametros = array("TIPODTE" => "33","FOLIODTE" => "230","AMBIENTE" => "0","TOKEN" => $Token);
    
    
//Dirección donde se encuentra el servicio
    
$client = new SoapClient("http://www.appoctava.cl/ws/WebService.php?wsdl");
    
    
//ObtenerToken
     
try{
      
//iniciar cliente soap    
      
$resultado $client->__SoapCall("ConsultaXml"$parametros);
      
$DescripcionResultado=$resultado[0]->DescripcionResultado;
      
$IdResultadoFE =$resultado[0]->IdResultadoFE;
      
$ResultadoFE =$resultado[0]->ResultadoFE;
      
$UrlXmlSii=$resultado[0]->UrlXmlSii;
      
$UrlXmlReceptor=$resultado[0]->UrlXmlReceptor;
      
      echo 
$DescripcionResultado."<br/>";
      echo 
$IdResultadoFE."<br/>";
      echo 
$ResultadoFE."<br/>";
      echo 
$UrlXmlSii."<br/>";
      echo 
$UrlXmlReceptor."<br/>";
      
      
//Si hay algún problema intermedio será atrapado aquí.
      
}catch (SoapFault $e){
          echo 
"Ups!! hubo un problema y no pudimos recuperar los datos.<br/>$e<hr/>";
      }  

     
?>


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.


Consulta Estado DTE SII

Método que permite Consultar el estado en el SII de los DTEs.

<?php 
    
//Desahabilitar cache
    
ini_set("soap.wsdl_cache_enabled""0");
    
//Parametros de entrada
    /*
    TIPODTE   = TIPO DE DOCUMENTO TRIBUTARIO.
    FOLIODTE  = NÚMERO DE FOLIO DEL DTE.
    AMBIENTE = 1:PRODUCCIÓN - 0:PRUEBAS
    */
    
    //$Token = TOKEN OBTENIDO POR EL MÉDOTO INICIAL.
    
    //Establecer parametros de envío Ejemplo:
    
$parametros = array("TIPODTE" => "33","FOLIODTE" => "230","AMBIENTE" => "0","TOKEN" => $Token);
    
    
//Dirección donde se encuentra el servicio
    
$client = new SoapClient("http://www.appoctava.cl/ws/WebService.php?wsdl");
    
    
//ObtenerToken
     
try{
      
//iniciar cliente soap    
      
$resultado $client->__SoapCall("ConsultaEstadoDte"$parametros);
      
$DescripcionResultado=$resultado[0]->DescripcionResultado;
      
$IdResultadoFE =$resultado[0]->IdResultadoFE;
      
$ResultadoFE =$resultado[0]->ResultadoFE;
      
$CodEstadoSII=$resultado[0]->CodEstadoSII;
      
$GlosaEstadoSII=$resultado[0]->GlosaEstadoSII;
      
      echo 
$DescripcionResultado."<br/>";
      echo 
$IdResultadoFE."<br/>";
      echo 
$ResultadoFE."<br/>";
      echo 
$CodEstadoSII."<br/>";
      echo 
$GlosaEstadoSII."<br/>";
      
      
//Si hay algún problema intermedio será atrapado aquí.
      
}catch (SoapFault $e){
          echo 
"Ups!! hubo un problema y no pudimos recuperar los datos.<br/>$e<hr/>";
      }  

     
?>


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

Código estado del DTE en el SII.

RESPUESTAS GlosaEstadoSII

Closa estado del DTE en el SII.


Notifica DTE

Método que permite notificar a los receptores los DTEs a su casila electrónica registrada en el SII.

<?php 
    
//Desahabilitar cache
    
ini_set("soap.wsdl_cache_enabled""0");
    
//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.
    */
    
    //$Token = TOKEN OBTENIDO POR EL MÉDOTO INICIAL.
    
    //Establecer parametros de envío Ejemplo:
    
$parametros = array("TIPODTE" => "33","FOLIODTE" => "230","ADJUNTARPDF"=> "0","EMAILCC" => "moisesoe@gmail.com","TOKEN" => $Token);
    
    
//Dirección donde se encuentra el servicio
    
$client = new SoapClient("http://www.appoctava.cl/ws/WebService.php?wsdl");
    
    
//ObtenerToken
     
try{
      
//iniciar cliente soap    
      
$resultado $client->__SoapCall("NotificaDte"$parametros);
      
$DescripcionResultado=$resultado[0]->DescripcionResultado;
      
$IdResultadoFE =$resultado[0]->IdResultadoFE;
      
$ResultadoFE =$resultado[0]->ResultadoFE;
      
$EmailNotificacion=$resultado[0]->EmailNotificacion;
      
      echo 
$DescripcionResultado."<br/>";
      echo 
$IdResultadoFE."<br/>";
      echo 
$ResultadoFE."<br/>";
      echo 
$EmailNotificacion."<br/>";
      
      
//Si hay algún problema intermedio será atrapado aquí.
      
}catch (SoapFault $e){
          echo 
"Ups!! hubo un problema y no pudimos recuperar los datos.<br/>$e<hr/>";
      }  

     
?>


* 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.


Carga Folio

Método que permite cargar el xml de los Folios(CAF = Código de Autorización de Folios) al servidor central.

<?php
    
//Desahabilitar cache
    
ini_set("soap.wsdl_cache_enabled""0");
    
    
//Dirección donde se encuentra el servicio
    
$client = new SoapClient("http://www.appoctava.cl/ws/WebService.php?wsdl");

      
    
$stringcaf '<AUTORIZACION>
      <CAF version="1.0">
        <DA>
          <RE>99999999-9</RE>
          <RS>demo</RS>
          <TD>61</TD>
          <RNG>
            <D>1</D>
            <H>1000</H>
          </RNG>
          <FA>2015-02-03</FA>
          <RSAPK>
            <M>uDa0w829Kpc3mgTipZFM045+74IT86I0CYXJv+qjq4gpocRCsG8gpVA+h4QwXw6KEgzcfQU9sfTyplZT8zHAfQ==</M>
            <E>Aw==</E>
          </RSAPK>
          <IDK>100</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>'
;
    
    
    
/*
    STRINGCAF  = STRING DEL XML CAF.
    AMBIENTE = 1:PRODUCCIÓN - 0:PRUEBAS
    */
    
    // $Token = TOKEN OBTENIDO POR EL MÉDOTO INICIAL.
    
    
$parametros = array("STRINGCAF" => $stringcaf,"AMBIENTE" => "0","TOKEN" => $Token);
    
     try{
  
//iniciar cliente soap    
  
$resultado $client->__SoapCall("CargaFolio"$parametros);
  
  
$DescripcionResultado=$resultado[0]->DescripcionResultado;
  
$IdResultadoFE =$resultado[0]->IdResultadoFE;
  
$ResultadoFE =$resultado[0]->ResultadoFE;
  
$TiempoEjecucion=$resultado[0]->TiempoEjecucion;
  
  echo 
$DescripcionResultado."<br/>";
  echo 
$IdResultadoFE."<br/>";
  echo 
$ResultadoFE."<br/>";
 
  
  
//Si hay algún problema intermedio será atrapado aquí.
  
}catch (SoapFault $e){
      echo 
"Ups!! hubo un problema y no pudimos recuperar los datos.<br/>$e<hr/>";
  }   

  
?>


* 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.