Ciao a tutti,
dopo giorni e giorni di patimento sono finalmente riuscito a far invocare il server Soap dal servizio Sdi.
Ora, una volta inviata la fattura il servizio mi risponde con una notifica di scarto:
File non conforme al formato (nella descrizione del messaggio è riportata l?indicazione puntuale della non conformità) : Errore nella parse del file (idSdi 4229231 ): Content is not allowed in prolog.
Se provo a validare il file tramite Controllare la FatturaPA questo viene validato correttamente.
Io non faccio altro che generare il file .xml e inviarlo al metodo ricevi_file.
Ho provato a contattare l’assistenza dove mi è stato detto che l’errore è nel “prologo” -> eh??
A voi è capitato questo errore? Sapete cose significa e come poterlo risolvere ?
Ciao, è capitato a me, ieri pomeriggio.
Stavo testando un file XML tramite funzione dal sito ‘controlla la fattura’ e mi ha dato questo errore.
Ho verificato e scoperto che il mio file XML non era stato ‘chiuso’ correttamente, ovvero per un errore inatteso le ultime righe di chiusura tag non erano presenti.
Ho volutamente inserito degli errori nel file, tipo codice destinatario piu corto del dovuto (proprio perche devo implementare la notifica di scarto)
Ora il test per la validità del file mi da errore (giustamente) ma l’xml è formalmente valido (validato con xml parser online).
In questi giorni ho avuto tantissimi problemi, uno dei quali abbastanza anomalo, “Content is not allowed in prolog” durante la fase di ricezione notifica da parte di Sdi.
Questo errore avviene quando all’inizio dell’XML che si invia è presente il BOM (ovvero il file è in formato UTF-8 with BOM).
Per risolvere questo ho modificato:
$fileSdIAccoglienza = new \stdClass();
$fileSdIAccoglienza->NomeFile = basename($fattura);
$fileSdIAccoglienza->File = base64_encode(file_get_contents($fattura));
Ciao Francesco, cosa hai usato con laravel per creare i servizi SOAP per la ricezione delle fatture ? Perchè era mia intenzione sviluppare con Laravel che conosco abbastanza bene ma non ho capito ancora che libreria usare.
Grazie.
Ciao Giacomo,
in fase di accreditamento ho dato un dominio “fittizio”, non il mio dominio principale.
Farò una cosa abbastanza contorta: creo su una macchina un application server che risponde al dominio dato in fase di accreditamento per gestire la comunicazione SOAP. In fase di ricezione notifiche le intercetto recuperando l’xml. Questo verrà trasferito su un server e con un job laravel vado a recuperare i file e li elaboro.
Ok grazie. L’unica libreria che ho trovato degna di note è zoap. Attualmente ho in funzione il server SOAP che riceve le risposte (jetty 9 + Axis) ma mi interessava farlo completamente con laravel.
A me succedeva perché (stupidamente) mandavo su la fattura firmata con un nome file che non terminava in .xml.p7m ma solo in .xml; evidentemente il parsing del messaggio si basa sull’estensione del nome file (e non sul mime type dell’attachment MTOM per dire). Sistemato il nome file tutto ok