Buonasera a tutti. Cosa si deve fare se l’esito é ‘189’ e quindi non si riesce a scaricare l’eDas?
É capitato ieri a un mio cliente, il das risulta emesso, ma non si riusciva a scaricare né dalle Api, né dall’area riservata su Adm. Non é stato possibile annullare il documento, perché intanto era trascorsa l’ora di spedizione. Quindi l’operatore ha dovuto emetterne un altro, cosa si puó fare ora?
Mi è arrivato finalmente il TOKEN ARUBA per firmar il file .xml. Ho comunque errore 1, verifica della firma fallita. Utilizzo il tipo di firma “XADES-BES” ma mi da comunque errore. Che mi consigliate?
Succede spesso, è dovuto al fatto che il server delle Dogane non ha ancora generato il file PDF. Quindi ti assegna il CRS, ma non il PDF. Hai semplicemente richiesto l’esito troppo in fretta. Si risolve facilmente richiedendo nuovamente un recupero esito con lo IUT che ha restituito 189, e dovrebbe poi dare 200. Un consiglio generico è magari quello di inserire un’attesa di 15-20 secondi prima di effettuare la richiesta, così sei abbastanza sicuro sulla generazione.
Che libreria utilizzi per la firma? FirmaXadesNet oppure Chilkat?
Si, so che succede spesso, ma quella volta il pdf non era disponibile neanche il giorno successivo, mentre per degli eDas emessi dopo, diventava presto disponibile. Era come se quello fosse finito in un limbo.
Hai provato a fare una ricerca per CRS direttamente dal sito?
Si, non era disponibile neanche sul sito. Anzi, li dava pure errore quando si selezionava la riga corrispondente nella lista. Nei giorni scorsi ho visto che sul sito c’è una funzione che prima non mi sembra di aver visto: un tasto per verificare se il pdf sia pronto ed un messaggio che dice più o meno che “il pdf è in attesa di generazione”
Al di là della libreria usata. Ho provato a firmare il file direttamente con l’utility del token e non da codice. Ma mi da comunque errore 1
La firma tramite Token ho notato che crea dei problemi. Affinchè il file creato sia “adatto” all’invio tramite WebService deve contenere il codice della firma alla fine dell’XML, ma comunque sempre all’interno del tag “padre” DE815. Inoltre il file generato non deve essere criptato, ma chiaramente visibile.
Ho chiesto che libreria usavi perchè a volte, in base al token, per firmare utilizza il certificato CNS, che non va bene. Infatti se noti sui dispositivi in commercio ci sono due certificati, uno per la firma digitale e uno per l’accesso tramite CNS. Se è questo il caso, allora devi fare in modo che in fase di firma il tuo codice selezioni il certificato “giusto”, e che lo utilizzi correttamente.
Se vuoi, posta l’XML che hai generato e vediamo cosa c’è che non va.
Buongiorno a tutti,
sto cercando di recuperare l’esito in C# da un web service della SOGEI, l’ambito è diverso, riguarda il sistema AIDA per l’invio e la ricezione dei manifesti di sbarco/imbarco delle navi portacontainer.
Il frammento di codice che utilizzo allo scopo è il seguente:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
X509Certificate2 cert = new X509Certificate2(@"C:\test\Certificato.p12", "miapassword");
Uri epRecuperoEsito = new Uri(Properties.Settings.Default.Endpoint_RecuperoEsito);
EndpointIdentity identity = EndpointIdentity.CreateDnsIdentity(Properties.Settings.Default.Endpoint_Identity);
EndpointAddress endPointRecuperoEsito = new EndpointAddress(epRecuperoEsito, identity);
BasicHttpBinding myBinding = new BasicHttpBinding();
var timeout = new TimeSpan(0, 8, 0);
myBinding.SendTimeout = timeout;
myBinding.ReceiveTimeout = timeout;
myBinding.OpenTimeout = timeout;
myBinding.CloseTimeout = timeout;
myBinding.Security.Mode = BasicHttpSecurityMode.Transport;
myBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;
myBinding.Security.Transport.ProxyCredentialType = HttpProxyCredentialType.None;
myBinding.Security.Transport.Realm = "";
var client = new InteropService.InteropServiceClient(myBinding, endPointRecuperoEsito);
client.ClientCredentials.ClientCertificate.Certificate = cert;
client.Open();
InteropService.recuperaEsitoResponse r = new InteropService.recuperaEsitoResponse
{
recuperaEsitoReturn = client.recuperaEsito(IUT)
};
// scrivo il file di esito
XmlSerializer serializer = new XmlSerializer(typeof(InteropService.recuperaEsitoResponse));
TextWriter writer = new StreamWriter(@"C:\test\IN\Esito.xml");
serializer.Serialize(writer, r.recuperaEsitoReturn.esito);
writer.Close();
client.Close();
Ma ottengo in risposta un xml vuoto:
<?xml version="1.0" encoding="UTF-8"?>Sicuramente sbaglio qualcosa, ma non riesco a capire cosa.
Grazie in anticipo a chi potrà rispondere.
Esito è a sua volta composto da due campi, “CODICE” e “MESSAGGIO”. Qui avrai l’esito preliminare relativo al solo invio del messaggio (cioè, ad esempio, “certificato non valido”, oppure “firma assente”). In questa fase, l’esito positivo ha codice = 20, e messaggio = “Acquisito a sistema”. In questo caso, dovresti avere anche uno IUT.
Tramite questo IUT, sempre utilizzando lo stesso certificato, devi fare una chiamata ad un’altra WS, demandata appunto al recupero dell’esito vero e proprio. La risposta di questa seconda WS è sempre di tipo Risposta, solo che in “CODICE” e “MESSAGGIO” avrai dati diversi (qui il sistema ti dice gli errori effettivi sul documento inviato, ad esempio Partita Iva non corretta, oppure un dato non indicato) e nel campo “DATA” avrai il PDF (ovviamente in caso di esito 200, cioè il documento inviato da te non presenta errori ed è stato correttamente accettato dal sistema).
Perciò ricapitolando:
Invio l’XML, il sistema risponde con un IUT e un codice. Se questo codice è pari a 20, faccio una chiamata ad un’altra WS indicando come input lo IUT precedente, e il sistema risponderà con l’esito definitivo.
Non so dirti gli indirizzi per le WS di tuo interesse, essendo un servizio che non ho visto in prima persona, ma dovrebbe funzionare nello stesso modo.
Ciao e grazie innanzitutto per la risposta.
L’esito che sto cercando di acquisire, con il codice postato in precedenza, è riferito al secondo passaggio, quello successivo alla ricezione dello IUT.
Nel mio caso nel campo data dovrei ricevere un XML firmato, ma purtroppo è sempre vuoto.
es.
Non riesco a capire dove sbaglio.
Grazie
Prova innanzitutto ad aggiungere in alto l’istruzione
ServicePointManager.ServerCertificateValidationCallback = (object se, X509Certificate cert, X509Chain chain, SslPolicyErrors sslerror) => true;
Prova, ma se l’invio va a buon fine non dovrebbe servirti.
Poi, anzichè usare un HttpBinding, fai cosi:
client = new InteropNamespace.InteropService();
client.ClientCertificates.Add(cert);
client.Url = EndpointAddress;
var recuperaEsitoWS = client.RecuperaEsito(IUT);
Per recuperare il PDF, poi, io faccio in questo modo:
string dati = System.Text.Encoding.UTF8.GetString(recuperaEsitoWS.data);
var esitoRisposta = Json.Deserialize<Esito>(dati)
System.IO.File.WriteAllBytes("Documento.pdf", esitoRisposta.Documento);
L’Object esitoRisposta contiene tutte le info relative (in qualche documento delle dogane dovrebbe esserci la struttura relativa al tuo specifico servizio).
Ciao,
ho provato senza HttpBinding, mi restituisce l’errore " Lo schema URI fornito ‘https’ non è valido; “http” previsto. Nome del parametro: via …"
In rete ho trovato che il problema potrebbe essere nell’App.config.
Ho provato ad aggiungere le credenziali del messaggio, ma ancora va in errore.
Ti posto di seguito la configurazione del servizio:
<system.serviceModel>
<bindings>
<basicHttpsBinding>
<binding name="InteropServiceSoapBinding">
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="Basic" proxyCredentialType="None" realm=""/>
<message clientCredentialType="Certificate" algorithmSuite="Default" />
</security>
</binding>
</basicHttpsBinding>
</bindings>
Potresti confrontarla con la tua e dirmi se ho dimenticato qualcosa?
Grazie
<bindings>
<basicHttpBinding>
<binding name="InteropServiceSoapBinding">
<security mode="Transport">
<transport clientCredentialType="Basic" proxyCredentialType="None"
realm="None" />
<message clientCredentialType="Certificate" algorithmSuite="Default" />
</security>
</binding>
<binding name="InteropServiceSoapBinding" />
</basicHttpBinding>
</bindings>
Questa è la mia configurazione. Potresti indicare il messaggio di errore completo?
Grazie innanzitutto per la risposta, usando la tua stessa configurazione mi restituisce il seguente messaggio di errore:
cambiando, invece,
<transport clientCredentialType="Basic" proxyCredentialType="None"
realm="None" />
in
<transport clientCredentialType="Certificate" proxyCredentialType="None"
realm="None" />
mi recupera l’esito, però il campo “data” è sempre vuoto.
Ho fatto una prova con SoapUi, convinto sia un problema del WS, ma risponde correttamente.
Non so più che prove fare
Buongiorno come mai con questo file mi continua a dire errore 1, verifica della firma fallita. Dove sbaglio?
<?xml version='1.0' encoding='utf-8'?>
<DE815 xmlns="http://das.dogane.finanze.it">
<attributiMessaggio>
<MessageCode>DE815</MessageCode>
<DeclaratorIdentifyCode>IT02769460813</DeclaratorIdentifyCode>
<Filename>EDAS21112900000000001.xml</Filename>
<MessageTypeCode>1</MessageTypeCode>
<DeferredSubmissionFlag>0</DeferredSubmissionFlag>
</attributiMessaggio>
<dasElettronico>
<InbulkTransportFlag>0</InbulkTransportFlag>
<MesurementJourneyType>H</MesurementJourneyType>
<JourneyTime>18</JourneyTime>
<TransportArrangement>1</TransportArrangement>
<OriginTypeCode>2</OriginTypeCode>
<DateTimeOfDispatch>2021-11-29T08:24:47.000</DateTimeOfDispatch>
</dasElettronico>
<speditore>
<ConsignorExciseNumber>IT00TPY00376C</ConsignorExciseNumber>
<LuogoDiSpedizione>
<DispatchPlaceTraderid>IT00TPY00376C</DispatchPlaceTraderid>
</LuogoDiSpedizione>
</speditore>
<destinatarioELuogoDiConsegna>
<Destinatario>
<ConsigneeIterationNumber>1</ConsigneeIterationNumber>
<LocalReferenceNumber>2021-271</LocalReferenceNumber>
<InvoiceNumber>3951</InvoiceNumber>
<InvoiceDate>2021-11-29</InvoiceDate>
<DestinationTypeCode>15</DestinationTypeCode>
<ConsigneeTraderid>IT05536180820</ConsigneeTraderid>
<ConsigneeTraderName>RESTIVO GIOACCHINO</ConsigneeTraderName>
<ConsigneeStreetName>VICOLO SM22</ConsigneeStreetName>
<ConsigneeStreetNumber>20</ConsigneeStreetNumber>
<ConsigneePostcode>90046</ConsigneePostcode>
<ConsigneeCity>Monreale</ConsigneeCity>
<ConsigneeLanguage>it</ConsigneeLanguage>
</Destinatario>
<LuogoDiDestinazioneConsegna>
<DeliveryPlaceTraderid>IT05536180820</DeliveryPlaceTraderid>
<DeliveryPlaceTraderName>RESTIVO GIOACCHINO</DeliveryPlaceTraderName>
<DeliveryPlaceStreetName>VICOLO SM22</DeliveryPlaceStreetName>
<DeliveryPlaceStreetNumber>20</DeliveryPlaceStreetNumber>
<DeliveryPlacePostcode>90046</DeliveryPlacePostcode>
<DeliveryPlaceCity>Monreale</DeliveryPlaceCity>
<DeliveryPlaceLanguage>it</DeliveryPlaceLanguage>
</LuogoDiDestinazioneConsegna>
<AutFiscCompDestinatario>
<ReferenceNumber>IT097000</ReferenceNumber>
</AutFiscCompDestinatario>
</destinatarioELuogoDiConsegna>
<versamenti>
<NoPayment>1</NoPayment>
<PaymentExclusionReason>111</PaymentExclusionReason>
</versamenti>
<trasporto>
<TransportModeCode>3</TransportModeCode>
</trasporto>
<primoVettore>
<TransportTraderVatNumber>IT02769460813</TransportTraderVatNumber>
</primoVettore>
<primoIncaricatoTrasporto>
<DriverSurname>Martello</DriverSurname>
<DriverName>Pietro</DriverName>
<DriverNationality>IT</DriverNationality>
<DriverID>MRTPTR94M30G348W</DriverID>
<DriverADR>PA08504432</DriverADR>
</primoIncaricatoTrasporto>
<dettaglioTrasporto>
<TransportIterationNumber>1</TransportIterationNumber>
<TransportUnitCode>2</TransportUnitCode>
<IdentityOfTransportUnits>IT DF435DD</IdentityOfTransportUnits>
</dettaglioTrasporto>
<merci>
<DettaglioMerci>
<GoodIterationNumber>1</GoodIterationNumber>
<CPAProductCategory>E430</CPAProductCategory>
<CnCode>27102011</CnCode>
<Quantity>1001.680</Quantity>
<GrossWeight>4920.00</GrossWeight>
<NetWeight>835.00</NetWeight>
<Density15>0.84</Density15>
<Volume>1000.00</Volume>
<CommercialDescription>Gasolio Autotrazione 10PPM</CommercialDescription>
<LanguageCommercialDescription>it</LanguageCommercialDescription>
<Imballaggi>
<KindOfPackages>VL</KindOfPackages>
</Imballaggi>
</DettaglioMerci>
</merci>
<ds:Signature xmlns:xadesv1410="http://uri.etsi.org/01903/v1.4.1" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xades="http://uri.etsi.org/01903/v1.3.2#" Id="signature-9698-5414-9816-0151"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/><ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/><ds:Reference URI=""><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2002/06/xmldsig-filter2"><dsig-xpath:XPath xmlns:dsig-xpath="http://www.w3.org/2002/06/xmldsig-filter2" Filter="subtract">/descendant::ds:Signature</dsig-xpath:XPath></ds:Transform><ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/><ds:DigestValue>UBQXrcUeqUgf+oWv4xf/se1lPz+KHl5DD6PMhZS3fxk=</ds:DigestValue></ds:Reference><ds:Reference URI="#signed-properties-7420-1442-5200-2861" Type="http://uri.etsi.org/01903#SignedProperties"><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/><ds:DigestValue>dnc+i46LjzPsWRuBMJ6DAeVjgEtk8H275tlOGdcsKlI=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue Id="signature-value-7471-4546-6145-5982">5mGuBTgfm6BolQZyzrYENhSYug2F0Rkfp+kPTD2cBrwMtJl4/qWelTdye5OwNUVefsvGEvZvOahWa6l7cGXqThp7/zvAVEcsbE4voVE/X0Awk7O2lXG1O5MgfZhqkgCqfnPckLyF4M8ZelLPgWjA+2E+cKZcS6pcNaZPby4ZiokyLVtT02ceo3wKtAIFe+e04zeTWREP8lnAQGJHlnOO9RmvzOpcbLqku1kMFAGi6+6KfXY+9oNT1fvdSsK+tHwrTSNjWI1bGza8vH0KWmQM4ieiCCyreYuYMdobIRYRD2D2dORRcKfrH2qZ2ebRFj1GSETcWgHM/m2J4+aBG1L9+w==</ds:SignatureValue><ds:KeyInfo Id="key-info-2012-6677-4701-9005"><ds:X509Data><ds:X509Certificate>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</ds:X509Certificate></ds:X509Data><ds:KeyValue><ds:RSAKeyValue><ds:Modulus>66yxBbxaWKNQv0hMX30rWRpCLEoo+McNVbckI+JIurzYMuJspiE363qm+1v8/OXAWMPesCPaMi/Y0yRG87KBYyTB+Wquoq+mW3IxRbJGB3pUZICoxrWKurLHEF3igrLFCuvPm/29SGjtZaA35bbK2FAfQBqx+VICNOxM0/TcyFRiOPHvMu3exJpJtlHB0MUdyCt4ANzkfsDJpClTUK0bt0/79MgT1mKOfmNAjbgiE4hqRtepfy4fDzQYBjnDmmBlUS6Lxe+1JMpV3VOa1d6/l5zVQYzWqSm+DI1infTuQhWxGF0LKsyWgMeASfxaTS3CVi3CqEEqjUGVmBP1oPyvLQ==</ds:Modulus>
<ds:Exponent>AQAB</ds:Exponent></ds:RSAKeyValue></ds:KeyValue></ds:KeyInfo>
<ds:Object Id="signature-object-7955-0588-8255-8984"><xades:QualifyingProperties Target="#signature-9698-5414-9816-0151">
<xades:SignedProperties Id="signed-properties-7420-1442-5200-2861"><xades:SignedSignatureProperties>
<xades:SigningTime>2021-11-29T07:06:30Z</xades:SigningTime><xades:SigningCertificate><xades:Cert>
<xades:CertDigest><ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>1LTjfqmVyoYiMljv0O8TvTWAUxfEsDO/H0Ii4Y0wk7o=</ds:DigestValue>
</xades:CertDigest><xades:IssuerSerial><ds:X509IssuerName>CN=ArubaPEC S.p.A. NG CA 3,OU=Certification AuthorityC,O=ArubaPEC S.p.A.,C=IT</ds:X509IssuerName><ds:X509SerialNumber>153988755130340051770218793960165900749</ds:X509SerialNumber>
</xades:IssuerSerial>
</xades:Cert></xades:SigningCertificate></xades:SignedSignatureProperties>
</xades:SignedProperties></xades:QualifyingProperties></ds:Object>
</ds:Signature>
</DE815>
Come fai a firmare il file?
Utilizzo aruba token impostando XADES. Se provo a fare l’invio tramite un software esterno (J-DAS), firmando sempre io tramite token, tutto va a buon fine. Se faccio l’invio io, con il medesimo file, mi da errore 1.