Send XML to the web service of SII AEAT (PHP SOAP)

2

It has already been asked, but I can not find an answer ... in a call to the AEAT webservice to send invoices, how is the sending XML embedded? Does anyone have a complete example of sending invoices issued and another received?

    $url = 'https://www7.aeat.es/wlpl/SSII-FACT/ws/fe/SiiFactFEV1SOAP';

    $params1 = array( 
                "location"      => $url,
                "style"         => SOAP_DOCUMENT,
                "use"           => SOAP_LITERAL, 
                "trace"         => 1, 
                "exceptions"    => 0,
                "cache_wsdl"    => 0
            ); 
$soapclient = new SoapClient('https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroFactEmitidas.wsdl', $params1);

    var_dump($soapclient->funcion($parametros));
    
asked by Juan 26.06.2017 в 21:12
source

1 answer

2

Here is a complete script that sends two invoices issued to the testing environment:

<?php

// Ejemplo script para facturas emitidas
// Ruta a certificado previamente convertido de PFX a PEM
$local_cert = 'C:\Projects\aeat-sii-desarrolladores\demo-script\certificados\ALEXANDRU_CATALIN_bundle.pem';

// URL definición servicio de facturas emitidas
$wsdl = 'http://www.agenciatributaria.es/static_files/AEAT/Contenidos_Comunes/La_Agencia_Tributaria/Modelos_y_formularios/Suministro_inmediato_informacion/FicherosSuministros/V_07/SuministroFactEmitidas.wsdl';

// Instanciar el cliente SOAP
$client = new SoapClient($wsdl, array(
    'soap_version' => SOAP_1_1,
    'trace' => true,
    'exceptions' => true,
    'local_cert' => $local_cert,
        ));

// Cambiar a entorno pruebas
$location = 'https://www7.aeat.es/wlpl/SSII-FACT/ws/fe/SiiFactFEV1SOAP';
$client->__setLocation($location);

// Construir datos
$datos = array(
    'Cabecera' =>
    array(
        'IDVersionSii' => '1.0',
        'Titular' =>
        array(
            'NombreRazon' => 'ALEXANDRU CATALIN TRANDAFIR',
            'NIF' => 'X4378072E',
        ),
        'TipoComunicacion' => 'A0',
    ),
    'RegistroLRFacturasEmitidas' =>
    array(
        0 =>
        array(
            'PeriodoImpositivo' =>
            array(
                'Ejercicio' => '2017',
                'Periodo' => '12',
            ),
            'IDFactura' =>
            array(
                'IDEmisorFactura' =>
                array(
                    'NIF' => 'X4378072E',
                ),
                'NumSerieFacturaEmisor' => 'SIIDEMO/1',
                'FechaExpedicionFacturaEmisor' => '31-12-2017',
            ),
            'FacturaExpedida' =>
            array(
                'TipoFactura' => 'F1',
                'ClaveRegimenEspecialOTrascendencia' => '01',
                'ImporteTotal' => 1210,
                'DescripcionOperacion' => 'Compra ordenador portátil',
                'FechaOperacion' => '31-12-2017',
                'Contraparte' =>
                array(
                    'NombreRazon' => 'HeavyDots SL',
                    'NIF' => 'B66544586',
                ),
                'TipoDesglose' =>
                array(
                    'DesgloseFactura' =>
                    array(
                        'Sujeta' =>
                        array(
                            'NoExenta' =>
                            array(
                                'TipoNoExenta' => 'S1',
                                'DesgloseIVA' =>
                                array(
                                    'DetalleIVA' =>
                                    array(
                                        0 =>
                                        array(
                                            'TipoImpositivo' => 21,
                                            'BaseImponible' => 500,
                                            'CuotaRepercutida' => 105,
                                        ),
                                        1 =>
                                        array(
                                            'TipoImpositivo' => 21,
                                            'BaseImponible' => 500,
                                            'CuotaRepercutida' => 105,
                                        ),
                                    ),
                                ),
                            ),
                        ),
                    ),
                ),
            ),
        ),
        1 =>
        array(
            'PeriodoImpositivo' =>
            array(
                'Ejercicio' => '2017',
                'Periodo' => '12',
            ),
            'IDFactura' =>
            array(
                'IDEmisorFactura' =>
                array(
                    'NIF' => 'X4378072E',
                ),
                'NumSerieFacturaEmisor' => 'SIIDEMO/2',
                'FechaExpedicionFacturaEmisor' => '31-12-2017',
            ),
            'FacturaExpedida' =>
            array(
                'TipoFactura' => 'F1',
                'ClaveRegimenEspecialOTrascendencia' => '01',
                'ImporteTotal' => 1210,
                'DescripcionOperacion' => 'Compra ordenador portátil',
                'FechaOperacion' => '31-12-2017',
                'Contraparte' =>
                array(
                    'NombreRazon' => 'HeavyDots SL',
                    'NIF' => 'B66544586',
                ),
                'TipoDesglose' =>
                array(
                    'DesgloseFactura' =>
                    array(
                        'Sujeta' =>
                        array(
                            'NoExenta' =>
                            array(
                                'TipoNoExenta' => 'S1',
                                'DesgloseIVA' =>
                                array(
                                    'DetalleIVA' =>
                                    array(
                                        0 =>
                                        array(
                                            'TipoImpositivo' => 21,
                                            'BaseImponible' => 500,
                                            'CuotaRepercutida' => 105,
                                        ),
                                        1 =>
                                        array(
                                            'TipoImpositivo' => 21,
                                            'BaseImponible' => 500,
                                            'CuotaRepercutida' => 105,
                                        ),
                                    ),
                                ),
                            ),
                        ),
                    ),
                ),
            ),
        ),
    ),
);

// Definir comando
$comando = 'SuministroLRFacturasEmitidas';

// Relizar llamada
$response = null;
$e = null;

try {
  $response = $client->$comando($datos);
} catch (Exception $e) {

}

if ($e instanceof Exception) {

  $error = $e->getMessage();
  $error_detalles = $e->getTraceAsString();

  echo('Error:');
  echo($error);
  echo '<br>';

  echo('Detalles error:');
  echo($error_detalles);
  echo '<br>';
}

$peticion_xml = $client->__getLastRequest();
$respuesta = $client->__getLastResponse();

echo('Petición:<br>');
echo '<pre>' . htmlentities($peticion_xml) . '</pre>';

echo('Respuesta:<br>');
echo '<pre>' . htmlentities($respuesta) . '</pre>';

If you execute it, it will print something like this on screen:

Petición:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd" xmlns:ns2="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroLR.xsd"><SOAP-ENV:Body><ns2:SuministroLRFacturasEmitidas><ns1:Cabecera><ns1:IDVersionSii>1.0</ns1:IDVersionSii><ns1:Titular><ns1:NombreRazon>ALEXANDRU CATALIN TRANDAFIR</ns1:NombreRazon><ns1:NIF>X4378072E</ns1:NIF></ns1:Titular><ns1:TipoComunicacion>A0</ns1:TipoComunicacion></ns1:Cabecera><ns2:RegistroLRFacturasEmitidas><ns1:PeriodoImpositivo><ns1:Ejercicio>2017</ns1:Ejercicio><ns1:Periodo>12</ns1:Periodo></ns1:PeriodoImpositivo><ns2:IDFactura><ns1:IDEmisorFactura><ns1:NIF>X4378072E</ns1:NIF></ns1:IDEmisorFactura><ns1:NumSerieFacturaEmisor>SIIDEMO/1</ns1:NumSerieFacturaEmisor><ns1:FechaExpedicionFacturaEmisor>31-12-2017</ns1:FechaExpedicionFacturaEmisor></ns2:IDFactura><ns2:FacturaExpedida><ns1:TipoFactura>F1</ns1:TipoFactura><ns1:FechaOperacion>31-12-2017</ns1:FechaOperacion><ns1:ClaveRegimenEspecialOTrascendencia>01</ns1:ClaveRegimenEspecialOTrascendencia><ns1:ImporteTotal>1210</ns1:ImporteTotal><ns1:DescripcionOperacion>Compra ordenador portátil</ns1:DescripcionOperacion><ns1:Contraparte><ns1:NombreRazon>HeavyDots SL</ns1:NombreRazon><ns1:NIF>B66544586</ns1:NIF></ns1:Contraparte><ns1:TipoDesglose><ns1:DesgloseFactura><ns1:Sujeta><ns1:NoExenta><ns1:TipoNoExenta>S1</ns1:TipoNoExenta><ns1:DesgloseIVA><ns1:DetalleIVA><ns1:TipoImpositivo>21</ns1:TipoImpositivo><ns1:BaseImponible>500</ns1:BaseImponible><ns1:CuotaRepercutida>105</ns1:CuotaRepercutida></ns1:DetalleIVA><ns1:DetalleIVA><ns1:TipoImpositivo>21</ns1:TipoImpositivo><ns1:BaseImponible>500</ns1:BaseImponible><ns1:CuotaRepercutida>105</ns1:CuotaRepercutida></ns1:DetalleIVA></ns1:DesgloseIVA></ns1:NoExenta></ns1:Sujeta></ns1:DesgloseFactura></ns1:TipoDesglose></ns2:FacturaExpedida></ns2:RegistroLRFacturasEmitidas><ns2:RegistroLRFacturasEmitidas><ns1:PeriodoImpositivo><ns1:Ejercicio>2017</ns1:Ejercicio><ns1:Periodo>12</ns1:Periodo></ns1:PeriodoImpositivo><ns2:IDFactura><ns1:IDEmisorFactura><ns1:NIF>X4378072E</ns1:NIF></ns1:IDEmisorFactura><ns1:NumSerieFacturaEmisor>SIIDEMO/2</ns1:NumSerieFacturaEmisor><ns1:FechaExpedicionFacturaEmisor>31-12-2017</ns1:FechaExpedicionFacturaEmisor></ns2:IDFactura><ns2:FacturaExpedida><ns1:TipoFactura>F1</ns1:TipoFactura><ns1:FechaOperacion>31-12-2017</ns1:FechaOperacion><ns1:ClaveRegimenEspecialOTrascendencia>01</ns1:ClaveRegimenEspecialOTrascendencia><ns1:ImporteTotal>1210</ns1:ImporteTotal><ns1:DescripcionOperacion>Compra ordenador portátil</ns1:DescripcionOperacion><ns1:Contraparte><ns1:NombreRazon>HeavyDots SL</ns1:NombreRazon><ns1:NIF>B66544586</ns1:NIF></ns1:Contraparte><ns1:TipoDesglose><ns1:DesgloseFactura><ns1:Sujeta><ns1:NoExenta><ns1:TipoNoExenta>S1</ns1:TipoNoExenta><ns1:DesgloseIVA><ns1:DetalleIVA><ns1:TipoImpositivo>21</ns1:TipoImpositivo><ns1:BaseImponible>500</ns1:BaseImponible><ns1:CuotaRepercutida>105</ns1:CuotaRepercutida></ns1:DetalleIVA><ns1:DetalleIVA><ns1:TipoImpositivo>21</ns1:TipoImpositivo><ns1:BaseImponible>500</ns1:BaseImponible><ns1:CuotaRepercutida>105</ns1:CuotaRepercutida></ns1:DetalleIVA></ns1:DesgloseIVA></ns1:NoExenta></ns1:Sujeta></ns1:DesgloseFactura></ns1:TipoDesglose></ns2:FacturaExpedida></ns2:RegistroLRFacturasEmitidas></ns2:SuministroLRFacturasEmitidas></SOAP-ENV:Body></SOAP-ENV:Envelope>
Respuesta:
<?xml version="1.0" encoding="UTF-8"?><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
<env:Header/>
<env:Body Id="Body"><siiR:RespuestaLRFacturasEmitidas xmlns:siiR="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/RespuestaSuministro.xsd" xmlns:sii="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd"><siiR:Cabecera><sii:IDVersionSii>1.0</sii:IDVersionSii><sii:Titular><sii:NombreRazon>ALEXANDRU CATALIN TRANDAFIR</sii:NombreRazon><sii:NIF>X4378072E</sii:NIF></sii:Titular><sii:TipoComunicacion>A0</sii:TipoComunicacion></siiR:Cabecera><siiR:EstadoEnvio>Incorrecto</siiR:EstadoEnvio><siiR:RespuestaLinea><siiR:IDFactura><sii:IDEmisorFactura><sii:NIF>X4378072E</sii:NIF></sii:IDEmisorFactura><sii:NumSerieFacturaEmisor>SIIDEMO/1</sii:NumSerieFacturaEmisor><sii:FechaExpedicionFacturaEmisor>31-12-2017</sii:FechaExpedicionFacturaEmisor></siiR:IDFactura><siiR:EstadoRegistro>Incorrecto</siiR:EstadoRegistro><siiR:CodigoErrorRegistro>3000</siiR:CodigoErrorRegistro><siiR:DescripcionErrorRegistro>Factura duplicada</siiR:DescripcionErrorRegistro><siiR:CSV>QSAYUMZV8NM3REGD</siiR:CSV></siiR:RespuestaLinea><siiR:RespuestaLinea><siiR:IDFactura><sii:IDEmisorFactura><sii:NIF>X4378072E</sii:NIF></sii:IDEmisorFactura><sii:NumSerieFacturaEmisor>SIIDEMO/2</sii:NumSerieFacturaEmisor><sii:FechaExpedicionFacturaEmisor>31-12-2017</sii:FechaExpedicionFacturaEmisor></siiR:IDFactura><siiR:EstadoRegistro>Incorrecto</siiR:EstadoRegistro><siiR:CodigoErrorRegistro>3000</siiR:CodigoErrorRegistro><siiR:DescripcionErrorRegistro>Factura duplicada</siiR:DescripcionErrorRegistro><siiR:CSV>QSAYUMZV8NM3REGD</siiR:CSV></siiR:RespuestaLinea></siiR:RespuestaLRFacturasEmitidas>
</env:Body></env:Envelope>

For invoices received you will have to:

  • Use the WSDL corresponding to the incoming invoices service
  • Use the location of the environment tests of the service received invoices that you find in the WSDL
  • Construct the data matrix corresponding to invoices received since the ones in this example are issued
  • Call the command SuministroLRFacturasRecibidas instead of SuministroLRFacturasEmitidas

Lastly, comment that you need to use a certificate:

  • Step 1: Obtain a PFX / P12 certificate from your manager / advisor of those that you install in the browser to connect to the Tax Agency
  • Step 2: Convert that PFX format certificate to PEM format. In this other answer I explained how the certificate is converted: Send SII model to hacienda using cURL

And to close, if you are interested in seeing more information about working with SII from PHP, this ebook link explains both the nature of Web services as well as shows step by step with code examples in PHP how to perform the entire communication circuit with the SII.

    
answered by 16.01.2018 в 19:04