Paolo64 ha scritto:
Geremiah ciao
ti metto sotto il codice xml generato con Eclipse di questi 3 files:
1) CorrispettiviMessaggiTypes_v1.0.xsd
2) CorrispettiviTypes_v1.0.xsd
3) FabbricanteTypes_v1.0.xsd
Mi potresti spiegare come fai a firmare l'xml con il certificato ? Usi un programma in java ?
1) CorrispettiviMessaggiTypes_v1.0.xml
<?xml version="1.0" encoding="UTF-8"?>
<p:AttivaDispositivo versione="1.0" xmlns:p="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/corrispettivi/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/corrispettivi/v1.0 CorrispettiviMessaggiTypes_v1.0.xsd ">
<Gestore>
<IdPaese>IdPaese</IdPaese>
<IdCodice>IdCodice</IdCodice>
</Gestore>
<TecnicoVerificatore>
<CodiceFiscale>CodiceFiscale</CodiceFiscale>
<PIvaSocieta>
<IdPaese>IdPaese</IdPaese>
<IdCodice>IdCodice</IdCodice>
</PIvaSocieta>
</TecnicoVerificatore>
<GeoLocalizzazione>
<Lat>0.0</Lat>
<Long>0.0</Long>
</GeoLocalizzazione>
<InformazioniAddizionali>
<DA>
<ProtocolloComunicazione>ProtocolloComunicazione</ProtocolloComunicazione>
<TipoDistributore>TipoDistributore</TipoDistributore>
</DA>
</InformazioniAddizionali>
<Signature/>
</p:AttivaDispositivo>
2) CorrispettiviTypes_v1.0.xml
<?xml version="1.0" encoding="UTF-8"?>
<p:DatiCorrispettivi simulazione="true" versione="COR10" xmlns:p="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/corrispettivi/dati/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/corrispettivi/dati/v1.0 CorrispettiviTypes_v1.0.xsd ">
<Trasmissione>
<Progressivo>1</Progressivo>
<Formato>COR10</Formato>
<Dispositivo>
<Tipo>DA</Tipo>
<IdDispositivo>IdDispositivo</IdDispositivo>
<GeoLocalizzazione>
<Lat>0.0</Lat>
<Long>0.0</Long>
</GeoLocalizzazione>
</Dispositivo>
</Trasmissione>
<PeriodoInattivo>
<Dal>2001-12-31T12:00:00</Dal>
<Al>2001-12-31T12:00:00</Al>
</PeriodoInattivo>
<DataOraRilevazione>2001-12-31T12:00:00</DataOraRilevazione>
<DatiRT>
<Riepilogo>
<IVA>
<AliquotaIVA>0.0</AliquotaIVA>
<Imposta>0.0</Imposta>
</IVA>
<Ammontare>0.0</Ammontare>
<RifNormativo>RifNormativo</RifNormativo>
<TotaleAmmontareResi>0.0</TotaleAmmontareResi>
<TotaleAmmontareAnnulli>0.0</TotaleAmmontareAnnulli>
</Riepilogo>
</DatiRT>
<InterventoTecnico>
<CFTecnico>CFTecnico</CFTecnico>
<IdIVALaboratorio>
<IdPaese>IdPaese</IdPaese>
<IdCodice>IdCodice</IdCodice>
</IdIVALaboratorio>
<DataOra>2001-12-31T12:00:00</DataOra>
<Codice>Codice</Codice>
<Note>Note</Note>
</InterventoTecnico>
<Segnalazione>
<Matricola>Matricola</Matricola>
<DataOra>2001-12-31T12:00:00</DataOra>
<Codice>Codice</Codice>
<Note>Note</Note>
</Segnalazione>
<Signature/>
</p:DatiCorrispettivi>
3) FabbricanteTypes_v1.0.xml
<?xml version="1.0" encoding="UTF-8"?>
<p:manifest versione="1.0" xmlns:p="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/corrispettivi/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/corrispettivi/v1.0 FabbricanteTypes_v1.0.xsd ">
<RichiestaMassivaCertificatiDispositivo>
<IdDispositivo>IdDispositivo</IdDispositivo>
<MarchioFabbricante>MarchioFabbricante</MarchioFabbricante>
<Modello>Modello</Modello>
<Tipo>Tipo</Tipo>
<RifApprovazioneDispositivo>
<Numero>Numero</Numero>
<Data>2001-01-01</Data>
</RifApprovazioneDispositivo>
</RichiestaMassivaCertificatiDispositivo>
</p:manifest>
Ciao Paolo64 e grazie per i files.
L'invio dei corrispettivi telematici all'ADE si esplica tramite vari passaggi. Il primo è stato quello del censimento delle vending machine per il quale, se fatto tramite app, è necessario avere il certificato gestore che è generato e rilasciato dall'ADE previa presentazione alla stessa di un file di richiesta certificato ( CSR ). Certificato che potrà servire in seguito se devi apportare modifiche ai dispositivi censiti ( dismissioni ecc.)
Il secondo passaggio è quello dell'invio effettivo dei corrispettivi.
Per giungere a questo però è necessario richiedere un secondo certificato che è legato all'IMEI del cellulare o tablet che si utilizzerà per la trasmissione dei corrispettivi. Questo certificato legato al cellulare sarà usato successivamente per firmare digitalmente il file XML che contiene i dati IVA veri e propri.
Per richiedere questo certificato è necessario compilare il file XML che mi sta facendo dannare.
Tale file XML deve essere firmato digitalmente usando le specifiche XMLDsig, e, questo deve essere fatto usando il certificato produttore software, che è sempre rilasciato dall'ADE previa trasmissione di un file CSR ( richiesta di certificato ).
Questa ultima fase è a carico di chi sviluppa materialmente l'app che deve censirsi in veste di produttore sul sito dell'ADE.
Se chi sviluppa l'app è colui che deve anche trasmettere i corrispettivi deve effettuare un doppio censimento, sia come produttore che come gestore.
Io non utilizzo java per lo sviluppo dell'app e per gestire tutta la parte di gestione certificati, firme digitali e crittografia in genere ho acquistato una libreria proprietaria che svolge egregiamente il proprio lavoro, anche se, costa un bel po'.
Se usi java e vuoi rimanere in ambito android per tutte queste incombenze puoi dare un'occhiata ad openssl, che permette di gestire tutte le varie incombenze crittografico/digitali, passami il termine. Io l'ho scartato perchè è più problematico da gestire per IOS.
Infine veniamo al problema principe, ovvero il maledetto file XML di richiesta del certificato dispositivo.
Nonostante l'abbia fatto uguale al template, quando è trasmesso all'ADE, ritorna sempre un errore 406, ovvero, non conforme alle specifiche.
In effetti cercando di validare il file applicando lo schema CorrispettiviMessaggiTypes_v1.0.xsd ottengo questo messaggio di errore
ERRORE - File XML in formato non valido.
Messaggio dettagliato:
java.lang.RuntimeException: Lo spazio di nomi per il prefisso 'xsi' non è stato dichiarato
quindi c'è qualcosa che effettivamente non va nel file, e, purtroppo non riesco a capire di cosa si tratta non essendo molto pratico di XML.
Spero di averti chiarito un po' le idee.