Comencemos

1. Obtener la URL del WSDL

Un WSDL (Web Services Description Language) es un archivo XML que describe el servicio web.

La URL de este archivo es esencial para interactuar con el servicio SOAP.

Agregar referencia web a tu proyecto: http://www.appoctava.cl/wsboletahonorario/WebService.php?wsdl

Ejemplos PHP

Obtener Token

Registrada la empresa, con el RUT y Paswoord obtendremos nuestro Token para comenzar a trabajar.


                            <?php 
                            //Desahabilitar cache
                            ini_set("soap.wsdl_cache_enabled", "0"); 
                            //Parametros de entrada
                            //RUTACCESOAPI         = RUT EMPRESA  o USUARIO REGISTRADA.
                            //PASSWORDACCESOAPI    = PASSWORD enrtagada Por Octava Software.
                            //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/wsboletahonorario/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 ".$e;
                                }  
                            ?>

* 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

Emitir Boleta Honorario

Método que permite emitir Boletas de Honorarios directamente en el S.I.I.


TIPO_RETENCION = RETCONTRIBUYENTE / RETRECEPTOR

RETRECEPTOR: El receptor de la boleta actuará reteniendo el porcentaje vigente de Pago Provisional Mensual.
Indicado para los contribuyentes personas naturales o jurídicas de Segunda Categoría de la Ley de Impuesto a la Renta que emitirán sus boletas a contribuyentes obligados a efectuar la retención de impuestos por los honorarios que paguen.
----------------------------------------
RETCONTRIBUYENTE: El contribuyente emisor será quien se encargue de la retención del porcentaje vigente de Pago Provisional Mensual.
Indicado para los contribuyentes personas naturales o jurídicas de Segunda Categoría de la Ley de Impuesto a la Renta que declaran PPM de Segunda Categoría en el formulario F29.


PASSWORDSII_EMISOR = Password de ingreso a la web del S.I.I. como persona natural.


COD_DIRECCION_EMISOR = código de dirección del emisor de la boleta de honorarios, se debe obtener de la web del S.I.I.(Código Sucural) Home-> Mi SII ->Datos Personales y Tributarios, además se debe agregar un cero antes del código, ejemplo 076528163




    <?php 
    //Desahabilitar cache
    ini_set("soap.wsdl_cache_enabled", "0"); 
    
    //Establecer parametros de envío Ejemplo:
    $parametros = array("TIPO_RETENCION" => 'RETCONTRIBUYENTE',
                    "RUT_EMISOR" => '88888888-8',
                    "PASSWORDSII_EMISOR" => 'xxxxxxx',
                    "NOMBRE_EMISOR" => "HENRY ALEJANDRO MOLINA GONZALEZ",
                    "GLOSA_ACTIVIDAD_EMISOR" => "PROCESAMIENTO DE DATOS",
                    "COD_DIRECCION_EMISOR" => "076528163",
                    "RUT_RECEPTOR" => "11111111-1",
                    "NOMBRE_RECEPTOR" => "MOISES ESTEBAN OSORIO ESPINOZA",
                    "DIRECCION_RECEPTOR" => "AVENIDA OESTE 2067",
                    "COMUNA_RECEPTOR" => "CONCEPCION",
                    "FECHA_EMISION" => "2024-12-03",
                    "DESC_PRESTACION_UNO" => "software",
                    "VALOR_PRESTACION_UNO" => "500",
                    "DESC_PRESTACION_DOS" => "capacitacion",
                    "VALOR_PRESTACION_DOS" => "400",
                    "DESC_PRESTACION_TRES" => "integracion",
                    "VALOR_PRESTACION_TRES" => "100",
                    "DESC_PRESTACION_CUATRO" => "hardware",
                    "VALOR_PRESTACION_CUATRO" => "200",
                    "TOKEN" => $token);
    //Dirección donde se encuentra el servicio
    $client = new SoapClient('http://www.appoctava.cl/wsboletahonorario/WebService.php?wsdl');
    //ObtenerToken
     try{
      //iniciar cliente soap    
      $resultado = $client->__SoapCall("EmitirBoletaHonorario", $parametros);
      //Parametros de salida
      
      $DescripcionResultado=$resultado[0]->DescripcionResultado;
	  $IdResultadoFE=$resultado[0]->IdResultadoFE;
	  $ResultadoFE=$resultado[0]->ResultadoFE;
      $UrlPdf=$resultado[0]->UrlPdf;
	  $FolioAsignado =$resultado[0]->FolioAsignado;
	  $TiempoEjecucion=$resultado[0]->TiempoEjecucion;
      
      echo $DescripcionResultado."<br>";    
      echo $IdResultadoFE."<br>";        
      echo $ResultadoFE."<br>";              
      echo $UrlPdf."<br>";       
	  echo $FolioAsignado."<br>";
	  echo $TiempoEjecucion."<br>";
      
      //Si hay algún problema intermedio ser atrapado aquí.
      }catch (SoapFault $e){
          echo "Ups!! hubo un problema y no pudimos recuperar los datos.
$e
"; } ?>

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
0 - DTE procesado correctamente.
1 - Error para generar Boleta de Honorario, S.I.I. con intermitencias, favor intentar mas tarde.
3 - Credenciales acceso a S.I.I. incorrectos.

RESPUESTAS UrlPdf

Ruta del PDF procesado.

RESPUESTAS FolioAsignado

Folio asignado por el S.I.I. para la Boleta de Honorario.

Anular Boleta Honorario

Método que permite anular una Boleta de Honorario directamente en el S.I.I.


CAUSA_ANULACION =

1 = No se efectuo el pago de los servicios por parte del receptor.

2 = No se efectuo la prestacion de servicios.

3 = Error en la digitacion.



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

    //Establecer parametros de envío Ejemplo:
    $parametros = array("RUT_EMISOR" => '11111111-1',
                    "PASSWORDSII_EMISOR" => 'xxxxxx',
                    "FOLIO_BH" => '8888',
                    "CAUSA_ANULACION" => "3",
                    "TOKEN" => $token);
    //Dirección donde se encuentra el servicio
    $client = new SoapClient('http://www.appoctava.cl/wsboletahonorario/WebService.php?wsdl');
    //ObtenerToken
     try{
      //iniciar cliente soap    
      $resultado = $client->__SoapCall("AnularBoletaHonorario", $parametros);
      //Parametros de salida
      
      $DescripcionResultado=$resultado[0]->DescripcionResultado;
      $IdResultadoFE=$resultado[0]->Token;
      $ResultadoFE=$resultado[0]->FechaHoraRegistro;
      $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.
$e
"; } ?>

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
0 - La boleta de honorarios electronica se ha anulado correctamente.
1 - La boleta de honorarios electronica solicitada ya fue anulada anteriormente.
2 - No existe la boleta de honorarios electronica con la informacion ingresada.
3 - Error para anular Boleta de Honorario, S.I.I. con intermitencias, favor intentar mas tarde.
4 - Error interno, favor informar a su proveedor..

Ejemplos SOAP

Obtener Token

Registrada la empresa, con el RUT y Paswoord obtendremos nuestro Token para comenzar a trabajar.



<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:app="http://www.appoctava.cl">
    <soapenv:Header/>
    <soapenv:Body>
        <app:ObtenerToken>
            <RUTACCESOAPI>11111111-1</RUTACCESOAPI>
            <PASSWORDACCESOAPI>Password entregada por Octava Software</PASSWORDACCESOAPI>
        </app:ObtenerToken>
    </soapenv:Body>
</soapenv:Envelope> 

Respuesta Obtener Token



<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
   <SOAP-ENV:Body>
      <ns1:ObtenerTokenResponse xmlns:ns1="http://www.appoctava.cl">
         <return>
            <item>
               <Token>dUFpdjdzUWs3MDVtZDc2OG1HZEtg0NEwzOVh5UWFVGb1FNKzkxdm85MTQrSDI=</Token>
               <FechaHoraRegistro>2024-12-04 11:50:44</FechaHoraRegistro>
               <DescripcionResultado>TOK</DescripcionResultado>
               <TiempoEjecucion>0.018494129180908</TiempoEjecucion>
            </item>
         </return>
      </ns1:ObtenerTokenResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

* 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

Emitir Boleta Honorario

Método que permite emitir Boletas de Honorarios directamente en el S.I.I.


TIPO_RETENCION = RETCONTRIBUYENTE / RETRECEPTOR

RETRECEPTOR: El receptor de la boleta actuará reteniendo el porcentaje vigente de Pago Provisional Mensual.
Indicado para los contribuyentes personas naturales o jurídicas de Segunda Categoría de la Ley de Impuesto a la Renta que emitirán sus boletas a contribuyentes obligados a efectuar la retención de impuestos por los honorarios que paguen.
----------------------------------------
RETCONTRIBUYENTE: El contribuyente emisor será quien se encargue de la retención del porcentaje vigente de Pago Provisional Mensual.
Indicado para los contribuyentes personas naturales o jurídicas de Segunda Categoría de la Ley de Impuesto a la Renta que declaran PPM de Segunda Categoría en el formulario F29.


PASSWORDSII_EMISOR = Password de ingreso a la web del S.I.I. como persona natural.


COD_DIRECCION_EMISOR = código de dirección del emisor de la boleta de honorarios, se debe obtener de la web del S.I.I.(Código Sucural) Home-> Mi SII ->Datos Personales y Tributarios, además se debe agregar un cero antes del código, ejemplo 076528163




        
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:app="http://www.appoctava.cl">
    <soapenv:Header/>
    <soapenv:Body>
        <app:EmitirBoletaHonorario>
			<TIPO_RETENCION>RETCONTRIBUYENTE</TIPO_RETENCION>
            <RUT_EMISOR>11111111-1</RUT_EMISOR>
            <PASSWORDSII_EMISOR>xxxxxx</PASSWORDSII_EMISOR>
            <NOMBRE_EMISOR>HENRY ALEJANDRO MOLINA GONZALEZ</NOMBRE_EMISOR>
            <GLOSA_ACTIVIDAD_EMISOR>PROCESAMIENTO DE DATOS</GLOSA_ACTIVIDAD_EMISOR>
            <COD_DIRECCION_EMISOR>076528163</COD_DIRECCION_EMISOR>
            <RUT_RECEPTOR>88888888-8</RUT_RECEPTOR>
            <NOMBRE_RECEPTOR>MOISES ESTEBAN OSORIO ESPINOZA</NOMBRE_RECEPTOR>
            <DIRECCION_RECEPTOR>AVENIDA OESTE 2067</DIRECCION_RECEPTOR>
            <COMUNA_RECEPTOR>CONCEPCION</COMUNA_RECEPTOR>
            <FECHA_EMISION>2024-12-03</FECHA_EMISION>
            <DESC_PRESTACION_UNO>software</DESC_PRESTACION_UNO>
            <VALOR_PRESTACION_UNO>500</VALOR_PRESTACION_UNO>
            <DESC_PRESTACION_DOS>capacitacion</DESC_PRESTACION_DOS>
            <VALOR_PRESTACION_DOS>400</VALOR_PRESTACION_DOS>
            <DESC_PRESTACION_TRES>integracion</DESC_PRESTACION_TRES>
            <VALOR_PRESTACION_TRES>100</VALOR_PRESTACION_TRES>
            <DESC_PRESTACION_CUATRO>hardware</DESC_PRESTACION_CUATRO>
            <VALOR_PRESTACION_CUATRO>200</VALOR_PRESTACION_CUATRO>
            <TOKEN>dUFpdjdzUWs3MDVtZDc2OG1HZEttcH0bm85MTQrSDI=</TOKEN>
        </app:EmitirBoletaHonorario>
    </soapenv:Body>
</soapenv:Envelope>

Respuesta Emitir Boleta Honorario



<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Body>
        <ns1:EmitirBoletaHonorarioResponse xmlns:ns1="http://www.appoctava.cl">
            <return>
                <item>
                <DescripcionResultado>TVAL</DescripcionResultado>
                <IdResultadoFE>0</IdResultadoFE>
                <ResultadoFE>Boleta de Honorario generada correctamente.</ResultadoFE>
                <UrlPdf>https://xxxx.xxxx.xx/bhe_1111111-31.pdf</UrlPdf>
				<FolioAsignado>33</FolioAsignado>
                <TiempoEjecucion>4.3443489074707</TiempoEjecucion>
                </item>
            </return>
        </ns1:EmitirBoletaHonorarioResponse>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

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
0 - DTE procesado correctamente.
1 - Error para generar Boleta de Honorario, S.I.I. con intermitencias, favor intentar mas tarde.
3 - Credenciales acceso a S.I.I. incorrectos.

RESPUESTAS UrlPdf

Ruta del PDF procesado.

RESPUESTAS FolioAsignado

Folio asignado por el S.I.I. para la Boleta de Honorario.

Anular Boleta Honorario

Método que permite anular una Boleta de Honorario directamente en el S.I.I.


CAUSA_ANULACION =

1 = No se efectuo el pago de los servicios por parte del receptor.

2 = No se efectuo la prestacion de servicios.

3 = Error en la digitacion.




        <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:app="http://www.appoctava.cl">
            <soapenv:Header/>
            <soapenv:Body>
                <app:AnularBoletaHonorario>
                    <RUT_EMISOR>16285031-8</RUT_EMISOR>
                    <PASSWORDSII_EMISOR>Vicho06$</PASSWORDSII_EMISOR>
                    <FOLIO_BH>32</FOLIO_BH>
                    <CAUSA_ANULACION>3</CAUSA_ANULACION>
                    <TOKEN>dUFpdjdzUWs3MDVtZDc2Uy9wdGM1RbEFaUGljNHVGb1FNKzkxdm85MTQrSDI=</TOKEN>
                </app:AnularBoletaHonorario>
            </soapenv:Body>
            </soapenv:Envelope>

Respuesta Anular Boleta Honorario



<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
   <SOAP-ENV:Body>
      <ns1:AnularBoletaHonorarioResponse xmlns:ns1="http://www.appoctava.cl">
         <return>
            <item>
               <DescripcionResultado>TVAL</DescripcionResultado>
               <IdResultadoFE>0</IdResultadoFE>
               <ResultadoFE>La boleta de honorarios electronica se ha anulado correctamente.</ResultadoFE>
               <TiempoEjecucion>4.4158890247345</TiempoEjecucion>
            </item>
         </return>
      </ns1:AnularBoletaHonorarioResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

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
0 - La boleta de honorarios electronica se ha anulado correctamente.
1 - La boleta de honorarios electronica solicitada ya fue anulada anteriormente.
2 - No existe la boleta de honorarios electronica con la informacion ingresada.
3 - Error para anular Boleta de Honorario, S.I.I. con intermitencias, favor intentar mas tarde.
4 - Error interno, favor informar a su proveedor..