Web service
Di seguito le istruzioni per contattare i web service mysond.
1. Indicazioni
NOTA: L'ambiente di produzione è presente all'indirizzo: https://cloud.mysond.it/service-ejb/FatturaElettronicaService?wsdl
NOTA: Azienda di test in produzione
Codice Azienda | Gamma |
Utente | gamma |
Password | gamma |
1.2. Valore ESITO di ritorno dalle chiamate
Codice | Descrizione |
---|---|
0 |
Tutto il processo è andato a buon fine. |
1 |
Il processo non è andato a buon fine controllare il campo descrizione. |
3,4 |
L'azienda non è abilitata alla fatturazione elettronica |
6 |
L'azienda è abilitata al servizio di fatturazione elettronica ma il servizio è bloccato. |
99 |
L'azienda non ha la firma automatica di Mysond abilitata. |
111 |
Errore generico non gestito controllare il campo descrizione |
112 |
Errore dati di accesso sbagliati |
1.3. Valore NOTIFICHE generate dal sistema SDI
Codice | Descrizione |
---|---|
-1 |
In attesa di invio a SDI |
0 |
Fattura Inviata, presa in carico da SDI |
1 |
Fattura Rifiutata |
6 |
Fattura Scartata: messaggio che SdI invia al trasmittente nel caso in cui il file trasmesso (file FatturaPA o file archivio) non abbia superato i controlli previsti |
7 |
Fattura Consegnata: messaggio che SdI invia al trasmittente per certificare l’avvenuta consegna al destinatario del file FatturaPA |
8 |
Fattura Non Consegnata disponibile nel cassetto fiscale del destinatario: messaggio che il SdI invia al trasmittente per segnalare la temporanea impossibilità di recapitare al destinatario il file FatturaPA; |
8 |
-tipoFatturaPaB2B- Fattura Non Consegnata, SDI tenterà un nuovo invio per 10 giorni |
9 |
Fattura Accettata: notifica di accettazione della fattura da parte della Pubblica Amministrazione (non contemplato nella fatturazione B2B in quanto non deve essere accettata) |
10 |
Fattura Rifiutata: notifica di rifiuto della fattura da parte della Pubblica Amministrazione (non contemplato nella fatturazione B2B in quanto non puo essere rifiutata) |
11 |
Fattura in Decorrenza Termini:notifica di decorrenza termini: messaggio che il SdI invia sia al trasmittente sia al destinatario nel caso in cui non abbia ricevuto notifica di esito committente entro il termine di 15 giorni dalla data della ricevuta di consegna o dalla data della notifica di mancata consegna ma solo se questa sia seguita da una ricevuta di consegna. Con questa notifica il SdI comunica al destinatario l’impossibilità di inviare, da quel momento in poi, notifica di esito committente e al trasmittente l’impossibilità di ricevere notifica di esito; |
12 |
Attestazione di avvenuta trasmissione della fattura con impossibilità di recapito: messaggio che il SdI invia al trasmittente nei casi di impossibilità di recapito del file all’amministrazione destinataria per cause non imputabili al trasmittente (amministrazione non individuabile all’interno dell’Indice delle Pubbliche Amministrazioni oppure problemi di natura tecnica sul canale di trasmissione); |
13 |
File Vuoto, clicca per maggiori dettagli |
14 |
Servizio non disponibile |
15 |
Utente non abilitato |
16 |
Errore generico |
20 |
notifica di esito: messaggio con il quale il SdI inoltra al trasmittente la notifica di esito committente eventualmente ricevuta dal destinatario della fattura |
22 |
Liquidazione IVA Validata |
23 |
Clicca per maggiori dettagli |
24 |
Liquidazione IVA Scartata |
25 |
Fattura non ancora inviata, per procedere spunta la fattura e premi 'Firma-Invia' |
26 |
Fattura inviata con altri sistemi, caricata in conservazione |
27 |
Fattura correttamente firmata, seguirà invio automatico verso SDI |
28 |
Fattura correttamente creata ma NON inviata verso SDI" |
99 |
ERRORE: Fattura NON inviata, controllare che il nome file sia corretto oppure il canale di ricezione SDI non è momentaneamente attivo Icona nera con X rossa |
1.4. La seguente sezione XML verra sovrascritta dalla Mysond con i dati relativi alla trasmissione
<IdTrasmittente>
<IdPaese>IT</IdPaese>
<IdCodice>00000000000</IdCodice>
</IdTrasmittente>
2. Descrizione servizi esposti
2.1. WS1 importare, firmare ed inviare fatture elettroniche secondo lo standard SDI 1.2.
DocImportPaService
importFeAttivo, importFatturaPaSigned:
consente di importare, firmare ed inviare fatture elettroniche secondo lo standard SDI 1.2.
Parametro in ingresso:
DocImportPaItem:
utente: credenziali dell'azienda per cui si sta importando il documento, di seguito i campi da valorizzare:
utente.codiceAzienda, codice azienda della si sta caricado la fattura
utente.username
utente.password
fileName: nome xml della fattura che si sta caricando ("IT11111111111_00001.xml - .p7m");
xmlDoc: array di byte del file;
signAndSand: valore boolean se impostato a 'TRUE' la fattura che si sta caricando viene automaticamente firmata ed inviata (se l'azienda ha la firma automatica Mysond)
Valore di ritorno:
MysondInfo:
esito: se = 0 il processo è andato a buon fine; != 0 ci sono stati errori, da verificare nel campo descrizione
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.mysond.it/">
<soapenv:Header/>
<soapenv:Body>
<ws:importFeAttivo>
<arg0>
<fileName>IT0000000000_XXXXX.xml</fileName>
<signAndSand>1</signAndSand>
<utente>
<username>gamma</username>
<password>gamma</password>
<codiceAzienda>Gamma</codiceAzienda>
</utente>
<xmlDoc>[array]</xmlDoc>
</arg0>
</ws:importFeAttivo>
</soapenv:Body>
</soapenv:Envelope>
public void testImportFeAttivo(){
try{
Utente uut = new Utente();
uut.setCodiceAzienda(CODICE_AZIENDA_1);
uut.setUsername(USER);
uut.setPassword(PASSWD);
FileInputStream in = new FileInputStream(new File(PATH + "IT03455460547_00096.xml"));
byte[] bb = new byte[in.available()];
in.read(bb);
in.close();
DocImportPaItem ddc = new DocImportPaItem();
ddc.setUtente(uut);
ddc.setFileName("IT03455460547_00096.xml");
ddc.setXmlDoc(bb);
ddc.setSignAndSand(true);
//sandbox.fatturaelettronica.FatturaElettronicaServiceService service1 = new FatturaElettronicaServiceService();
FatturaElettronicaServiceService service1 = new FatturaElettronicaServiceService();
FatturaElettronicaService port1 = service1.getFatturaElettronicaServicePort();
sandbox.fatturaelettronica.MysondInfo mmi = port1.importFeAttivo(ddc);
System.out.println("-testImportFeAttivo: " + mmi.getEsito() + " - " + mmi.getDescrizione());
}catch(Exception ex){
ex.printStackTrace();
}
}
2.2. WS2 consente di scaricare le fatture passive ricevute nel sistema Mysond tramite codice univoco o pec dedicata
ATTENZIONE: Importante: in ambiente di test non è possibile ricevere fatture passive dato che non è collegato al circuito SDI per tutti i test utilizzare l'azienda Gamma come riportato nella request sottostante
ATTENZIONE: Impostato un limite massimo di 20 fatture prelevabili con una singola request. Se si hanno un numero superiore di fatture a disposizione andranno fatte più request
getFeRicevute:
consente di scaricare le fatture passive ricevute nel sistema Mysond:
Parametro in ingresso:
DocImportPaItem:
utente: credenziali dell'azienda per cui si stanno scaricando i documenti, di seguito i campi da valorizzare:
utente.codiceAzienda, codice azienda della si sta caricado la fattura
utente.username
utente.password
date: verrano restituiti solo i documenti RICEVUTI nell'arco della 24h dalla data indicata (si può utilizzare anche il parametro dateLong indicando il long della data)
fileName: valorizzando questo parametro verra scaricata la fattura con quel nome ignorando il fatto che siano state gia scaricate
Valore di ritorno:
Lista di oggetti: <DocFe>: lista dei documenti restituiti:
DocFe.code: codice del documento, (numero)
DocFe.date: data del documento
DocFe.docData: array di byte
DocFe.docName: nome del file xml o p7m
DocFe.lastUpdate: data ricezione documento.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.mysond.it/">
<soapenv:Header/>
<soapenv:Body>
<ws:getFeRicevute>
<arg0>
<date>2018-10-10</date>
<utente>
<username>gamma</username>
<password>gamma</password>
<codiceAzienda>Gamma</codiceAzienda>
</utente>
</arg0>
</ws:getFeRicevute>
</soapenv:Body>
</soapenv:Envelope>
public void testGetFeRicevute(){
try{
Utente uut = new Utente();
uut.setCodiceAzienda(CODICE_AZIENDA_1);
uut.setUsername(USER);
uut.setPassword(PASSWD);
GregorianCalendar cal = new GregorianCalendar(2018, 7, 29);
//cal.setTimeZone(TimeZone.getTimeZone("GMT+1"));
DatatypeFactory dataTypeFactory = DatatypeFactory.newInstance();
XMLGregorianCalendar xmlCal = dataTypeFactory.newXMLGregorianCalendar(cal);
DocImportPaItem ddc = new DocImportPaItem();
ddc.setUtente(uut);
ddc.setDate(xmlCal);
FatturaElettronicaServiceService service1 = new FatturaElettronicaServiceService();
FatturaElettronicaService port1 = service1.getFatturaElettronicaServicePort();
List<DocFe> ll = port1.getFeRicevute(ddc);
if(ll != null && ll.size() > 0){
System.out.println("*******************************************************************************************");
for(DocFe ddf : ll){
System.out.println(ddf.getCode() + "; " + ddf.getDate() + "; " + ddf.getDocName() + "; " + ddf.getLastUpdate());
System.out.println(ddf.getDocData());
FileOutputStream out = new FileOutputStream(new File(PATH + ddf.getDocName()));
out.write(ddf.getDocData());
out.flush();
out.close();
}
System.out.println("*******************************************************************************************");
}
}catch(Exception ex){
ex.printStackTrace();
}
}
2.3. WS3 consente di recuperare le notifiche relative una fattura firmata ed inviata dal sistema Mysond
Attenzione: Importante: in ambiente di test non è possibile ricevere notifiche di invio dato che non è collegato al circuito SDI per tutti i test utilizzare l'azienda Gamma come riportato nella request sottostante.
getNotificheList:
consente di recuperare le notifiche generate da una fattura firmata ed inviata dal sistema Mysond
Parametro in ingresso:
NotificaParam:
AziendaCod: codice azienda della si sta caricado la fattura;
UtenteCod: utente
FileName: nome file della fattura firmata ed inviata precedentemente senza estensione AGGIORNAMENTO dal 02/10/2019 è possible inviare nel paramento un elenco di file separato da "|" pipe (Ascii 166)
DocData: verranno restituite tutte le notifiche per i documenti emessi in questa data
<!-- REQUEST FILE SINGOLO -->
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.mysond.it/">
<soapenv:Header/>
<soapenv:Body>
<ws:getNotificheList>
<arg0>
<aziendaCod>Gamma</aziendaCod>
<utenteCod>gamma</utenteCod>
<fileName>IT0000000000_XXXXX</fileName>
<docData>2019-04-15</docData>
</arg0>2
</ws:getNotificheList>
</soapenv:Body>
</soapenv:Envelope>
<!-- REQUEST FILE MULTIPLI -->
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.mysond.it/">
<soapenv:Header/>
<soapenv:Body>
<ws:getNotificheList>
<arg0>
<aziendaCod>Gamma</aziendaCod>
<utenteCod>gamma</utenteCod>
<fileName>IT0000000000_XXXXX|IT0000000000_XXXX1|IT0000000000_XXXX2|IT0000000000_XXXX3|IT0000000000_XXXX4</fileName>
<docData>2019-04-15</docData>
</arg0>
</ws:getNotificheList>
</soapenv:Body>
</soapenv:Envelope>
public void testGetNotificheList(){
try{
NotificaParam notificaParam = new NotificaParam();
notificaParam.setAziendaCod(CODICE_AZIENDA_1);
notificaParam.setUtenteCod(USER);
notificaParam.setFileName("nome fattura xml / p7m (elenco nomi file separati da pipe)");
FatturaElettronicaServiceService service1 = new FatturaElettronicaServiceService();
FatturaElettronicaService port1 = service1.getFatturaElettronicaServicePort();
List<NotificaRequest> ll = port1.getNotificheList(notificaParam);
}catch(Exception ex){
ex.printStackTrace();
}
}
2.4. WS4 Restituisce i dati dell'azienda, fra cui i CREDITI RESIDUI
getAzienda:
restituisce i dati dell'azienda un esempio per verificare i crediti residui
Parametro in ingresso:
DocImportPaItem:
utente: credenziali dell'azienda per cui si invia il documento, di seguito i campi da valorizzare:
utente.codiceAzienda, codice azienda della si sta caricado la fattura
utente.username
utente.password
Valore di ritorno:
Azienda
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.mysond.it/">
<soapenv:Header/>
<soapenv:Body>
<ws:getAzienda>
<arg0>
<utente>
<username>gamma</username>
<password>gamma</password>
<codiceAzienda>Gamma</codiceAzienda>
</utente>
</arg0>
</ws:getAzienda>
</soapenv:Body>
</soapenv:Envelope>
public void testGetAzienda(){
try{
Utente uut = new Utente();
uut.setCodiceAzienda(CODICE_AZIENDA_1);
uut.setUsername(USER);
uut.setPassword(PASSWD);
DocImportPaItem ddc = new DocImportPaItem();
ddc.setUtente(uut);
FatturaElettronicaServiceService service1 = new FatturaElettronicaServiceService();
FatturaElettronicaService port1 = service1.getFatturaElettronicaServicePort();
ddc = new DocImportPaItem();
ddc.setUtente(uut);
Azienda aaz = port1.getAzienda(ddc);
System.out.println("- testGetAzienda: " + aaz.getCrediti());
}catch(Exception ex){
ex.printStackTrace();
}
}
2.5. WS5 consente di importare verso Mysond una fattura PASSIVA secondo lo standard SDI 1.2
importFePassivo:
consente di importare (per conservare) una fattura secondo lo standard SDI 1.2 chè è stata ricevuta dal sistema di intersambio
Parametro in ingresso:
DocImportPaItem:
utente: credenziali dell'azienda per cui si sta importando il documento, di seguito i campi da valorizzare:
utente.codiceAzienda, codice azienda della si sta caricado la fattura
utente.username
utente.password
fileName: nome xml della fattura che si sta caricando ("IT11111111111_00001.xml - .p7m");
xmlDoc: array di byte della fattura;
Valore di ritorno:
MysondInfo:
esito: se = 0 il processo è andato a buon fine; != 0 ci sono stati errori, da verificare nel campo descrizione
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.mysond.it/">
<soapenv:Header/>
<soapenv:Body>
<ws:importFeAttivo>
<arg0>
<fileName>IT0000000000_XXXXX.xml</fileName>
<signAndSand>1</signAndSand>
<utente>
<username>gamma</username>
<password>gamma</password>
<codiceAzienda>Gamma</codiceAzienda>
</utente>
<xmlDoc>[array]</xmlDoc>
</arg0>
</ws:importFeAttivo>
</soapenv:Body>
</soapenv:Envelope>
public void testImportFePassivo(){
try{
FileInputStream in = new FileInputStream(new File(PATH + "IT03141290548_00019.xml.p7m"));
byte[] cc = new byte[in.available()];
in.read(cc);
in.close();
Utente uut = new Utente();
uut.setCodiceAzienda(CODICE_AZIENDA_2);
uut.setUsername(USER);
uut.setPassword(PASSWD);
DocImportPaItem ddc = new DocImportPaItem();
ddc.setUtente(uut);
ddc.setFileName("IT03141290548_00019.xml.p7m");
ddc.setXmlDoc(cc);
FatturaElettronicaServiceService service1 = new FatturaElettronicaServiceService();
FatturaElettronicaService port1 = service1.getFatturaElettronicaServicePort();
MysondInfo mmi = port1.importFePassivo(ddc);
System.out.println("-importFePassivo: " + mmi.getEsito() + " - " + mmi.getDescrizione());
}catch(Exception ex){
ex.printStackTrace();
}
}
2.6. WS6 consente di importare per conservare una fattura secondo lo standard SDI 1.2
conservaFe:
consente di importare e conservre una fattura secondo lo standard SDI 1.2 che è già stata firmata ed inviata
Parametro in ingresso:
DocImportPaItem:
utente: credenziali dell'azienda per cui si sta importando il documento, di seguito i campi da valorizzare:
utente.codiceAzienda, codice azienda della si sta caricado la fattura
utente.username
utente.password
fileName: nome xml della fattura che si sta caricando ("IT11111111111_00001.xml - .p7m");
xmlDoc: array di byte della fattura;
Valore di ritorno:
MysondInfo:
esito: se = 0 il processo è andato a buon fine; != 0 ci sono stati errori, da verificare nel campo descrizione
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.mysond.it/">
<soapenv:Header/>
<soapenv:Body>
<ws:conservaFe>
<arg0>
<fileName>IT0000000000_XXXXX.xml</fileName>
<signAndSand>1</signAndSand>
<utente>
<username>gamma</username>
<password>gamma</password>
<codiceAzienda>Gamma</codiceAzienda>
</utente>
<xmlDoc>[array]</xmlDoc>
</arg0>
</ws:conservaFe>
</soapenv:Body>
</soapenv:Envelope>
public void testConservaFe(){
try{
FileInputStream in = new FileInputStream(new File(PATH + "IT03141290548_00019.xml.p7m"));
byte[] cc = new byte[in.available()];
in.read(cc);
in.close();
Utente uut = new Utente();
uut.setCodiceAzienda(CODICE_AZIENDA_2);
uut.setUsername(USER);
uut.setPassword(PASSWD);
DocImportPaItem ddc = new DocImportPaItem();
ddc.setUtente(uut);
ddc.setFileName("IT03141290548_00019.xml.p7m");
ddc.setXmlDoc(cc);
FatturaElettronicaServiceService service1 = new FatturaElettronicaServiceService();
FatturaElettronicaService port1 = service1.getFatturaElettronicaServicePort();
MysondInfo mmi = port1.conservaFe(ddc);
System.out.println("- testConservaFe: " + mmi.getEsito() + " - " + mmi.getDescrizione());
}catch(Exception ex){
ex.printStackTrace();
}
}
2.7. WS7 consente di scaricare le fatture attivie che sono state firmate e inviate dal sistema Mysond:
ATTENZIONE: Impostato un limite massimo di 20 fatture prelevabili con una singola request. Se si hanno un numero superiore di fatture a disposizione andranno fatte più request
getFeInviate:
consente di scaricare le fatture attivie che sono state firmate e inviate dal sistema Mysond:
Parametro in ingresso:
DocImportPaItem:
utente: credenziali dell'azienda per cui si stanno scaricando i documenti, di seguito i campi da valorizzare:
utente.codiceAzienda, codice azienda della si sta caricado la fattura
utente.username
utente.password
date: verrano restituiti solo i documenti INVIATI nell'arco della 24h dalla data indicata (si può utilizzare anche il parametro dateLong indicando il long della data)
Valore di ritorno:
Lista di oggetti: <DocFe>: lista dei documenti restituiti:
DocFe.code: codice del documento, (numero)
DocFe.date: data del documento
DocFe.docData: array di byte
DocFe.docName: nome del file xml o p7m
DocFe.lastUpdate: data ricezione documento.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.mysond.it/">
<soapenv:Header/>
<soapenv:Body>
<ws:getFeInviate>
<arg0>
<date>2018-10-10</date>
<utente>
<username>gamma</username>
<password>gamma</password>
<codiceAzienda>Gamma</codiceAzienda>
</utente>
</arg0>
</ws:getFeInviate>
</soapenv:Body>
</soapenv:Envelope>
public void testGetFeRicevute(){
try{
Utente uut = new Utente();
uut.setCodiceAzienda(CODICE_AZIENDA_1);
uut.setUsername(USER);
uut.setPassword(PASSWD);
GregorianCalendar cal = new GregorianCalendar(2018, 7, 29);
//cal.setTimeZone(TimeZone.getTimeZone("GMT+1"));
DatatypeFactory dataTypeFactory = DatatypeFactory.newInstance();
XMLGregorianCalendar xmlCal = dataTypeFactory.newXMLGregorianCalendar(cal);
DocImportPaItem ddc = new DocImportPaItem();
ddc.setUtente(uut);
ddc.setDate(xmlCal);
FatturaElettronicaServiceService service1 = new FatturaElettronicaServiceService();
FatturaElettronicaService port1 = service1.getFatturaElettronicaServicePort();
List<DocFe> ll = port1.getFeInviate(ddc);
if(ll != null && ll.size() > 0){
System.out.println("*******************************************************************************************");
for(DocFe ddf : ll){
System.out.println(ddf.getCode() + "; " + ddf.getDate() + "; " + ddf.getDocName() + "; " + ddf.getLastUpdate());
System.out.println(ddf.getDocData());
FileOutputStream out = new FileOutputStream(new File(PATH + ddf.getDocName()));
out.write(ddf.getDocData());
out.flush();
out.close();
}
System.out.println("****************************************\
}catch(Exception ex){
ex.printStackTrace();
}
}
2.8. WS8 consente di rimuovere la firma elettronica dai file xml firmati:
getXmlFromP7m:
consente di rimuovere la firma elettronica dai file xml firmati:
Parametro in ingresso:
DocImportPaItem:
xmlDoc: array di byte della fattura;
Valore di ritorno:
xmlDoc: array di byte della fattura senza firma;
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.mysond.it/">
<soapenv:Header/>
<soapenv:Body>
<ws:getDocNomeFile>
<arg0>
<xmlDoc>[array]</xmlDoc>
</arg0>
</ws:getDocNomeFile>
</soapenv:Body>
</soapenv:Envelope>
2.9. WS9 consente di ottenere una lista di nome file
getDocNomeFile:
consente di ottenere una lista di nome file:
Parametro in ingresso:
DocFeFilter:
utente: Utente;
dataDal: Data DAL;
dataAl: Data AL;
versoEntrataUscita: VERSO_USCITA = 1 VERSO_ENTRATA = 0;
Valore di ritorno:
Lista di stringhe contentente i nomi file
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.mysond.it/">
<soapenv:Header/>
<soapenv:Body>
<ws:getDocNomeFile>
<arg0>
<dataDal>2019-01-01</dataDal>
<dataAl>2019-01-10</dataAl>
<utente>
<codiceAzienda>Gamma</codiceAzienda>
<username>gamma</username>
<password>gamma</password>
</utente>
<versoEntrataUscita>0</versoEntrataUscita>
</arg0>
</ws:getDocNomeFile>
</soapenv:Body>
</soapenv:Envelope>
2.10. WS10 consente di ottenere l'ultima notifica in ordine di tempo di uno specifico file
getNotifica:
consente di ottenere l'ultima notifica in ordine di tempo di uno specifico file :
Parametro in ingresso:
NotificaParam:
aziendaCod: Codice Azienda;
utenteCod: Nome Utente
fileName: Nome File
Valore di ritorno:
Notifica
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.mysond.it/">
<soapenv:Header/>
<soapenv:Body>
<ws:getNotifica>
<arg0>
<aziendaCod>Gamma</aziendaCod>
<fileName>IT0123456789_XXXXX.xml</fileName>
<utenteCod>gamma</utenteCod>
</arg0>
</ws:getNotifica>
</soapenv:Body>
</soapenv:Envelope>
2.11. WS11 consente di effettuare un richiesta di download delle fatture ricevute nel cassetto fiscale rimaste instato di mancata consegna
richiestaMancataConsegna:
consente di rimuovere la firma elettronica dai file xml firmati:
Parametri in ingresso:
SdiDownloadFe:
usr: Utente Cassetto fiscale;
pws: password cassetto fiscale;
pin: pin cassetto fiscale;
iva: partita iva dell’azienda per cui si fa la richiesta
dataInizioRicerca: data da quanto effettuare la ricerca;
Utente: Utente azienda;
Valore di ritorno:
nessuno, verranno importate le fatture passive in mancata consegna direttamente in fattura chiara
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.mysond.it/">
<soapenv:Header/>
<soapenv:Body>
<ws:richiestaMancataConsegna>
<arg0>
<pin>?</pin>
<pwd>?</pwd>
<usr>?</usr>
<iva>?</iva>
<dataInizioRicerca>?</dataInizioRicerca>
</arg0>
<arg1>
<utente>
<codiceAzienda>Gamma</codiceAzienda>
<username>gamma</username>
<password>gamma</password>
</utente>
</arg1>
</ws:richiestaMancataConsegna>
</soapenv:Body>
</soapenv:Envelope>
2.12. WS12 consente di effettuare un richiesta per avere un elenco di fatture scartate e non reinviate ai clienti
getFattureScartateNonReinviate:
consente di effettuare un richiesta per avere un elenco di fatture scartate e non reinviate ai clienti
Parametro in ingresso:
DocImportPaItem:
utente: credenziali dell'azienda per cui si stanno scaricando i documenti, di seguito i campi da valorizzare:
utente.codiceAzienda, codice azienda della si sta caricado la fattura
utente.username
utente.password
date: verranno restituiti solamente i documenti con data succesiva a quella impostata fino a 30 giorni in avanti
Valore di ritorno:
elenco dei documenti scartati e non reinviati a SDI
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.mysond.it/">
<soapenv:Header/>
<soapenv:Body>
<ws:getFattureScartateNonReinviate>
<arg0>
<date>2018-10-10</date>
<utente>
<username>gamma</username>
<password>gamma</password>
<codiceAzienda>Gamma</codiceAzienda>
</utente>
</arg0>
</ws:getFattureScartateNonReinviate>
</soapenv:Body>
</soapenv:Envelope>
2.13. WS13 consente di ottenere la lista dell'ultima notifica in ordine di tempo di ogni file passato nel parametro fileName
getUltimaNotificaList:
consente di ottenere la lista dell'ultima notifica in ordine di tempo di ogni file passato nel parametro fileName
Parametro in ingresso:
NotificaParam:
aziendaCod: Codice Azienda;
utenteCod: Nome Utente
fileName: nome file della fattura firmata ed inviata precedentemente senza estensione, è possible inviare nel paramento un elenco di file separato da "|" pipe (Ascii 166) per ottenere con una sola request l'elenco di piu files
Valore di ritorno:
ultima notifica disponibile per i documenti
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.mysond.it/">
<soapenv:Header/>
<soapenv:Body>
<ws:getUltimaNotificaList>
<arg0>
<aziendaCod>Gamma</aziendaCod>
<utenteCod>gamma</utenteCod>
<fileName>IT0000000000_XXXXX|IT0000000000_XXXX1|IT0000000000_XXXX2|IT0000000000_XXXX3|IT0000000000_XXXX4</fileName>
</arg0>
</ws:getUltimaNotificaList>
</soapenv:Body>
</soapenv:Envelope>
2.14. WS14 consente di ottenere una lista di tutte le fatture effettivamente recapitate al cassetto fiscale del cliente
ATTENZIONE: Impostato un limite massimo di 20 fatture prelevabili con una singola request. Se si hanno un numero superiore di fatture a disposizione andranno fatte più request
getFeConsegnate:
consente di ottenere una lista di tutte le fatture effettivamente recapitate al cassetto fiscale del cliente
Parametro in ingresso:
DocFeFilter:
utente: Utente;
dataDal: Data DAL;
dataAl: Data AL;
Valore di ritorno:
elenco di documenti
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.mysond.it/">
<soapenv:Header/>
<soapenv:Body>
<ws:getFeConsegnate>
<arg0>
<utente>
<username>gamma</username>
<password>gamma</password>
<codiceAzienda>Gamma</codiceAzienda>
</utente>
<dataDal>2019-01-01</dataDal>
<dataAl>2019-01-31</dataAl>
</arg0>
</ws:getFeConsegnate>
</soapenv:Body>
</soapenv:Envelope>
Metodi 2020: Sono stati creati nuovi metodi per che contengono il link per il dowload del file al posto del byte array cosi da ottimizzare le dimensioni delle response.
2.15. WS15 consente di ottenere una lista di tutte le fatture inviate con all'interno un link per effettuare il download del file se necessario
getFeInviateLink:
Parametro in ingresso:
DocFeFilter:
utente: Utente;
dataDal: Data DAL;
dataAl: Data AL;
Valore di ritorno:
elenco di documenti
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.mysond.it/">
<soapenv:Header/>
<soapenv:Body>
<ws:getFeInviateLink>
<arg0>
<utente>
<username>gamma</username>
<password>gamma</password>
<codiceAzienda>Gamma</codiceAzienda>
</utente>
<dataDal>2019-01-01</dataDal>
<dataAl>2019-01-31</dataAl>
</arg0>
</ws:getFeInviateLink>
</soapenv:Body>
</soapenv:Envelope>
2.16. WS16 consente di ottenere una lista di tutte le fatture ricevute con all'interno un link per effettuare il download del file se necessario
getFeRicevuteLink:
Parametro in ingresso:
DocFeFilter:
utente: Utente;
dataDal: Data DAL;
dataAl: Data AL;
Valore di ritorno:
elenco di documenti
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.mysond.it/">
<soapenv:Header/>
<soapenv:Body>
<ws:getFeRicevuteLink>
<arg0>
<utente>
<username>gamma</username>
<password>gamma</password>
<codiceAzienda>Gamma</codiceAzienda>
</utente>
<dataDal>2019-01-01</dataDal>
<dataAl>2019-01-31</dataAl>
</arg0>
</ws:getFeRicevuteLink>
</soapenv:Body>
</soapenv:Envelope>
2.17. WS17 consente di ottenere una lista di tutte le fatture inviate con stato confermato o messo a disposizione con all'interno un link per effettuare il download del file se necessario
getFeConsegnateLink:
Parametro in ingresso:
DocFeFilter:
utente: Utente;
dataDal: Data DAL;
dataAl: Data AL;
Valore di ritorno:
elenco di documenti
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.mysond.it/">
<soapenv:Header/>
<soapenv:Body>
<ws:getFeConsegnateLink>
<arg0>
<utente>
<username>gamma</username>
<password>gamma</password>
<codiceAzienda>Gamma</codiceAzienda>
</utente>
<dataDal>2019-01-01</dataDal>
<dataAl>2019-01-31</dataAl>
</arg0>
</ws:getFeConsegnateLink>
</soapenv:Body>
</soapenv:Envelope>
2.18. WS18 consente di ottenere una lista di tutte le fatture di dui il download è gia stato effettuato con all'interno un link per effettuare il download del file se necessario
getFeScaricateLink:
Parametro in ingresso:
DocFeFilter:
utente: Utente;
dataDal: Data DAL;
dataAl: Data AL;
Valore di ritorno:
elenco di documenti
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.mysond.it/">
<soapenv:Header/>
<soapenv:Body>
<ws:getFeScaricateLink>
<arg0>
<utente>
<username>gamma</username>
<password>gamma</password>
<codiceAzienda>Gamma</codiceAzienda>
</utente>
<dataDal>2019-01-01</dataDal>
<dataAl>2019-01-31</dataAl>
</arg0>
</ws:getFeScaricateLink>
</soapenv:Body>
</soapenv:Envelope>
2.19. WS19 consente di ottenere la stampa pdf dato un xml
getPdfFromXml:
documentType: null = normale, 1 = semplificata, 100 = lotto, 101 = ordine
Parametro in ingresso:
DocImportPaItem:
documentType: tipo documento da convertire;
xmlDoc: array di byte del documento;
Valore di ritorno:
xmlDoc: array di byte del pdf da salvare come file;
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.mysond.it/">
<soapenv:Header/>
<soapenv:Body>
<ws:getPdfFromXml>
<arg0>
<documentType>100</documentType>
<xmlDoc>[byteArrayXML]</xmlDoc>
</arg0>
</ws:getPdfFromXml>
</soapenv:Body>
</soapenv:Envelope>
2.20. WS20 consente di scaricare il metadato di una fattura passiva dato il nome file
ATTENZIONE: I metadati sono disponibili dall'anno 2020
getMetadato:
Parametro in ingresso:
DocFeFilter:
utente: Utente;
nomeFile: Nome File fattura passiva
Valore di ritorno:
Oggetto contenente il metadato serializzato in byte il nome file e il link relativo
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.mysond.it/">
<soapenv:Header/>
<soapenv:Body>
<ws:getMetadato>
<arg0>
<utente>
<username>utente</username>
<password>password</password>
<codiceAzienda>azienda</codiceAzienda>
</utente>
<nomeFile>IT00000000000_XXXXX.xml</nomeFile>
</arg0>
</ws:getMetadato>
</soapenv:Body>
</soapenv:Envelope>
2.21. WS21 consente di ottenere la lista dei pacchetti in quel momento attivi nel profilo
getPacchettiAttivi:
Parametro in ingresso:
utente: Utente;
Valore di ritorno:
Lista di oggetti di tipo Pacchetto.
è possibile avere attivi piu pacchetti nello stesso cliente che possono avere data di scadenza diversa.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.mysond.it/">
<soapenv:Header/>
<soapenv:Body>
<ws:getPacchettiAttivi>
<arg0>
<username>utente</username>
<password>password</password>
<codiceAzienda>azienda</codiceAzienda>
</arg0>
</ws:getPacchettiAttivi>
</soapenv:Body>
</soapenv:Envelope>
2.22. WS22 consente di impostare un documento come "non scaricato"
resetDownloadFlag:
Parametro in ingresso:
utente: Utente;
nomeFile: stringa
Valore di ritorno:
esito: 0 procedura andata a buon fine
esit0: 1 documento non trovato
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.mysond.it/">
<soapenv:Header/>
<soapenv:Body>
<ws:resetDownloadFlag>
<arg0>
<utente>
<username>utente</username>
<password>password</password>
<codiceAzienda>azienda</codiceAzienda>
</utente>
<nomeFile>IT012345678910_abcde.xml</nomeFile>
</arg0>
</ws:resetDownloadFlag>
</soapenv:Body>
</soapenv:Envelope>
2.23. WS23 consente di ottenere gli ordini nso ricevuti nella piattaforma
NOTA: non essendo presente la pagina per fare il reset del flag "scaricato" è necessario usare la funzione resetDownloadFlag (WS22)
getOrdiniNSORicevuti:
Parametro in ingresso:
utente: Utente;
Valore di ritorno:
Lista di oggetti: <DocFe>: lista dei documenti restituiti:
DocFe.code: codice del documento, (numero)
DocFe.date: data del documento
DocFe.docData: array di byte
DocFe.docName: nome del file xml o p7m
DocFe.lastUpdate: data ricezione documento.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.mysond.it/">
<soapenv:Header/>
<soapenv:Body>
<ws:getOrdiniNSORicevuti>
<arg0>
<username>utente</username>
<password>password</password>
<codiceAzienda>azienda</codiceAzienda>
</arg0>
</ws:getOrdiniNSORicevuti>
</soapenv:Body>
</soapenv:Envelope>
2.24. WS24 consente di scaricare le fatture passive ricevute con l'eventuale firma digitale già rimossa
ATTENZIONE: Impostato un limite massimo di 20 fatture prelevabili con una singola request. Se si hanno un numero superiore di fatture a disposizione andranno fatte più request
getFeRicevuteNoFirma: consente di scaricare le fatture passive ricevute con l'eventuale firma digitale già rimossa.
Parametro in ingresso:
DocImportPaItem:
utente: credenziali dell'azienda per cui si stanno scaricando i documenti, di seguito i campi da valorizzare:
utente.codiceAzienda, codice azienda della si sta caricado la fattura
utente.username
utente.password
fileName: valorizzando questo parametro verra scaricata la fattura con quel nome ignorando il fatto che siano state gia scaricate
Valore di ritorno:
Lista di oggetti: <DocFe>: lista dei documenti restituiti:
DocFe.code: codice del documento, (numero)
DocFe.date: data del documento
DocFe.docData: array di byte
DocFe.docName: nome del file xml o p7m
DocFe.lastUpdate: data ricezione documento.
REQUEST SOAP:
```xml
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.mysond.it/">
<soapenv:Header/>
<soapenv:Body>
<ws:getFeRicevuteNoFirma>
<arg0>
<utente>
<username>gamma</username>
<password>gamma</password>
<codiceAzienda>Gamma</codiceAzienda>
</utente>
</arg0>
</ws:getFeRicevuteNoFirma>
</soapenv:Body>
</soapenv:Envelope>
3. Esempi di codice
3.1. PHP
ATTENZIONE: è possibile incorrete in un errore di questo tipo: Fatal error: Uncaught SoapFault exception: [HTTP] Could not connect to host. La certification authority che ha deprecato alcune versioni software, per risolvere il problema con PHP è sufficiente disattivare la validazione del certificato da parte di PHP con questo script, naturalmente la crittografia SSL rimane attiva
$context = stream_context_create([
'ssl' => [
// set some SSL/TLS specific options
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
]
]);
$client = new SoapClient('cloud_fatturaElettronica.wsdl', ['stream_context' => $context]);
3.1.1. getAzienda
<?php
$client = new SoapClient('sandbox_fatturaElettronica.wsdl');
$client->__getFunctions();
$client->__getTypes();
$utente = array(
'codiceAzienda' => 'Gamma',
'username' => 'gamma',
'password' => 'gamma',
);
$ddc = array (
'arg0' =>
array('date' => null,
'utente' => $utente,
'signAndSand' => false,
'fileName' => null,
'xmlDoc' => null,
'dateLong' => null
),
);
$response = $client->getAzienda($ddc);
print("<pre>".print_r($response,true)."</pre>");
?>
3.1.2. getFeRicevute
<?php
$client = new SoapClient('sandbox_fatturaElettronica.wsdl');
$client->__getFunctions();
$client->__getTypes();
$utente = array(
'codiceAzienda' => 'Gamma',
'username' => 'gamma',
'password' => 'gamma',
);
$ddc = array (
'arg0' =>
array('date' => '2018-11-14',
'utente' => $utente,
'signAndSand' => false,
'fileName' => null,
'xmlDoc' => null,
'dateLong' => null
),
);
$response = $client->getFeRicevute($ddc);
print("<pre>".print_r($response,true)."</pre>");
?>
3.1.3. getNotificheList
<?php
$client = new SoapClient('sandbox_fatturaElettronica.wsdl');
$client->__getFunctions();
$client->__getTypes();
$ddc = array (
'arg0' =>
array(
'aziendaCod' => 'Gamma',
'utenteCod' => 'gamma',
'fileName' => 'IT00934061003_00118.xml'
),
);
$response = $client->getNotificheList($ddc);
print("<pre>".print_r($response,true)."</pre>");
?>
3.1.4. getDocNomeFile
<?php
$client = new SoapClient('sandbox_fatturaElettronica.wsdl');
$client->__getFunctions();
$client->__getTypes();
$utente = array (
'codiceAzienda' => 'Gamma',
'username' => 'gamma',
'password' => 'gamma',
);
$ddc = array (
'arg0' =>
array('dateDal' => '2019-01-01',
'dateAl' => '2019-01-31',
'utente' => $utente
),
);
$response = $client->getDocNomeFile($ddc);
print("<pre>".print_r($response,true)."</pre>");
?>
3.2. C
3.2.1. getNotificheList
protected void Page_Load(object sender, EventArgs e)
{
var fatturaElettronicaServiceClient = new FatturaElettronicaServiceClient();
var notPar = new notificaParam();
notPar.aziendaCod = "Gamma";
notPar.utenteCod = "gamma";
notPar.fileName = "IT00934061003_00118.xml"; // è possibile passare una lista di file passando i nomi dei file separati da "|" pipe
var notifiche = fatturaElettronicaServiceClient.getNotificheList(notPar);
GridView1.DataSource = notifiche;
GridView1.DataBind();
}
3.2.2. getAzienda
protected void Page_Load(object sender, EventArgs e)
{
var fatturaElettronicaServiceClient = new FatturaElettronicaServiceClient();
var uut = new utente();
uut.codiceAzienda = "Gamma";
uut.username = "gamma";
uut.password = "gamma";
var ddc = new docImportPaItem();
ddc.utente = uut;
azienda a = fatturaElettronicaServiceClient.getAzienda(ddc);
String.Format("{0} {1} {2} {3}", "Chiamata avvenuta con successo", a.azienda1, a.codFisc, a.iva);
}
3.2.3. importFeAttivo
protected void Page_Load(object sender, EventArgs e)
{
var fatturaElettronicaServiceClient = new FatturaElettronicaServiceClient();
var uut = new utente();
uut.codiceAzienda = "Gamma";
uut.username = "gamma";
uut.password = "gamma";
byte[] file = File.ReadAllBytes(@"C:\Users\Diego\Desktop\FATTURE XML\ITBRNMSM71B24E463Y_00100.xml");
ddc.fileName = "IT01222160119_00093.xml";
ddc.xmlDoc = file;
ddc.signAndSand = true;
var importFeAttive = fatturaElettronicaServiceClient.importFeAttivo(ddc);
}
3.3. VISUAL BASIC
3.3.1. getAzienda
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' GET AZIENDA PER OTTENERE I DATI DELL'AZIENDA E SOPRATTUTTO I CREDITI RESIDUI
Dim fatturaElettronicaService As New FatturaElettronicaServiceClient
Dim uut As New utente
uut.codiceAzienda = "Gamma"
uut.username = "gamma"
uut.password = "gamma"
Dim ddc As New docImportPaItem
ddc.utente = uut
Dim a As New azienda
Try
a = fatturaElettronicaService.getAzienda(ddc)
MessageBox.Show(String.Format("Connesso a {0}, Crediti: {1}", a.azienda1, a.crediti))
Catch ex As Exception
MessageBox.Show("Errore: " & ex.Message)
End Try
End Sub
3.3.2. importFeAttivo
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
'UPLOAD FILE XML
Dim fatturaElettronicaService As New FatturaElettronicaServiceClient
Dim uut As New utente
uut.codiceAzienda = "Gamma"
uut.username = "gamma"
uut.password = "gamma"
Try
Dim ddc As New docImportPaItem
ddc.utente = uut
Dim f As New OpenFileDialog
If f.ShowDialog = DialogResult.OK Then
ddc.fileName = f.SafeFileName
ddc.xmlDoc = File.ReadAllBytes(f.FileName)
ddc.signAndSand = True
Dim info As New mysondInfo
info = fatturaElettronicaService.importFeAttivo(ddc)
MessageBox.Show(String.Format("Esito {0}, Descrizione: {1}", info.esito, info.descrizione))
End If
Catch ex As Exception
MessageBox.Show("Errore: " & ex.Message)
End Try
End Sub
3.3.3. getNotificheList
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
'NOTIFICHE REALTIVE AD UN FILE
Dim fatturaElettronicaService As New FatturaElettronicaServiceClient
Dim notPar As New notificaParam
notPar.aziendaCod = "Gamma"
notPar.utenteCod = "gamma"
notPar.fileName = "IT00934061003_00118.xml" 'è possibile passare una lista di file passando i nomi dei file separati da "|" pipe
Dim notificaRequest1 As notificaRequest()
notificaRequest1 = fatturaElettronicaService.getNotificheList(notPar)
MessageBox.Show(notificaRequest1.Length)
End Sub
3.4. DELPHI
3.4.1. getAzienda
implementation
uses sandbox_fatturaElettronica;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
Service: FatturaElettronicaService;
ReqEmployee: docImportPaItem;
ResEmployee: Azienda;
Ute: Utente;
begin
Memo1.Lines.Clear;
// capture interface to service
Service := getFatturaElettronicaService();
// build the request
ReqEmployee := docImportPaItem.Create;
try
try
Ute := Utente.Create;
Ute.codiceAzienda := 'Gamma';
Ute.username := 'gamma';
Ute.password := 'gamma';
ReqEmployee.utente := Ute;
// Make the service request
ResEmployee := Service.getAzienda(ReqEmployee);
try
try
// Display the response
Memo1.Lines.Add('Azienda: '+ResEmployee.azienda);
Memo1.Lines.Add('Crediti: '+inttostr(ResEmployee.crediti));
except
on E: exception do Memo1.Lines.Add('Errore '+E.Message);
end;
finally
Ute.Free;
ResEmployee.Free;
end;
except
on E: exception do Memo1.Lines.Add('Errore '+E.Message);
end;
finally
ReqEmployee.Free;
end;
end;
3.5. Configurazioni
3.5.1. Importazione in progetti con la versione del Framework .NET precedente alla 4.0
Questa è la configurazione corretta da inserire in App.Config o in Web.Config
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="FatturaElettronicaServiceServiceSoapBinding"
closeTimeout="00:01:00"
openTimeout="00:01:00"
receiveTimeout="00:10:00"
sendTimeout="00:01:00"
allowCookies="false"
bypassProxyOnLocal="false"
hostNameComparisonMode="StrongWildcard"
maxBufferSize="999999"
maxBufferPoolSize="999999"
maxReceivedMessageSize="999999"
messageEncoding="Text"
textEncoding="utf-8"
transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="999999"
maxStringContentLength="999999"
maxArrayLength="999999"
maxBytesPerRead="999999"
maxNameTableCharCount="999999" />
<security mode="Transport">
<transport clientCredentialType="None"></transport>
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="https://cloud.mysond.it/service-ejb/FatturaElettronicaService"
binding="basicHttpBinding" bindingConfiguration="FatturaElettronicaServiceServiceSoapBinding"
contract="ServiceReference1.FatturaElettronicaService" name="FatturaElettronicaServicePort" />
</client>
</system.serviceModel>