Documente Academic
Documente Profesional
Documente Cultură
Gua de Usuario
WSCFDI EDICOM
WSCFDI EDICOM
Versin:
1.9
Estado:
REVISADO
Fecha:
04/12/2014
Autor:
Revisin, Aprobacin
Revisado por:
Fecha: 19/10/2011
Aprobado por:
Fecha: 19/10/2011
Historial de cambios
Versin
Fecha
Descripcin de la accin
Pginas
1.0
21/01/2011
Todas
1.1
18/02/2011
1.2
17/03/2011
5, 8, 15, 18
1.3
12/07/2011
9,10
1.4
10/08/2011
2, 6, 23-28, 30
1.5
19/10/2011
27-32
1.6
08/10/2013
18, 21, 24 y 26
1.7
11/02/2014
1.8
04/12/2014
6, 37-49, 52-69
1.9
10/02/2015
WSCFDI EDICOM | | 2
WSCFDI EDICOM
ndice de contenido
1.webservice CFDi de EDICOM................................................................................................................................................... 6
1.1.Introduccin ...............................................................................................................................................................................................6
URL de acceso al servicio..........................................................................................................................................................................6
Funciones Del Webservice CFDi de Edicom..............................................................................................................................................6
2.Funciones................................................................................................................................................................................ 8
2.1.Generacin del CFDi .................................................................................................................................................................................8
Llamada:...................................................................................................................................................................................................8
Parmetros:..............................................................................................................................................................................................8
Respuesta:.................................................................................................................................................................................................8
Ejemplos...................................................................................................................................................................................................9
2.2.Generacin del timbre del CFDi ..........................................................................................................................................................11
Llamada:.................................................................................................................................................................................................11
Parmetros:............................................................................................................................................................................................11
Respuesta:..............................................................................................................................................................................................11
Ejemplos.................................................................................................................................................................................................12
2.3.Cancelar CFDi ..........................................................................................................................................................................................13
Llamada:.................................................................................................................................................................................................13
Parmetros:............................................................................................................................................................................................14
Respuesta:..............................................................................................................................................................................................14
Ejemplos.................................................................................................................................................................................................14
Consideraciones importantes.................................................................................................................................................................16
2.4.Cambiar password de acceso al servicio de CFDi ...........................................................................................................................18
Llamada:.................................................................................................................................................................................................18
Parmetros:............................................................................................................................................................................................18
Respuesta:..............................................................................................................................................................................................18
Ejemplos.................................................................................................................................................................................................18
2.5.Generacin del CFDi en TEST ...............................................................................................................................................................20
Llamada:.................................................................................................................................................................................................20
Parmetros:............................................................................................................................................................................................20
Respuesta:..............................................................................................................................................................................................21
Ejemplos.................................................................................................................................................................................................21
2.6.Generacin del timbre del CFDi en TEST ..........................................................................................................................................23
Llamada:.................................................................................................................................................................................................23
Parmetros:............................................................................................................................................................................................23
Respuesta:..............................................................................................................................................................................................23
Ejemplos.................................................................................................................................................................................................24
2.7.Comprobacin del timbrado CFDi ......................................................................................................................................................25
Llamada:.................................................................................................................................................................................................26
Parmetros:............................................................................................................................................................................................26
Respuesta:..............................................................................................................................................................................................26
Ejemplos.................................................................................................................................................................................................26
2.8.Comprobacin del timbrado CFDi en test .........................................................................................................................................28
Llamada:.................................................................................................................................................................................................28
Parmetros:............................................................................................................................................................................................28
WSCFDI EDICOM | | 3
WSCFDI EDICOM
Respuesta:..............................................................................................................................................................................................28
Ejemplos.................................................................................................................................................................................................29
2.9.Cancelar CFDi Firmado ..........................................................................................................................................................................30
Llamada:.................................................................................................................................................................................................31
Parmetros:............................................................................................................................................................................................31
Respuesta:..............................................................................................................................................................................................31
Ejemplos.................................................................................................................................................................................................31
Consideraciones importantes.................................................................................................................................................................33
2.10.Obtencin del ACK(acuse) del timbrado .........................................................................................................................................35
Llamada:.................................................................................................................................................................................................35
Parmetros:............................................................................................................................................................................................35
Respuesta:..............................................................................................................................................................................................35
Ejemplos.................................................................................................................................................................................................35
2.11.Obtencin del timbre a partir del UUID. ........................................................................................................................................37
Llamada:.................................................................................................................................................................................................37
Parmetros:............................................................................................................................................................................................37
Respuesta:..............................................................................................................................................................................................37
Ejemplos.................................................................................................................................................................................................38
2.12.Generacin del CFDi de retenciones electrnicas ........................................................................................................................39
Llamada:.................................................................................................................................................................................................39
Parmetros:............................................................................................................................................................................................39
Respuesta:..............................................................................................................................................................................................40
Ejemplos.................................................................................................................................................................................................40
2.13.Generacin del timbre del CFDi de retenciones electrnicas ....................................................................................................43
Llamada:.................................................................................................................................................................................................43
Parmetros:............................................................................................................................................................................................43
Respuesta:..............................................................................................................................................................................................43
Ejemplos.................................................................................................................................................................................................44
2.14.Generacin del CFDi de retenciones electrnicas en TEST ........................................................................................................45
Llamada:.................................................................................................................................................................................................46
Parmetros:............................................................................................................................................................................................46
Respuesta:..............................................................................................................................................................................................46
Ejemplos.................................................................................................................................................................................................46
2.15.Generacin del timbre del CFDi de retenciones electrnicas en TEST ....................................................................................48
Llamada:.................................................................................................................................................................................................49
Parmetros:............................................................................................................................................................................................49
Respuesta:..............................................................................................................................................................................................49
Ejemplos.................................................................................................................................................................................................49
2.16.Cancelar comprobantes de retenciones electrnicas ..................................................................................................................51
Llamada:.................................................................................................................................................................................................51
Parmetros:............................................................................................................................................................................................51
Respuesta:..............................................................................................................................................................................................52
Ejemplos.................................................................................................................................................................................................52
Consideraciones importantes.................................................................................................................................................................54
2.17.Cancelar comprobantes de retenciones electrnicas Firmado .................................................................................................56
Llamada:.................................................................................................................................................................................................56
WSCFDI EDICOM | | 4
WSCFDI EDICOM
Parmetros:............................................................................................................................................................................................56
Respuesta:..............................................................................................................................................................................................56
Ejemplos.................................................................................................................................................................................................57
Consideraciones importantes.................................................................................................................................................................59
4.Anexo: WSDL......................................................................................................................................................................... 63
4.1.WSDL WEBSERVICE CFDi .......................................................................................................................................................................63
WSCFDI EDICOM | | 5
WSCFDI EDICOM
Este documento ofrece la WSDL del servicio y la informacin necesaria para que para interactuar con el servicio
CFDi y desarrollar aplicaciones compatibles con el servicio CFDi.
La elaboracin de los webservices que aqu se presentan est basada en las siguiente normas oficiales :
[1] Resolucin Miscelnea Fiscal para 2010, publicada en el Diario Oficial de la Federacin (DOF) el 11
Descripcin
getCfdi
Generacin de CFDI. Permite realizar el timbrado del comprobante firmado por el 1.0
cliente y devuelve el comprobante timbrado.
getTimbreCfdi
1.0
cancelaCFDi
1.0
changePassword
1.0
getCfdiTest
1.0
getTimbreCfdiTest
1.0
getUUID
1.0
ver.
WSCFDI EDICOM
comprobante ha sido timbrado en nuestro sistema.
getUUIDTest
1.0
cancelaCfdiSigned
1.0
getCfdiAck
Obtencin de Ack de timbrado. Permite obtener el acuse del timbrado del SAT
1.0
getCfdiFromUUID
1.0
getCfdiRetenciones
1.0
1.0
1.0
1.0
1.0
WSCFDI EDICOM
2. FUNCIONES
2.1. GENERACIN DEL CFDI
getCfdi
Permite realizar el timbrado del comprobante firmado por el cliente y devuelve el comprobante timbrado. Para
poder implementar la llamada, el usuario debe autentificarse como usuario del servicio de CFDi y especificar
cuales son los datos del comprobante para poder generar as la firma digital.
En cada llamada se puede generar un CFDI.
LLAMADA:
public byte[] getCfdi(String user, String password, byte[] file);
PARMETROS:
file: Fichero con los datos del comprobante firmados por el usuario. Se trata del XML con la informacin
del comprobante, segn lo especificado en el Anexo 20 de la Resolucin Miscelnea Fiscal de 2010 [1].
Puede enviarse tambin comprimido en en formato ZIP. Dentro del mensaje SOAP, se enviarn los datos
del fichero codificados en Base64 dentro del sobre de la llamada SOAP.
RESPUESTA:
El comprobante que se enviar al webservice es un XML que contiene la informacin de la factura, e integra el
certificado del contribuyente expedido por el SAT, empleado en la construccin del Sello Digital del
Comprobante , segn lo especificado en el Anexo 20 de la Resolucin Miscelnea Fiscal de 2010 [1] .
Edicom, como PSECFDI recibe a travs del webservice el Comprobante del contribuyente para realizar todas las
validaciones exigidas por el SAT y someterlo posteriormente al proceso de certificacin final.
Validaciones que contiene el servicio:
Verifica que el perodo de tiempo entre la fecha de envo del documento y la de recepcin del
Verifica igualmente que el documento no haya sido certificado previamente, que el Certificado de
Sello Digital (CSD) del contribuyente est vigente en la fecha de generacin del comprobante, y que
efectivamente corresponda dicho CSD al contribuyente que emite el documento.
Finalmente constata que la estructura del documento cumple con las especificaciones tcnicas
Si el CFDI cumple con las validaciones especificadas anteriormente, se dar respuesta al contribuyente
incorporando un complemento sobre el documento segn lo especificado en el Anexo 20 de la Resolucin
Miscelnea Fiscal de 2010 [1]. Este complemento incluye el nmero de folio asignado por el SAT, fecha y hora de
certificacin y sello digital del CFDI. Se adhiere igualmente como parte del complemento el nmero de serie del
certificado digital del SAT con el que se realiz del certificacin del CFDI, y el sello del SAT.
Respuesta satisfactoria: En caso de que se haya realizado la firma digital, el servicio devolver un
documento comprimido en formato ZIP con el CFDI con todos los datos generados.
WSCFDI EDICOM | 2.Funciones | 8
WSCFDI EDICOM
Respuesta con errores: En caso de que haya algn error en el proceso de firma digital del CFDI,
devolver una excepcin que contendr un cdigo de error y un mensaje de texto con el error
producido. Ejemplos de este tipo de excepciones sera por ejemplo que el usuario no se haya
autentificado correctamente en el sistema, o que no se haya enviado el fichero ZIP con el CFDI, o que el
CFDI enviado no es correcto sintcticamente segn el esquema del SAT.
EJEMPLOS
Cdigo del cliente:
public byte[] getCfdi(String user, String pass, byte[] file) {
try {
cfdiService.getCfdi(user, pass, file);
} catch (CFDiException CFDIe) {
CFDIe.printStackTrace();
System.out.println("CFDiExcepcion: " + CFDIe.getText());
} catch (RemoteException Re) {
Re.printStackTrace();
System.out.println("RemoteExcepcion: " + Re.toString());
} catch (Exception e) {
e.printStackTrace();
System.out.println("Exception: " + e.toString());
}
}
Peticin SOAP:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:cfdi="http://cfdi.service.ediwinws.edicom.com">
<soapenv:Header/>
<soapenv:Body>
<cfdi:getCfdi>
<cfdi:user>xxxxxx</cfdi:user>
<cfdi:password>xxxxxx</cfdi:password>
<cfdi:file>UEsDBBQAAAAIAOJkmD0CMccqxQcAAFUSAAAfAAAAc2luX3RpbWJyYXJfX1hN+
+NAgoBzSJWgV4cbALEKkAC6Q/8Kf6O+2MupJ4ZzWI7/OoYRaCSKrOyTh5OVeZvfwxFjp2jpk2r8m1CTok
y4Ti037j1s2nVxDhFECTuyJIRJFHhffVN/7vzp7RsO68MogkmV2UUem8T2VEmmJnWFeMVflqhZCZYEDVd
[...]
C2Qy59xh/9sq4/ZB2RfEvjSuv3+L1BLAQIUCxQAAAAIAOJkmD0CMccqxQcAAFUSAAAfAAAAAAAAAAEAIA
AAAAAAAABzaW5fdGltYnJhcl9fWE1MSW1wXzQ3MzIwOS54bWx+UEsFBgAAAAABAAEATQAAAAIIAAAAAA=
=</cfdi:file>
</cfdi:getCfdi>
</soapenv:Body>
</soapenv:Envelope>
Nota: Los datos que aparecen en este ejemplo no son reales. El cdigo del fichero en
base64 ha sido resumido [...]
Respuesta SOAP:
El siguiente ejemplo es una respuesta de un envo de CFDI satisfactorio.
<?xml version="1.0" encoding="UTF-8"?>
WSCFDI EDICOM
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<getCfdiResponse xmlns="http://cfdi.service.ediwinws.edicom.com">
<getCfdiReturn>UEsDBBQACAAIAOxtfj0AAAAAAAAAAAAAAAATAAAAU0lHTl9GaXJtYV9PS18xLlhNTN
1Y2ZKryBF9d4T/gdCDXxQtsbS29u2ZYCkQEoUEArS8ONgESCxqQID4A3+Kf8GPnh9zgdR91fdq7ngc4Qj
bHdGNlJWVdfJk5dJ8+bmKQqxw0yxI4tcO0cM7mBvbiRPE3mtH1/incefnn/74hy/23gle2CQ
[...]
mnvqtOHAGOdsvaUcv+wpHGUn1eygepprtwr5WvTT581Lu7+/1VdBvpURr8E1BLBwiieLVx4QkAAJ4UAAB
QSwECFAAUAAgACADsbX49oni1ceEJAACeFAAAEwAAAAAAAAAAAAAAAAAAAAAAU0lHTl9GaXJtYV9PS18x
LlhNTFBLBQYAAAAAAQABAEEAAAAiCgAAAAA=</getCfdiReturn>
</getCfdiResponse>
</soapenv:Body>
</soapenv:Envelope>
Nota: Los datos que aparecen en este ejemplo no son reales. El cdigo del fichero en
base64 ha sido resumido [...]
El siguiente ejemplo es una respuesta de error.
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<soapenv:Fault>
<faultcode>soapenv:Server.userException</faultcode>
<faultstring>com.edicom.ediwinws.service.cfdi.CFDiException: El
documento <SE3> no est codificado en UTF-8</faultstring>
<detail>
<ns1:fault xmlns:ns1="http://cfdi.service.ediwinws.edicom.com">
<ns1:cod>301</ns1:cod>
<ns1:text>El documento <referencia> no est codificado en UTF8</ns1:text>
</ns1:fault>
<ns2:hostname
xmlns:ns2="http://xml.apache.org/axis/">cfdiws.sedeb2b.com</ns2:hostname>
</detail>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
Nota: En este ejemplo concreto se presenta un error "301" indicando que el documento no
est codificado en UTF-8.
Para ver una lista completa de los posibles cdigos de error y respuestas asociadas consultar el punto Lista de
Cdigos de Error.
WSCFDI EDICOM
LLAMADA:
public byte[] getTimbreCfdi(String user, String password, byte[] file);
PARMETROS:
file: Fichero con los datos del comprobante firmados por el usuario. Se trata del XML con la informacin
del comprobante, segn lo especificado en el Anexo 20 de la Resolucin Miscelnea Fiscal de 2010 [1].
Puede enviarse tambin comprimido en en formato ZIP. Dentro del mensaje SOAP, se enviarn los datos
del fichero codificados en Base64 dentro del sobre de la llamada SOAP.
RESPUESTA:
El comprobante que se enviar al webservice es un XML que contiene la informacin de la factura, e integra el
certificado del contribuyente expedido por el SAT, empleado en la construccin del Sello Digital del
Comprobante segn lo especificado en el Anexo 20 de la Resolucin Miscelnea Fiscal de 2010 [1] .
Edicom, como PSECFDI recibe a travs del webservice el Comprobante del contribuyente para realizar todas las
validaciones exigidas por el SAT y someterlo posteriormente al proceso de certificacin final.
Validaciones que contiene el servicio:
Verifica que el perodo de tiempo entre la fecha de envo del documento y la de recepcin del
Verifica igualmente que el documento no haya sido certificado previamente, que el Certificado de
Sello Digital (CSD) del contribuyente est vigente en la fecha de generacin del comprobante, y que
efectivamente corresponda dicho CSD al contribuyente que emite el documento.
Finalmente constata que la estructura del documento cumple con las especificaciones tcnicas
Si el CFDI cumple con las validaciones especificadas anteriormente, se dar respuesta al contribuyente con el
timbre de la firma digital segn lo especificado en el Anexo 20 de la Resolucin Miscelnea Fiscal de 2010 [1].
Este timbre incluye el nmero de folio asignado por el SAT, fecha y hora de certificacin y sello digital del CFDI.
Se adhiere igualmente como parte del complemento el nmero de serie del certificado digital del SAT con el que
se realiz del certificacin del CFDI, y el sello del SAT.
Respuesta satisfactoria: En caso de que se haya realizado la firma digital, el servicio devolver un
documento comprimido en formato ZIP con el timbre del CFDI firmado con todos los datos generados.
Respuesta con errores: En caso de que haya algn error en el proceso de firma digital del CFDI,
devolver una excepcin que contendr un cdigo de error y un mensaje de texto con el error
producido. Ejemplos de este tipo de excepciones sera por ejemplo que el usuario no se haya
WSCFDI EDICOM | 2.Funciones | 11
WSCFDI EDICOM
autentificado correctamente en el sistema, o que no se haya enviado el fichero ZIP con el CFDI, o que el
CFDI enviado no es correcto sintcticamente segn el esquema del SAT.
EJEMPLOS
Cdigo del cliente:
public byte[] getTimbreCfdi(String user, String pass, byte[] file) {
try {
cfdiService.getTimbreCfdi(user, pass, file);
} catch (CFDiException CFDIe) {
CFDIe.printStackTrace();
System.out.println("CFDiExcepcion: " + CFDIe.getText());
} catch (RemoteException Re) {
Re.printStackTrace();
System.out.println("RemoteExcepcion: " + Re.toString());
} catch (Exception e) {
e.printStackTrace();
System.out.println("Exception: " + e.toString());
}
}
Peticin SOAP:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:cfdi="http://cfdi.service.ediwinws.edicom.com">
<soapenv:Header/>
<soapenv:Body>
<cfdi:getTimbreCfdi>
<cfdi:user>xxxxxx</cfdi:user>
<cfdi:password>xxxxxx</cfdi:password>
<cfdi:file>UEsDBBQAAAAIAOJkmD0CMccqxQcAAFUSAAAfAAAAc2luX3RpbWJyYXJfX1hN+
+NAgoBzSJWgV4cbALEKkAC6Q/8Kf6O+2MupJ4ZzWI7/OoYRaCSKrOyTh5OVeZvfwxFjp2jpk2r8m1CTok
y4Ti037j1s2nVxDhFECTuyJIRJFHhffVN/7vzp7RsO68MogkmV2UUem8T2VEmmJnWFeMVflqhZCZYEDVd
[...]
C2Qy59xh/9sq4/ZB2RfEvjSuv3+L1BLAQIUCxQAAAAIAOJkmD0CMccqxQcAAFUSAAAfAAAAAAAAAAEAIA
AAAAAAAABzaW5fdGltYnJhcl9fWE1MSW1wXzQ3MzIwOS54bWx+UEsFBgAAAAABAAEATQAAAAIIAAAAAA=
=</cfdi:file>
</cfdi:getTimbreCfdi>
</soapenv:Body>
</soapenv:Envelope>
Nota: Los datos que aparecen en este ejemplo no son reales. El cdigo del fichero en
base64 ha sido resumido [...]
Respuesta SOAP:
El siguiente ejemplo es una respuesta de generacin de timbre satisfactoria.
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
WSCFDI EDICOM
<soapenv:Body>
<getTimbreCfdiResponse xmlns="http://cfdi.service.ediwinws.edicom.com">
<getTimbreCfdiReturn>UEsDBBQACAAIAOxtfj0AAAAAAAAAAAAAAAATAAAAU0lHTl9GaXJtYV9PS18x
LlhNTN1Y2ZKryBF9d4T/gdCDXxQtsbS29u2ZYCkQEoUEArS8ONgESCxqQID4A3+Kf8GPnh9zgdR91fdq7
ngc4QjbHdGNlJWVdfJk5dJ8+bmKQqxw0yxI4tcO0cM7mBvbiRPE3mtH1/incefnn/74hy/23gle2CQ
[...]
mnvqtOHAGOdsvaUcv+wpHGUn1eygepprtwr5WvTT581Lu7+/1VdBvpURr8E1BLBwiieLVx4QkAAJ4UAAB
QSwECFAAUAAgACADsbX49oni1ceEJAACeFAAAEwAAAAAAAAAAAAAAAAAAAAAAU0lHTl9GaXJtYV9PS18x
LlhNTFBLBQYAAAAAAQABAEEAAAAiCgAAAAA=</getTimbreCfdiReturn>
</getTimbreCfdiResponse>
</soapenv:Body>
</soapenv:Envelope>
Para ver una lista completa de los posibles cdigos de error y respuestas asociadas consultar el punto Lista de
Cdigos de Error.
LLAMADA:
WSCFDI EDICOM | 2.Funciones | 13
WSCFDI EDICOM
public CancelaResponse cancelaCFDi(String user, String password, String rfc,
String[] uuid, byte[] pfx, String pfxPassword);
PARMETROS:
uuid: Lista de uuids que identifican los CFDI que quiere cancelar el usuario.
pfx: Certificado del cliente que quiere cancelar los CFDI. Dentro del mensaje SOAP, se enviarn los datos
del fichero pfx codificados en Base64 dentro del sobre de la llamada SOAP.
PxfPassword: Password del certificado para poder realizar la firma de la peticin con el certificado del
usuario.
RESPUESTA:
Respuesta satisfactoria: En caso de que se haya realizado la cancelacin Satisfactoria de los
ack: Confirmacin que devuelve el servicio del SAT como que la peticin se ha realizado. Est
codificado en base 64 y contiene el acuse de recibo expedido por el SAT para la cancelacin.
Una vez decodificado, este acuse contiene el xml con la informacin de la peticin de
cancelacin solicitada al SAT por parte de EDICOM, incluyendo los cdigos de ejecucin del
servicio por parte del SAT especificados en el Anexo 20.
Respuesta con errores: En caso de que haya algn error en el proceso de cancelacin de los CFDI,
devolver una excepcin que contendr un cdigo de error y un mensaje de texto con el error
producido. Ejemplos de este tipo de excepciones sera por ejemplo que el usuario no se haya
autentificado correctamente en el sistema, o que no se haya enviado el certificado del usuario.
Para ver una lista completa de los posibles cdigos de error y respuestas asociadas consultar el punto Lista de
Cdigos de Error.
EJEMPLOS
Cdigo del cliente:
public CancelaResponse cancelaCFDi(String user, String pass, String rfc,
String[] uuid, byte[] pfx, Strind pfxPassword) {
CancelaResponse cancelaResponse = null;
try {
cancelaResponse = cfdiService.cancelaCFDi(user, pass, rfc, uuid, pfx,
pfxPassword);
} catch (CFDiException CFDIe) {
CFDIe.printStackTrace();
System.out.println("CFDiExcepcion: " + CFDIe.getText());
} catch (RemoteException Re) {
Re.printStackTrace();
System.out.println("RemoteExcepcion: " + Re.toString());
} catch (Exception e) {
e.printStackTrace();
WSCFDI EDICOM
System.out.println("Exception: " + e.toString());
}return cancelaResponse;
}
Peticin SOAP:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:cfdi="http://cfdi.service.ediwinws.edicom.com">
<soapenv:Header/>
<soapenv:Body>
<cfdi:cancelaCFDi>
<cfdi:user>xxxxxx</cfdi:user>
<cfdi:password>xxxxxx</cfdi:password>
<cfdi:rfc>RFC</cfdi:rfc>
<cfdi:uuid>UUID1</cfdi:uuid>
<cfdi:pfx>MIIJuQIBAzCCCX8GCSqGSIb3DQEHAaCCCXAEgglsMIIJaDCCBB8GCSqGSIb3DQEHBqCCBBA
wggQMAgEAMIIEBQYJKoZIhvcNAQcBMBwGCiqGSIb3DQEMAQYwDgQIkI0BwQTfWEQCAggAgIID2DzPnHdO
A4XWGeanHoCuRitvCJJecEBSkqvg8ohliY7IiVp8qF3agvOqt32kbEDXHfrLpVVhlPnjrZo4
[...]
Hzl11kfETcJiuMUNa5hOx5CiB2WqAg/tV9MDOdUZEkN4E+N9xxSxPAkSw75RvvVfRPW4JFXbmfs7c230a
PodMQP58PfaJilI/Nm8cvAQXIEwRugMSUwIwYJKoZIhvcNAQkVMRYEFBlCuYgPj26y+M2HK9s6Tpe2Jmg
CMDEwITAJBgUrDgMCGgUABBSz8OKBcbpiR69Tw0UJ1d1D2xW0EQQIar9uSxM7uToCAggA</cfdi:pfx>
<cfdi:pfxPassword>qwertyuio</cfdi:pfxPassword>
</cfdi:cancelaCFDi>
</soapenv:Body>
</soapenv:Envelope>
Nota: Los datos que aparecen en este ejemplo no son reales. El cdigo del fichero en
base64 ha sido resumido [...]
Respuesta SOAP:
Ejemplo de una respuesta de cancelacin de CFDI satisfactoria.
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<cancelaCFDiResponse xmlns="http://cfdi.service.ediwinws.edicom.com">
<cancelaCFDiReturn>
<ack>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48czpFbnZlbG9wZSB4bWxuczpz
PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VudmVsb3BlLyI+PHM6Qm9keT48Q2FuY2VsY
UNGRFJlc3BvbnNlIHhtbG5zPSJodHRwOi8vdGVtcHVyaS5vcmcvIj48Q2FuY2VsYUNGRF
[...]
+PC9hOkFjdXNlRm9saW9zPjwvYTpGb2xpb3M+PGE6U2VsbG9TQVQgaTpuaWw9InRydWUiLz48YTpyZmNF
bWlzb3I+U0FULTI4MDkxMC0wMDE8L2E6cmZjRW1pc29yPjwvQ2FuY2VsYUNGRFJlc3VsdD48L0NhbmNlb
GFDRkRSZXNwb25zZT48L3M6Qm9keT48L3M6RW52ZWxvcGU+</ack>
<text>1c550dd7-2209-4c45-acdf
-b86b6cf3723e~PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48czpFbnZlbG9wZSB
4bWxuczpzPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VudmVsb3BlLyI+PHM6Qm9keT4Q
[...]
WSCFDI EDICOM
hOkFjdXNlRm9saW9zPjwvYTpGb2xpb3M+PGE6U2VsbG9TQVQgaTpuaWw9InRydWUiLz48YTpyZmNFbWlz
b3I+U0FULTI4MDkxMC0wMDE8L2E6cmZjRW1pc29yPjwvQ2FuY2VsYUNGRFJlc3VsdD48L0NhbmNlbGFDR
kRSZXNwb25zZT48L3M6Qm9keT48L3M6RW52ZWxvcGU+</text>
<uuids>
<uuids>1c550dd7-2209-4c45-acdf-b86b6cf3723e</uuids>
</uuids>
</cancelaCFDiReturn>
</cancelaCFDiResponse>
</soapenv:Body>
</soapenv:Envelope>
Para ver una lista completa de los posibles cdigos de error y respuestas asociadas consultar el punto Lista de
Cdigos de Error.
CONSIDERACIONES IMPORTANTES
Timeout de la llamada de esta funcin
Hay que tener en cuenta que el proceso de timbrado depende directamente del proceso de cancelacin del SAT.
Por tanto, el tiempo de respuesta de esta funcin no depende del servicio de cancelacin de EDICOM, sino que
depende directamente del tiempo de proceso de los servidores del SAT. Este proceso no es tan inmediato como
e tiempo de generacin del timbrado, por lo que es necesario que se utilice un timeout considerable para estas
peticiones de cancelacin.
Por defecto, los clientes de webservice suelen tener un timeout de 30 segundos, que puede llegar a ser
insuficiente para la correcta ejecucin de esta funcin. Se recomienda utilizar para esta llamada un timeout no
inferior a 2 minutos para evitar que venza la llamada por timeout y se pierda la respuesta de la peticin del
servicio.
WSCFDI EDICOM
Gestin de errores.
En la ejecucin de esta llamada hay que distinguir correctamente los cdigos de error que genera el servicio de
cancelacin de EDICOM y los cdigos de validacin que devuelve el SAT en el acuse de recibo.
La respuesta errnea del servicio de EDICOM, como se puede ver en el ejemplo anterior, devuelve un objeto
soapenv:Fault en la respuesta del servicio. Este objeto contiene un objeto ns1:cod con el cdigo de error que
proporciona EDICOM para la ejecucin del servicio.
La respuesta que devuelve el SAT est contenida dentro de la respuesta correcta del servicio de EDICOM. Ms
concretamente en el objeto ack dentro del cancelaCFDiReturn. Dentro de este acuse de recibo se encuentran
los cdigos de ejecucin de la cancelacin del comprobante por parte del SAT. Estos cdigos de ejecucin del
SAT estn contemplados en el Anexo 20.
WSCFDI EDICOM
<text>1c550dd7-2209-4c45-acdf
-b86b6cf3723e~PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48czpFbnZlbG9wZSB
4bWxuczpzPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VudmVsb3BlLyI+PHM6Qm9keT4Q
[...]
hOkFjdXNlRm9saW9zPjwvYTpGb2xpb3M+PGE6U2VsbG9TQVQgaTpuaWw9InRydWUiLz48YTpyZmNFbWlz
b3I+U0FULTI4MDkxMC0wMDE8L2E6cmZjRW1pc29yPjwvQ2FuY2VsYUNGRFJlc3VsdD48L0NhbmNlbGFDR
kRSZXNwb25zZT48L3M6Qm9keT48L3M6RW52ZWxvcGU+</text>
<uuids>
<uuids>1c550dd7-2209-4c45-acdf-b86b6cf3723e</uuids>
</uuids>
</cancelaCFDiReturn>
</cancelaCFDiResponse>
</soapenv:Body>
</soapenv:Envelope>
Ambos cdigos son totalmente independientes, y no deben confundirse ya que corresponden a cdigos de
EDICOM y del SAT respectivamente.
LLAMADA:
public boolean changePassword(String user, String password, String newPassword)
PARMETROS:
newPassword: Nueva contrasea que quiere utilizar el usuario para realizar las conexiones al servicio.
RESPUESTA:
Respuesta de error: En caso de que haya algn error en el proceso de cambio de error, el servicio
devolver una Excepcin.
Para ver una lista completa de los posibles cdigos de error y respuestas asociadas consultar el punto Lista de
Cdigos de Error.
EJEMPLOS
WSCFDI EDICOM
Peticin SOAP:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:cfdi="http://cfdi.service.ediwinws.edicom.com">
<soapenv:Header/>
<soapenv:Body>
<cfdi:changePassword>
<cfdi:user>xxxxxx</cfdi:user>
<cfdi:password>xxxxxx</cfdi:password>
<cfdi:newPassword>xxxxxx</cfdi:newPassword>
</cfdi:changePassword>
</soapenv:Body>
</soapenv:Envelope>
Respuesta SOAP:
El siguiente ejemplo es una respuesta de cambio de password satisfactorio
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<changePasswordResponse xmlns="http://cfdi.service.ediwinws.edicom.com">
<changePasswordReturn>true</changePasswordReturn>
</changePasswordResponse>
</soapenv:Body>
</soapenv:Envelope>
WSCFDI EDICOM
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<soapenv:Fault>
<faultcode>soapenv:Server.userException</faultcode>
<faultstring>com.edicom.ediwinws.service.cfdi.CFDiException: La
contrasea no puede ser la misma que la que haba anteriormente.</faultstring>
<detail>
<ns1:fault xmlns:ns1="http://cfdi.service.ediwinws.edicom.com">
<ns1:cod>200</ns1:cod>
<ns1:text>La contrasea no puede ser la misma que la que haba
anteriormente.</ns1:text>
</ns1:fault>
<ns2:hostname
xmlns:ns2="http://xml.apache.org/axis/">cfdiws.sedeb2b.com</ns2:hostname>
</detail>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
Para ver una lista completa de los posibles cdigos de error y respuestas asociadas consultar el punto Lista de
Cdigos de Error.
No se validan las 72 horas de tiempo entre la fecha del comprobante y la generacin del timbre.
No se tiene en cuenta el documento enviado, por lo que al enviar varias veces el mismo documento se
generan distintos timbres de TEST.
Estas validaciones omitidas permiten que se puedan hacer pruebas de funcionamiento con un juego reducido
de comprobantes firmados sin necesidad de ir generando continuamente comprobantes timbrados.
LLAMADA:
public byte[] getCfdiTest(String user, String password, byte[] file);
PARMETROS:
user: Usuario que va realizar la conexin
WSCFDI EDICOM | 2.Funciones | 20
WSCFDI EDICOM
password: Contrasea del usuario que va realizar la conexin
file: Fichero con los datos del comprobante firmados por el usuario. Se trata del XML con la
RESPUESTA:
Si el CFDI cumple con las validaciones especificadas anteriormente, se dar respuesta al contribuyente
incorporando un complemento sobre el documento. Este complemento incluye el nmero de folio asignado por
el SAT, fecha y hora de certificacin y sello digital del CFDI. Se adhiere igualmente como parte del complemento
el nmero de serie del certificado digital del SAT con el que se realiz del certificacin del CFDI, y el sello del SAT.
Respuesta satisfactoria: En caso de que se haya realizado la firma digital, el servicio devolver un
documento comprimido en formato ZIP con el CFDI firmado con todos los datos generados.
Respuesta de error: En caso de que haya algn error en el proceso de firma digital del CFDI, devolver
una excepcin que contendr un cdigo de error y un mensaje de texto con el error producido.
Ejemplos de este tipo de excepciones sera por ejemplo que el usuario no se haya autentificado
correctamente en el sistema, o que no se haya enviado el fichero ZIP con el CFDI, o que el CFDI enviado
no es correcto sintcticamente segn el esquema del SAT.
EJEMPLOS
Cdigo del cliente:
public byte[] getCfdiTest(String user, String pass, byte[] file) {
try {
cfdiService.getCfdiTest(user, pass, file);
} catch (CFDiException CFDIe) {
CFDIe.printStackTrace();
System.out.println("CFDiExcepcion: " + CFDIe.getText());
} catch (RemoteException Re) {
Re.printStackTrace();
System.out.println("RemoteExcepcion: " + Re.toString());
} catch (Exception e) {
e.printStackTrace();
System.out.println("Exception: " + e.toString());
}
}
Peticin SOAP:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:cfdi="http://cfdi.service.ediwinws.edicom.com">
<soapenv:Header/>
<soapenv:Body>
<cfdi:getCfdiTest>
<cfdi:user>xxxxxx</cfdi:user>
<cfdi:password>xxxxxx</cfdi:password>
<cfdi:file>UEsDBBQAAAAIAOJkmD0CMccqxQcAAFUSAAAfAAAAc2luX3RpbWJyYXJfX1hN+
+NAgoBzSJWgV4cbALEKkAC6Q/8Kf6O+2MupJ4ZzWI7/OoYRaCSKrOyTh5OVeZvfwxFjp2jpk2r8m1CTok
y4Ti037j1s2nVxDhFECTuyJIRJFHhffVN/7vzp7RsO68MogkmV2UUem8T2VEmmJnWFeMVflqhZCZYEDVd
WSCFDI EDICOM
[...]
LPx2hwQfDj8YH5NQX5OlHyLeJYKNmrPNa1C2Qy59xh/9sq4/ZB2RfEvjSuv3+L1BLAQIUCxQAAAAIAOJk
mD0CMccqxQcAAFUSAAAfAAAAAAAAAAEAIAAAAAAAAABzaW5fdGltYnJhcl9fWE1MSW1wXzQ3MzIwOS54b
Wx+UEsFBgAAAAABAAEATQAAAAIIAAAAAA==</cfdi:file>
</cfdi:getCfdiTest>
</soapenv:Body>
</soapenv:Envelope>
Nota: Los datos que aparecen en este ejemplo no son reales. El cdigo del fichero en
base64 ha sido resumido [...]
Respuesta SOAP:
El siguiente ejemplo es una respuesta de generacin de CFDi en test satisfactoria.
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<getCfdiTestResponse xmlns="http://cfdi.service.ediwinws.edicom.com">
<getCfdiTestReturn>UEsDBBQACAAIANV9ND4AAAAAAAAAAAAAAAAjAAAAU0lHTl9zaW5fdGltYnJhcl
9fWE1MSW1wXzQ3MzIwOS54bWztWNly67gRfU9V/oGlp6RcFhctllzjmQJJUCTNRVy1vKS4ifsikhIp/cF
8Sr5jfiygZN/re8eZTB5TuayiYaEbjdONA3SDP/3S5xl2DuomLouXETkmRlhQeKUfF+HLyDK
[...]
AAAAAAAAAAAAAAAAAAAAAU0lHTl9zaW5fdGltYnJhcl9fWE1MSW1wXzQ3MzIwOS54bWxQSwUGAAAAAAEA
AQBRAAAAPgkAAAAA</getCfdiTestReturn>
</getCfdiTestResponse>
</soapenv:Body>
</soapenv:Envelope>
WSCFDI EDICOM
</soapenv:Envelope>
Para ver una lista completa de los posibles cdigos de error y respuestas asociadas consultar el punto Lista de
Cdigos de Error.
No se validan las 72 horas de tiempo entre la fecha del comprobante y la generacin del timbre.
No se tiene en cuenta el documento enviado, por lo que al enviar varias veces el mismo documento se
generan distintos timbres de TEST.
Estas validaciones omitidas permiten que se puedan hacer pruebas de funcionamiento con un juego reducido
de comprobantes firmados sin necesidad de ir generando continuamente comprobantes timbrados.
LLAMADA:
public byte[] getTimbreCfdiTest(String user, String password, byte[] file);
PARMETROS:
file: Fichero con los datos del comprobante firmados por el usuario. Se trata del XML con la informacin
del comprobante, segn lo especificado en el Anexo 20 de la Resolucin Miscelnea Fiscal de 2010 [1].
Puede enviarse tambin comprimido en en formato ZIP. Dentro del mensaje SOAP, se enviarn los datos
del fichero codificados en Base64 dentro del sobre de la llamada SOAP.
RESPUESTA:
Si el CFDI cumple con las validaciones especificadas anteriormente, se dar respuesta al contribuyente con el
timbre de la firma digital. Este timbre incluye el nmero de folio asignado por el SAT, fecha y hora de
certificacin y sello digital del CFDI. Se adhiere igualmente como parte del complemento el nmero de serie del
certificado digital del SAT con el que se realiz del certificacin del CFDI, y el sello del SAT.
Respuesta satisfactoria: En caso de que se haya realizado la firma digital, el servicio devolver un
documento comprimido en formato ZIP con el timbre del CFDI con todos los datos generados.
WSCFDI EDICOM
Respuesta con error: En caso de que haya algn error en el proceso de firma digital del CFDI, devolver
una excepcin que contendr un cdigo de error y un mensaje de texto con el error producido.
Ejemplos de este tipo de excepciones sera por ejemplo que el usuario no se haya autentificado
correctamente en el sistema, o que no se haya enviado el fichero ZIP con el CFDI, o que el CFDI enviado
no es correcto sintcticamente segn el esquema del SAT.
EJEMPLOS
Cdigo del cliente:
public byte[] getTimbreCfdiTest(String user, String pass, byte[] file) {
try {
cfdiService.getTimbreCfdiTest(user, pass, file);
} catch (CFDiException CFDIe) {
CFDIe.printStackTrace();
System.out.println("CFDiExcepcion: " + CFDIe.getText());
} catch (RemoteException Re) {
Re.printStackTrace();
System.out.println("RemoteExcepcion: " + Re.toString());
} catch (Exception e) {
e.printStackTrace();
System.out.println("Exception: " + e.toString());
}
}
Peticin SOAP:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:cfdi="http://cfdi.service.ediwinws.edicom.com">
<soapenv:Header/>
<soapenv:Body>
<cfdi:getTimbreCfdiTest>
<cfdi:user>xxxxxx</cfdi:user>
<cfdi:password>xxxxxx</cfdi:password>
<cfdi:file>UEsDBBQAAAAIAOJkmD0CMccqxQcAAFUSAAAfAAAAc2luX3RpbWJyYXJfX1hNTEltcF80Nz
MyMDkueG1sfu1W2ZKjyhF991cQerKjY8SipVsdt+NAgoBzSJWgV4cbALEKkAC6Q/8Kf6O+2MupJ4ZzWI7
/OoYRaCSKrOyTh5OVeZvfwxFjp2jpk2r8m1CTokqxQcAAFUSAAqxQcAAFUSAAqxQcAAFUSAA
[...]
JkmD0CMccqxQcAAFUSAAAfAAAAAAAAAAEAIAAAAAAAAABzaW5fdGltYnJhcl9fWE1MSW1wXzQ3MzIwOS5
4bWx+UEsFBgAAAAABAAEATQAAAAIIAAAAAA==
</cfdi:file>
</cfdi:getTimbreCfdiTest>
</soapenv:Body>
</soapenv:Envelope>
Nota: Los datos que aparecen en este ejemplo no son reales. El cdigo del fichero en
base64 ha sido resumido [...]
Respuesta SOAP:
El siguiente ejemplo es una respuesta de generacin de timbre de CFDI en test satisfactoria.
WSCFDI EDICOM
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<getTimbreCfdiTestResponse xmlns="http://cfdi.service.ediwinws.edicom.com">
<getTimbreCfdiTestReturn>UEsDBBQACAAIANV9ND4AAAAAAAAAAAAAAAAjAAAAU0lHTl9zaW5fdGlt
YnJhcl9fWE1MSW1wXzQ3MzIwOS54bWztWNly67gRfU9V/oGlp6RcFhctllzjmQJJUCTNRVy1vKS4ifsik
hIp/cF8Sr5jfiygZN/re8eZTB5TuayiYaEbjdONA3SDP/3S5xl2DuomLouXETkmRlhQeKUfF
[...]
AAAAAAAAAAAAAAAAAAAAAU0lHTl9zaW5fdGltYnJhcl9fWE1MSW1wXzQ3MzIwOS54bWxQSwUGAAAAAAEA
AQBRAAAAPgkAAAAA</getTimbreCfdiTestReturn>
</getTimbreCfdiTestResponse>
</soapenv:Body>
</soapenv:Envelope>
Para ver una lista completa de los posibles cdigos de error y respuestas asociadas consultar el punto Lista de
Cdigos de Error.
WSCFDI EDICOM
Esta funcin est destinada a verificar que el timbre se ha generado correctamente, por lo que slo busca el
comprobante timbrado dentro de las 72 horas siguientes a la generacin del timbre. Pasado este tiempo, no se
puede recuperar el UUID del timbre y por tanto no devuelve nada.
En cada llamada se puede enviar un nico comprobante para obtener un nico UUID.
LLAMADA:
public String getUUID(String user, String password, byte[] file);
PARMETROS:
file: Fichero con los datos del comprobante firmados por el usuario. Se trata del XML con la informacin
del comprobante, segn lo especificado en el Anexo 20 de la Resolucin Miscelnea Fiscal de 2010 [1].
Puede enviarse tambin comprimido en en formato ZIP. Dentro del mensaje SOAP, se enviarn los datos
del fichero codificados en Base64 dentro del sobre de la llamada SOAP.
RESPUESTA:
En caso de que el comprobante haya sido timbrado, devolver el UUID del comprobante timbrado.
Respuesta con errores: En caso de que haya algn error en el proceso de bsqueda del comprobante
timbrado, devolver una excepcin que contendr un cdigo de error y un mensaje de texto con el
error producido. Ejemplos de este tipo de excepciones sera por ejemplo que el usuario no se haya
autentificado correctamente en el sistema, o que no se haya enviado el fichero ZIP con el CFDI.
EJEMPLOS
Cdigo del cliente:
public String getUUID(String user, String pass, byte[] file) {
String uuid = null;
try {
uuid = cfdiService.getUUID(user, pass, file);
} catch (CFDiException CFDIe) {
CFDIe.printStackTrace();
System.out.println("CFDiExcepcion: " + CFDIe.getText());
} catch (RemoteException Re) {
Re.printStackTrace();
System.out.println("RemoteExcepcion: " + Re.toString());
} catch (Exception e) {
e.printStackTrace();
System.out.println("Exception: " + e.toString());
}
return uuid;
}
WSCFDI EDICOM
Peticin SOAP:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:cfdi="http://cfdi.service.ediwinws.edicom.com">
<soapenv:Header/>
<soapenv:Body>
<cfdi:getUUID>
<cfdi:user>xxxxxx</cfdi:user>
<cfdi:password>xxxxxx</cfdi:password>
<cfdi:file>UEsDBBQAAAAIAOJkmD0CMccqxQcAAFUSAAAfAAAAc2luX3RpbWJyYXJfX1hN+
+NAgoBzSJWgV4cbALEKkAC6Q/8Kf6O+2MupJ4ZzWI7/OoYRaCSKrOyTh5OVeZvfwxFjp2jpk2r8m1CTok
y4Ti037j1s2nVxDhFECTuyJIRJFHhffVN/7vzp7RsO68MogkmV2UUem8T2VEmmJnWFeMVflqhZCZYEDVd
[...]
C2Qy59xh/9sq4/ZB2RfEvjSuv3+L1BLAQIUCxQAAAAIAOJkmD0CMccqxQcAAFUSAAAfAAAAAAAAAAEAIA
AAAAAAAABzaW5fdGltYnJhcl9fWE1MSW1wXzQ3MzIwOS54bWx+UEsFBgAAAAABAAEATQAAAAIIAAAAAA=
=</cfdi:file>
</cfdi:getUUID>
</soapenv:Body>
</soapenv:Envelope>
Nota: Los datos que aparecen en este ejemplo no son reales. El cdigo del fichero en
base64 ha sido resumido [...]
Respuesta SOAP:
El siguiente ejemplo es una respuesta satisfactoria de la obtencin de un UUID
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<getUUIDResponse xmlns="http://cfdi.service.ediwinws.edicom.com">
<getUUIDReturn>XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX</getUUIDReturn>
</getUUIDResponse>
</soapenv:Body>
</soapenv:Envelope>
Nota: Los datos que aparecen en este ejemplo de cdigo no son reales.
El siguiente ejemplo es una respuesta de error.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<soapenv:Fault>
<faultcode>soapenv:Server.userException</faultcode>
<faultstring>com.edicom.ediwinws.service.cfdi.CFDiException: No se ha
podido comprobar el UUID del comprobante.</faultstring>
<detail>
<ns1:fault xmlns:ns1="http://cfdi.service.ediwinws.edicom.com">
<ns1:cod>202</ns1:cod>
<ns1:text>No se ha podido comprobar el UUID del
comprobante.</ns1:text>
</ns1:fault>
WSCFDI EDICOM
<ns2:hostname
xmlns:ns2="http://xml.apache.org/axis/">cfdipr01a</ns2:hostname>
</detail>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
LLAMADA:
public String getUUIDTest(String user, String password, byte[] file);
PARMETROS:
file: Fichero con los datos del comprobante firmados por el usuario. Se trata del XML con la informacin
del comprobante, segn lo especificado en el Anexo 20 de la Resolucin Miscelnea Fiscal de 2010 [1].
Puede enviarse tambin comprimido en en formato ZIP. Dentro del mensaje SOAP, se enviarn los datos
del fichero codificados en Base64 dentro del sobre de la llamada SOAP.
RESPUESTA:
En caso de que el comprobante haya sido timbrado en el entorno de pruebas, devolver el UUID del
comprobante timbrado en el entorno de pruebas.
WSCFDI EDICOM
Respuesta con errores: En caso de que haya algn error en el proceso de bsqueda del comprobante
timbrado en el entorno de pruebas, devolver una excepcin que contendr un cdigo de error y un
mensaje de texto con el error producido. Ejemplos de este tipo de excepciones sera por ejemplo que
el usuario no se haya autentificado correctamente en el sistema, o que no se haya enviado el fichero
ZIP con el CFDI.
EJEMPLOS
Cdigo del cliente:
public String getUUIDTest(String user, String pass, byte[] file) {
String uuid = null;
try {
uuid = cfdiService.getUUIDTest(user, pass, file);
} catch (CFDiException CFDIe) {
CFDIe.printStackTrace();
System.out.println("CFDiExcepcion: " + CFDIe.getText());
} catch (RemoteException Re) {
Re.printStackTrace();
System.out.println("RemoteExcepcion: " + Re.toString());
} catch (Exception e) {
e.printStackTrace();
System.out.println("Exception: " + e.toString());
}
return uuid;
}
Peticin SOAP:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:cfdi="http://cfdi.service.ediwinws.edicom.com">
<soapenv:Header/>
<soapenv:Body>
<cfdi:getUUIDTest>
<cfdi:user>xxxxxx</cfdi:user>
<cfdi:password>xxxxxx</cfdi:password>
<cfdi:file>UEsDBBQAAAAIAOJkmD0CMccqxQcAAFUSAAAfAAAAc2luX3RpbWJyYXJfX1hN+
+NAgoBzSJWgV4cbALEKkAC6Q/8Kf6O+2MupJ4ZzWI7/OoYRaCSKrOyTh5OVeZvfwxFjp2jpk2r8m1CTok
y4Ti037j1s2nVxDhFECTuyJIRJFHhffVN/7vzp7RsO68MogkmV2UUem8T2VEmmJnWFeMVflqhZCZYEDVd
[...]
C2Qy59xh/9sq4/ZB2RfEvjSuv3+L1BLAQIUCxQAAAAIAOJkmD0CMccqxQcAAFUSAAAfAAAAAAAAAAEAIA
AAAAAAAABzaW5fdGltYnJhcl9fWE1MSW1wXzQ3MzIwOS54bWx+UEsFBgAAAAABAAEATQAAAAIIAAAAAA=
=</cfdi:file>
</cfdi:getUUIDTest>
</soapenv:Body>
</soapenv:Envelope>
Nota: Los datos que aparecen en este ejemplo no son reales. El cdigo del fichero en
base64 ha sido resumido [...]
Respuesta SOAP:
El siguiente ejemplo es una respuesta satisfactoria. Se obtiene el UUID de pruebas.
WSCFDI EDICOM
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<getUUIDTestResponse xmlns="http://cfdi.service.ediwinws.edicom.com">
<getUUIDTestReturn>13EDFE98-7E57-4455-9C316661C4A5A71D</getUUIDTestReturn>
</getUUIDTestResponse>
</soapenv:Body>
</soapenv:Envelope>
WSCFDI EDICOM
LLAMADA:
public CancelaResponse cancelaCFDiSigned(String user, String password, byte[]
sign);
PARMETROS:
user: Usuario que va realizar la conexin.
password: Contrasea del usuario que va realizar la conexin.
sign: Peticin de cancelacin firmada por el propio cliente. Dentro del mensaje SOAP, se enviarn los
RESPUESTA:
Respuesta satisfactoria: En caso de que se haya realizado la cancelacin Satisfactoria de los
ack: Confirmacin que devuelve el servicio del SAT como que la peticin se ha realizado. Est
codificado en base 64 y contiene el acuse de recibo expedido por el SAT para la cancelacin.
Una vez decodificado, este acuse contiene el xml con la informacin de la peticin de
cancelacin solicitada al SAT por parte de EDICOM, incluyendo los cdigos de ejecucin del
servicio por parte del SAT especificados en el Anexo 20.
Respuesta con errores: En caso de que haya algn error en el proceso de cancelacin de los CFDI,
devolver una excepcin que contendr un cdigo de error y un mensaje de texto con el error
producido. Ejemplos de este tipo de excepciones sera por ejemplo que el usuario no se haya
autentificado correctamente en el sistema, o que no se haya enviado el certificado del usuario.
Para ver una lista completa de los posibles cdigos de error y respuestas asociadas consultar el punto Lista de
Cdigos de Error.
EJEMPLOS
Cdigo del cliente:
public CancelaResponse cancelaCFDiSigned(String user, String pass, byte[] sign)
{
CancelaResponse cancelaResponse = null;
try {
cancelaResponse = cfdiService.cancelaCFDiSigned(user, pass, sign);
} catch (CFDiException CFDIe) {
CFDIe.printStackTrace();
System.out.println("CFDiExcepcion: " + CFDIe.getText());
} catch (RemoteException Re) {
Re.printStackTrace();
System.out.println("RemoteExcepcion: " + Re.toString());
} catch (Exception e) {
e.printStackTrace();
System.out.println("Exception: " + e.toString());
}return cancelaResponse;
}
WSCFDI EDICOM
Peticin SOAP:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:cfdi="http://cfdi.service.ediwinws.edicom.com">
<soapenv:Header/>
<soapenv:Body>
<cfdi:cancelaCFDiSigned>
<cfdi:user>xxxxxx</cfdi:user>
<cfdi:password>xxxxxx</cfdi:password>
<cfdi:sign>PENhbmNlbGFjaW9uIEZlY2hhPSIyMDExLTA3LTEzVDE3OjIzOjQ0LjU4OVoiIFJmY0VtaX
Nvcj0iWlVOMTAwNjIzNjYzIiB4bWxucz0iaHR0cDovL2NhbmNlbGFjZmQuc2F0LmdvYi5teCIgeG1sbnM
6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHR[...]
rS3FtdU1vTU9QaVcyYWQ1cEF3UlpKL0JBcmMrODBqTWNWZ1VkNEtSdVdMOG4vc05jNUhsTEd5Q3RvMTRZ
UXhHUDkwdkNiV2xlUT09PC9YNTA5Q2VydGlmaWNhdGU+PC9YNTA5RGF0YT48L0tleUluZm8+PC9TaWduY
XR1cmU+PC9DYW5jZWxhY2lvbj4=</cfdi:sign>
</cfdi:cancelaCFDiSigned>
</soapenv:Body>
</soapenv:Envelope>
Nota: Los datos que aparecen en este ejemplo no son reales. El cdigo del fichero en
base64 ha sido resumido [...]
Respuesta SOAP:
Ejemplo de una respuesta de cancelacin de CFDI firmada satisfactoria.
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<cancelaCFDiSignedResponse xmlns="http://cfdi.service.ediwinws.edicom.com">
<cancelaCFDiSignedReturn>
<ack>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48czpFbnZlbG9wZSB4bWxuczpz
PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VudmVsb3BlLyI+PHM6Qm9keT48Q2FuY2VsY
UNGRFJlc3BvbnNlIHhtbG5zPSJodHRwOi8vdGVtcHVyaS5vcmcvIj48Q2FuY2VsYUNGRF
[...]
+PC9hOkFjdXNlRm9saW9zPjwvYTpGb2xpb3M+PGE6U2VsbG9TQVQgaTpuaWw9InRydWUiLz48YTpyZmNF
bWlzb3I+U0FULTI4MDkxMC0wMDE8L2E6cmZjRW1pc29yPjwvQ2FuY2VsYUNGRFJlc3VsdD48L0NhbmNlb
GFDRkRSZXNwb25zZT48L3M6Qm9keT48L3M6RW52ZWxvcGU+</ack>
<text>1c550dd7-2209-4c45-acdf
-b86b6cf3723e~PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48czpFbnZlbG9wZSB
4bWxuczpzPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VudmVsb3BlLyI+PHM6Qm9keT4Q
[...]
hOkFjdXNlRm9saW9zPjwvYTpGb2xpb3M+PGE6U2VsbG9TQVQgaTpuaWw9InRydWUiLz48YTpyZmNFbWlz
b3I+U0FULTI4MDkxMC0wMDE8L2E6cmZjRW1pc29yPjwvQ2FuY2VsYUNGRFJlc3VsdD48L0NhbmNlbGFDR
kRSZXNwb25zZT48L3M6Qm9keT48L3M6RW52ZWxvcGU+</text>
<uuids>
<uuids>1c550dd7-2209-4c45-acdf-b86b6cf3723e</uuids>
</uuids>
</cancelaCFDiSignedReturn>
</cancelaCFDiSignedResponse>
</soapenv:Body>
</soapenv:Envelope>
WSCFDI EDICOM
Nota: Para ver una lista completa de los posibles cdigos de error y respuestas asociadas
consultar el punto Lista de Cdigos de Error.
CONSIDERACIONES IMPORTANTES
Timeout de la llamada de esta funcin
Hay que tener en cuenta que el proceso de timbrado depende directamente del proceso de cancelacin del SAT.
Por tanto, el tiempo de respuesta de esta funcin no depende del servicio de cancelacin de EDICOM, sino que
depende directamente del tiempo de proceso de los servidores del SAT. Este proceso no es tan inmediato como
e tiempo de generacin del timbrado, por lo que es necesario que se utilice un timeout considerable para estas
peticiones de cancelacin.
Por defecto, los clientes de webservice suelen tener un timeout de 30 segundos, que puede llegar a ser
insuficiente para la correcta ejecucin de esta funcin. Se recomienda utilizar para esta llamada un timeout no
inferior a 2 minutos para evitar que venza la llamada por timeout y se pierda la respuesta de la peticin del
servicio.
Gestin de errores.
En la ejecucin de esta llamada hay que distinguir correctamente los cdigos de error que genera el servicio de
cancelacin de EDICOM y los cdigos de validacin que devuelve el SAT en el acuse de recibo.
La respuesta errnea del servicio de EDICOM, como se puede ver en el ejemplo anterior, devuelve un objeto
soapenv:Fault en la respuesta del servicio. Este objeto contiene un objeto ns1:cod con el cdigo de error que
proporciona EDICOM para la ejecucin del servicio.
WSCFDI EDICOM
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<soapenv:Fault>
<faultcode>soapenv:Server.userException</faultcode>
<faultstring>com.edicom.ediwinws.service.cfdi.CFDiException: No se ha
podido cancelar los UUIDs especificados.</faultstring>
<detail>
<ns1:fault xmlns:ns1="http://cfdi.service.ediwinws.edicom.com">
<ns1:cod>201</ns1:cod>
<ns1:text>No se ha podido cancelar los UUIDs
especificados.</ns1:text>
</ns1:fault>
<ns2:
xmlns:ns2="http://xml.apache.org/axis/">cfdiws.sedeb2b.com</ns2:hostname>
</detail>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
La respuesta que devuelve el SAT est contenida dentro de la respuesta correcta del servicio de EDICOM. Ms
concretamente en el objeto ack dentro del cancelaCFDiReturn. Dentro de este acuse de recibo se encuentran
los cdigos de ejecucin de la cancelacin del comprobante por parte del SAT. Estos cdigos de ejecucin del
SAT estn contemplados en el Anexo 20.
WSCFDI EDICOM
</soapenv:Envelope>
Ambos cdigos son totalmente independientes, y no deben confundirse ya que corresponden a cdigos de
EDICOM y del SAT respectivamente.
LLAMADA:
public byte[] getCfdiAck(String user, String password, String[] uuid);
PARMETROS:
user: Usuario que va realizar la conexin.
password: Contrasea del usuario que va realizar la conexin.
uuid: Listado de UUIDs de los que se quieren obtener los ACKs.
RESPUESTA:
Respuesta satisfactoria: En caso de que se haya realizado la peticin correcta, el servicio devolver un
fichero comprimido en formato ZIP con los distintos ACKs de los UUIDs pertenecientes al usuario que
se hayan especificado en la peticin.
Respuesta con errores: En caso de que haya algn error en el proceso de obtencin de los ACKs,
devolver una excepcin que contendr un cdigo de error y un mensaje de texto con el error
producido. Ejemplos de este tipo de excepciones sera por ejemplo que el usuario no se haya
autentificado correctamente en el sistema, o que no se haya enviado ningn UUID en la peticin.
EJEMPLOS
Cdigo del cliente:
public byte[] getCfdiAck(String user, String pass, String[] uuid) {
try {
cfdiService.getCfdiAck(user, pass, uuid);
} catch (CFDiException CFDIe) {
CFDIe.printStackTrace();
System.out.println("CFDiExcepcion: " + CFDIe.getText());
} catch (RemoteException Re) {
Re.printStackTrace();
System.out.println("RemoteExcepcion: " + Re.toString());
WSCFDI EDICOM
} catch (Exception e) {
e.printStackTrace();
System.out.println("Exception: " + e.toString());
}
}
Peticin SOAP:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:cfdi="http://cfdi.service.ediwinws.edicom.com">
<soapenv:Header/>
<soapenv:Body>
<cfdi:getCfdiAck>
<cfdi:user>xxxxx</cfdi:user>
<cfdi:password>xxxxxxx</cfdi:password>
<cfdi:uuid>9D4B22C9-654F-4D58-BD8D-2F6481432AF5</cfdi:uuid>
</cfdi:getCfdiAck>
</soapenv:Body>
</soapenv:Envelope>
Respuesta SOAP:
El siguiente ejemplo es una respuesta de obtencin de ACKs satisfactoria.
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<getCfdiAckResponse xmlns="http://cfdi.service.ediwinws.edicom.com">
<getCfdiAckReturn>UEsDBBQACAAIAOxtfj0AAAAAAAAAAAAAAAATAAAAU0lHTl9GaXJtYV9PS18xLlh
NTN1Y2ZKryBF9d4T/gdCDXxQtsbS29u2ZYCkQEoUEArS8ONgESCxqQID4A3+Kf8GPnh9zgdR91fdq7ngc
4QjbHdGNlJWVdfJk5dJ8+bmKQqxw0yxI4tcO0cM7mBvbiRPE3mtH1/incefnn/74hy/23gle2CQ
[...]
mnvqtOHAGOdsvaUcv+wpHGUn1eygepprtwr5WvTT581Lu7+/1VdBvpURr8E1BLBwiieLVx4QkAAJ4UAAB
QSwECFAAUAAgACADsbX49oni1ceEJAACeFAAAEwAAAAAAAAAAAAAAAAAAAAAAU0lHTl9GaXJtYV9PS18x
LlhNTFBLBQYAAAAAAQABAEEAAAAiCgAAAAA=</getCfdiAckReturn>
</getCfdiAckResponse>
</soapenv:Body>
</soapenv:Envelope>
Nota: Los datos que aparecen en este ejemplo no son reales. El cdigo del fichero en
base64 ha sido resumido [...]
El siguiente ejemplo es una respuesta de error.
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<soapenv:Fault>
<faultcode>soapenv:Server.userException</faultcode>
WSCFDI EDICOM
<faultstring>com.edicom.ediwinws.service.cfdi.CFDiException: No se ha
podido obtener la respuesta de la peticin de generacin del
comprobante.</faultstring>
<detail>
<ns1:fault xmlns:ns1="http://cfdi.service.ediwinws.edicom.com">
<ns1:cod>203</ns1:cod>
<ns1:text>No se ha podido obtener la respuesta de la peticin de
generacin del comprobante.</ns1:text>
</ns1:fault>
<ns2:hostname
xmlns:ns2="http://xml.apache.org/axis/">cfdiws.sedeb2b.com</ns2:hostname>
</detail>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
Nota: Para ver una lista completa de los posibles cdigos de error y respuestas asociadas
consultar el punto Lista de Cdigos de Error.
LLAMADA:
public byte[] getCfdiFromUUID(String user, String password, String rfc,
String[] uuid);
PARMETROS:
user: Usuario que va realizar la conexin.
password: Contrasea del usuario que va realizar la conexin.
rfc: RFC del emisor del comprobante..
uuid: Listado de UUIDs de los que se quieren obtener los comprobantes timbrados.
RESPUESTA:
Respuesta satisfactoria: En caso de que se haya realizado la peticin correcta, el servicio devolver un
fichero comprimido en formato ZIP con los comprobantes timbrados de los UUIDs pertenecientes al
usuario que se hayan especificado en la peticin.
Respuesta con errores: En caso de que haya algn error en el proceso de obtencin de los
comprobantes timbrados, devolver una excepcin que contendr un cdigo de error y un mensaje de
texto con el error producido. Ejemplos de este tipo de excepciones sera por ejemplo que el usuario
no se haya autentificado correctamente en el sistema, o que no se haya enviado ningn UUID en la
peticin.
WSCFDI EDICOM
EJEMPLOS
Cdigo del cliente:
public byte[] getCfdiFromUUID(String user, String pass, String rfc, String[]
uuid) {
try {
cfdiService.getCfdiFrom UUID(user, pass, rfc, uuid);
} catch (CFDiException CFDIe) {
CFDIe.printStackTrace();
System.out.println("CFDiExcepcion: " + CFDIe.getText());
} catch (RemoteException Re) {
Re.printStackTrace();
System.out.println("RemoteExcepcion: " + Re.toString());
} catch (Exception e) {
e.printStackTrace();
System.out.println("Exception: " + e.toString());
}
}
Peticin SOAP:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:cfdi="http://cfdi.service.ediwinws.edicom.com">
<soapenv:Header/>
<soapenv:Body>
<cfdi:getCfdiFromUUID>
<cfdi:user>xxxxx</cfdi:user>
<cfdi:password>xxxxx</cfdi:password>
<cfdi:rfc>xxxxx</cfdi:rfc>
<cfdi:uuid>9D4B22C9-654F-4D58-BD8D-2F6481432AF5</cfdi:uuid>
</cfdi:getCfdiFromUUID>
</soapenv:Body>
</soapenv:Envelope>
Respuesta SOAP:
El siguiente ejemplo es una respuesta de obtencin de los comprobantes timbrados satisfactoria.
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<getCfdiFromUUIDResponse xmlns="http://cfdi.service.ediwinws.edicom.com">
<getCfdiFromUUIDReturn>UEsDBBQACAAIAOxtfj0AAAAAAAAAAAAAAAATAAAAU0lHTl9GaXJtYV9PS1
8xLlhNTN1Y2ZKryBF9d4T/gdCDXxQtsbS29u2ZYCkQEoUEArS8ONgESCxqQID4A3+Kf8GPnh9zgdR91fd
q7ngc4QjbHdGNlJWVdfJk5dJ8+bmKQqxw0yxI4tcO0cM7mBvbiRPE3mtH1/incefnn/74hy/23gle2CQ
[...]
mnvqtOHAGOdsvaUcv+wpHGUn1eygepprtwr5WvTT581Lu7+/1VdBvpURr8E1BLBwiieLVx4QkAAJ4UAAB
QSwECFAAUAAgACADsbX49oni1ceEJAACeFAAAEwAAAAAAAAAAAAAAAAAAAAAAU0lHTl9GaXJtYV9PS18x
LlhNTFBLBQYAAAAAAQABAEEAAAAiCgAAAAA=</getCfdiFromUUIDReturn>
WSCFDI EDICOM
</getCfdiFromUUIDResponse>
</soapenv:Body>
</soapenv:Envelope>
Nota: Los datos que aparecen en este ejemplo no son reales. El cdigo del fichero en
base64 ha sido resumido [...]
El siguiente ejemplo es una respuesta de error.
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<soapenv:Fault>
<faultcode>soapenv:Server.userException</faultcode>
<faultstring>com.edicom.ediwinws.service.cfdi.CFDiException: No se ha
podido obtener el comprobante de los UUIDs enviados.</faultstring>
<detail>
<ns1:fault xmlns:ns1="http://cfdi.service.ediwinws.edicom.com">
<ns1:cod>203</ns1:cod>
<ns1:text>No se ha podido obtener el comprobante de los UUIDs
enviados.</ns1:text>
</ns1:fault>
<ns2:hostname
xmlns:ns2="http://xml.apache.org/axis/">cfdiws.sedeb2b.com</ns2:hostname>
</detail>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
Nota: Para ver una lista completa de los posibles cdigos de error y respuestas asociadas
consultar el punto Lista de Cdigos de Error.
LLAMADA:
public byte[] getCfdiRetenciones(String user, String password, byte[] file);
PARMETROS:
WSCFDI EDICOM
file: Fichero con los datos del comprobante de retenciones electrnicas firmados por el usuario. Se trata
del XML con la informacin del comprobante. Puede enviarse tambin comprimido en en formato ZIP.
Dentro del mensaje SOAP, se enviarn los datos del fichero codificados en Base64 dentro del sobre de la
llamada SOAP.
RESPUESTA:
El comprobante que se enviar al webservice es un XML que contiene la informacin de la factura, e integra el
certificado del contribuyente expedido por el SAT, empleado en la construccin del Sello Digital del
Comprobante, segn lo especificado en el Anexo 20 de la Resolucin Miscelnea Fiscal de 2014 [1] .
Edicom, como PSECFDI recibe a travs del webservice el Comprobante del contribuyente para realizar todas las
validaciones exigidas por el SAT y someterlo posteriormente al proceso de certificacin final.
Validaciones que contiene el servicio:
Verifica que el perodo de tiempo entre la fecha de envo del documento y la de recepcin del
Verifica igualmente que el documento no haya sido certificado previamente, que el Certificado de
Sello Digital (CSD) del contribuyente est vigente en la fecha de generacin del comprobante, y que
efectivamente corresponda dicho CSD al contribuyente que emite el documento.
Finalmente constata que la estructura del documento cumple con las especificaciones tcnicas
Si el CFDI de retenciones electrnicas cumple con las validaciones especificadas anteriormente, se dar
respuesta al contribuyente incorporando un complemento sobre el documento segn lo especificado en el
Anexo 20 de la Resolucin Miscelnea Fiscal de 2014 [1]. Este complemento incluye el nmero de folio
asignado por el SAT, fecha y hora de certificacin y sello digital del CFDI de retenciones electrnicas. Se adhiere
igualmente como parte del complemento el nmero de serie del certificado digital del SAT con el que se realiz
del certificacin del CFDI, y el sello del SAT.
Respuesta satisfactoria: En caso de que se haya realizado la firma digital, el servicio devolver un
documento comprimido en formato ZIP con el CFDI de retenciones electrnicas con todos los datos
generados.
Respuesta con errores: En caso de que haya algn error en el proceso de firma digital del CFDI de
retenciones electrnicas, devolver una excepcin que contendr un cdigo de error y un mensaje de
texto con el error producido. Ejemplos de este tipo de excepciones sera por ejemplo que el usuario no
se haya autentificado correctamente en el sistema, o que no se haya enviado el fichero ZIP con el CFDI
de retenciones electrnicas, o que el CFDI de retenciones electrnicas enviado no es correcto
sintcticamente segn el esquema del SAT.
EJEMPLOS
Cdigo del cliente:
public byte[] getCfdiRetenciones(String user, String pass, byte[] file) {
try {
cfdiService.getCfdiRetenciones(user, pass, file);
} catch (CFDiException CFDIe) {
CFDIe.printStackTrace();
System.out.println("CFDiExcepcion: " + CFDIe.getText());
} catch (RemoteException Re) {
Re.printStackTrace();
WSCFDI EDICOM
System.out.println("RemoteExcepcion: " + Re.toString());
} catch (Exception e) {
e.printStackTrace();
System.out.println("Exception: " + e.toString());
}
}
Peticin SOAP:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:cfdi="http://cfdi.service.ediwinws.edicom.com">
<soapenv:Header/>
<soapenv:Body>
<cfdi:getCfdiRetenciones>
<cfdi:user>xxxxxx</cfdi:user>
<cfdi:password>xxxxxx</cfdi:password>
<cfdi:file>UEsDBBQAAAAIAOJkmD0CMccqxQcAAFUSAAAfAAAAc2luX3RpbWJyYXJfX1hN+
+NAgoBzSJWgV4cbALEKkAC6Q/8Kf6O+2MupJ4ZzWI7/OoYRaCSKrOyTh5OVeZvfwxFjp2jpk2r8m1CTok
y4Ti037j1s2nVxDhFECTuyJIRJFHhffVN/7vzp7RsO68MogkmV2UUem8T2VEmmJnWFeMVflqhZCZYEDVd
[...]
C2Qy59xh/9sq4/ZB2RfEvjSuv3+L1BLAQIUCxQAAAAIAOJkmD0CMccqxQcAAFUSAAAfAAAAAAAAAAEAIA
AAAAAAAABzaW5fdGltYnJhcl9fWE1MSW1wXzQ3MzIwOS54bWx+UEsFBgAAAAABAAEATQAAAAIIAAAAAA=
=</cfdi:file>
</cfdi:getCfdiRetenciones>
</soapenv:Body>
</soapenv:Envelope>
Nota: Los datos que aparecen en este ejemplo no son reales. El cdigo del fichero en
base64 ha sido resumido [...]
Respuesta SOAP:
El siguiente ejemplo es una respuesta de un envo de CFDI de retenciones electrnicas satisfactorio.
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<getCfdiRetencionesResponse
xmlns="http://cfdi.service.ediwinws.edicom.com">
<getCfdiRetencionesReturn>UEsDBBQACAAIAOxtfj0AAAAAAAAAAAAAAAATAAAAU0lHTl9GaXJtYV9
PS18xLlhNTN1Y2ZKryBF9d4T/gdCDXxQtsbS29u2ZYCkQEoUEArS8ONgESCxqQID4A3+Kf8GPnh9zgdR9
1fdq7ngc4QjbHdGNlJWVdfJk5dJ8+bmKQqxw0yxI4tcO0cM7mBvbiRPE3mtH1/incefnn/74hy/23gle2
CQ
[...]
mnvqtOHAGOdsvaUcv+wpHGUn1eygepprtwr5WvTT581Lu7+/1VdBvpURr8E1BLBwiieLVx4QkAAJ4UAAB
QSwECFAAUAAgACADsbX49oni1ceEJAACeFAAAEwAAAAAAAAAAAAAAAAAAAAAAU0lHTl9GaXJtYV9PS18x
LlhNTFBLBQYAAAAAAQABAEEAAAAiCgAAAAA=</getCfdiRetencionesReturn>
</getCfdiRetencionesResponse>
</soapenv:Body>
</soapenv:Envelope>
Nota: Los datos que aparecen en este ejemplo no son reales. El cdigo del fichero en
base64 ha sido resumido [...]
WSCFDI EDICOM | 2.Funciones | 41
WSCFDI EDICOM
Nota: En este ejemplo concreto se presenta un error "301" indicando que el documento no
est codificado en UTF-8.
Para ver una lista completa de los posibles cdigos de error y respuestas asociadas consultar el punto Lista de
Cdigos de Error.
WSCFDI EDICOM
2.13. GENERACIN
ELECTRNICAS
DEL
TIMBRE
DEL
CFDI
DE
RETENCIONES
getTimbreCfdiRetenciones
Permite realizar el timbrado del comprobante de retenciones electrnicas firmado por el cliente y devuelve el
timbre del comprobante de retenciones electrnicas timbrado. Para poder implementar la llamada, el usuario
debe autentificarse como usuario del servicio de CFDi y especificar cuales son los datos del comprobante para
poder generar as la firma digital.
En cada llamada se puede generar un CFDI de retenciones electrnicas.
LLAMADA:
public byte[] getTimbreCfdiRetenciones(String user, String password, byte[]
file);
PARMETROS:
file: Fichero con los datos del comprobante de retenciones electrnicas firmados por el usuario. Se trata
del XML con la informacin del comprobante de retenciones electrnicas, segn lo especificado en el
Anexo 20 de la Resolucin Miscelnea Fiscal de 2014 [1]. Puede enviarse tambin comprimido en en
formato ZIP. Dentro del mensaje SOAP, se enviarn los datos del fichero codificados en Base64 dentro del
sobre de la llamada SOAP.
RESPUESTA:
El comprobante de retenciones electrnicas que se enviar al webservice es un XML que contiene la
informacin de la factura, e integra el certificado del contribuyente expedido por el SAT, empleado en la
construccin del Sello Digital del Comprobante segn lo especificado en el Anexo 20 de la Resolucin
Miscelnea Fiscal de 2014 [1] .
Edicom, como PSECFDI recibe a travs del webservice el Comprobante de retenciones electrnicas del
contribuyente para realizar todas las validaciones exigidas por el SAT y someterlo posteriormente al proceso de
certificacin final.
Validaciones que contiene el servicio:
Verifica que el perodo de tiempo entre la fecha de envo del documento y la de recepcin del
Verifica igualmente que el documento no haya sido certificado previamente, que el Certificado de
Sello Digital (CSD) del contribuyente est vigente en la fecha de generacin del comprobante, y que
efectivamente corresponda dicho CSD al contribuyente que emite el documento.
Finalmente constata que la estructura del documento cumple con las especificaciones tcnicas
Si el CFDI de retenciones electrnicas cumple con las validaciones especificadas anteriormente, se dar
respuesta al contribuyente con el timbre de la firma digital segn lo especificado en el Anexo 20 de la
Resolucin Miscelnea Fiscal de 2014 [1]. Este timbre incluye el nmero de folio asignado por el SAT, fecha y
hora de certificacin y sello digital del CFDI. Se adhiere igualmente como parte del complemento el nmero de
serie del certificado digital del SAT con el que se realiz del certificacin del CFDI, y el sello del SAT.
WSCFDI EDICOM | 2.Funciones | 43
WSCFDI EDICOM
Respuesta satisfactoria: En caso de que se haya realizado la firma digital, el servicio devolver un
documento comprimido en formato ZIP con el timbre del CFDI de retenciones electrnicas firmado con
todos los datos generados.
Respuesta con errores: En caso de que haya algn error en el proceso de firma digital del CFDI de
retenciones electrnicas, devolver una excepcin que contendr un cdigo de error y un mensaje de
texto con el error producido. Ejemplos de este tipo de excepciones sera por ejemplo que el usuario no
se haya autentificado correctamente en el sistema, o que no se haya enviado el fichero ZIP con el CFDI
de retenciones electrnicas, o que el CFDI de retenciones electrnicas enviado no es correcto
sintcticamente segn el esquema del SAT.
EJEMPLOS
Cdigo del cliente:
public byte[] getTimbreCfdiRetenciones(String user, String pass, byte[] file)
{
try {
cfdiService.getTimbreCfdiRetenciones(user, pass, file);
} catch (CFDiException CFDIe) {
CFDIe.printStackTrace();
System.out.println("CFDiExcepcion: " + CFDIe.getText());
} catch (RemoteException Re) {
Re.printStackTrace();
System.out.println("RemoteExcepcion: " + Re.toString());
} catch (Exception e) {
e.printStackTrace();
System.out.println("Exception: " + e.toString());
}
}
Peticin SOAP:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:cfdi="http://cfdi.service.ediwinws.edicom.com">
<soapenv:Header/>
<soapenv:Body>
<cfdi:getTimbreCfdiRetenciones>
<cfdi:user>xxxxxx</cfdi:user>
<cfdi:password>xxxxxx</cfdi:password>
<cfdi:file>UEsDBBQAAAAIAOJkmD0CMccqxQcAAFUSAAAfAAAAc2luX3RpbWJyYXJfX1hN+
+NAgoBzSJWgV4cbALEKkAC6Q/8Kf6O+2MupJ4ZzWI7/OoYRaCSKrOyTh5OVeZvfwxFjp2jpk2r8m1CTok
y4Ti037j1s2nVxDhFECTuyJIRJFHhffVN/7vzp7RsO68MogkmV2UUem8T2VEmmJnWFeMVflqhZCZYEDVd
[...]
C2Qy59xh/9sq4/ZB2RfEvjSuv3+L1BLAQIUCxQAAAAIAOJkmD0CMccqxQcAAFUSAAAfAAAAAAAAAAEAIA
AAAAAAAABzaW5fdGltYnJhcl9fWE1MSW1wXzQ3MzIwOS54bWx+UEsFBgAAAAABAAEATQAAAAIIAAAAAA=
=</cfdi:file>
</cfdi:getTimbreCfdiRetenciones>
</soapenv:Body>
</soapenv:Envelope>
Nota: Los datos que aparecen en este ejemplo no son reales. El cdigo del fichero en
base64 ha sido resumido [...]
WSCFDI EDICOM
Respuesta SOAP:
El siguiente ejemplo es una respuesta de generacin de timbre satisfactoria.
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<getTimbreCfdiRetencionesResponse
xmlns="http://cfdi.service.ediwinws.edicom.com">
<getTimbreCfdiRetencionesReturn>UEsDBBQACAAIAOxtfj0AAAAAAAAAAAAAAAATAAAAU0lHTl9Ga
XJtYV9PS18xLlhNTN1Y2ZKryBF9d4T/gdCDXxQtsbS29u2ZYCkQEoUEArS8ONgESCxqQID4A3+Kf8GPnh
9zgdR91fdq7ngc4QjbHdGNlJWVdfJk5dJ8+bmKQqxw0yxI4tcO0cM7mBvbiRPE3mtH1/incefnn/74hy/
23gle2CQ
[...]
mnvqtOHAGOdsvaUcv+wpHGUn1eygepprtwr5WvTT581Lu7+/1VdBvpURr8E1BLBwiieLVx4QkAAJ4UAAB
QSwECFAAUAAgACADsbX49oni1ceEJAACeFAAAEwAAAAAAAAAAAAAAAAAAAAAAU0lHTl9GaXJtYV9PS18x
LlhNTFBLBQYAAAAAAQABAEEAAAAiCgAAAAA=</getTimbreCfdiRetencionesReturn>
</getTimbreCfdiRetencionesResponse>
</soapenv:Body>
</soapenv:Envelope>
Para ver una lista completa de los posibles cdigos de error y respuestas asociadas consultar el punto Lista de
Cdigos de Error.
WSCFDI EDICOM
Permite realizar el timbrado del comprobante de retenciones electrnicas firmado por el cliente en modo de
prueba y devuelve el comprobante timbrado. Se trata de una llamada de TEST para poder hacer pruebas del
funcionamiento del servicio.
Funciona exactamente igual que la funcin getCfdiRetenciones, pero en caso de que el CFDI de
retenciones electrnicas pase todas las validaciones que implementa el servicio, genera un CFDI de retenciones
electrnicas con un timbre no vlido, y no enva el CFDI de retenciones electrnicas al SAT.
La ejecucin de esta llamada no tiene en cuenta la limitaciones del servicio en produccin para poder ser mas
flexible a la hora de que se hagan las pruebas de conectividad con el webservice final. Validaciones omitidas en
el entorno de TEST:
No se validan las 72 horas de tiempo entre la fecha del comprobante y la generacin del timbre.
No se tiene en cuenta el documento enviado, por lo que al enviar varias veces el mismo documento se
generan distintos timbres de TEST.
Estas validaciones omitidas permiten que se puedan hacer pruebas de funcionamiento con un juego reducido
de comprobantes firmados sin necesidad de ir generando continuamente comprobantes timbrados.
LLAMADA:
public byte[] getCfdiRetencionesTest(String user, String password, byte[]
file);
PARMETROS:
user: Usuario que va realizar la conexin
password: Contrasea del usuario que va realizar la conexin
file: Fichero con los datos del comprobante de retenciones electrnicas firmados por el usuario. Se
trata del XML con la informacin del comprobante de retenciones electrnicas, segn lo especificado
en el Anexo 20 de la Resolucin Miscelnea Fiscal de 2014 [1]. Puede enviarse tambin comprimido
en en formato ZIP. Dentro del mensaje SOAP, se enviarn los datos del fichero codificados en Base64
dentro del sobre de la llamada SOAP.
RESPUESTA:
Si el CFDI de retenciones electrnicas cumple con las validaciones especificadas anteriormente, se dar
respuesta al contribuyente incorporando un complemento sobre el documento. Este complemento incluye el
nmero de folio asignado por el SAT, fecha y hora de certificacin y sello digital del CFDI. Se adhiere igualmente
como parte del complemento el nmero de serie del certificado digital del SAT con el que se realiz del
certificacin del CFDI, y el sello del SAT.
Respuesta satisfactoria: En caso de que se haya realizado la firma digital, el servicio devolver un
documento comprimido en formato ZIP con el CFDI de retenciones electrnicas firmado con todos los
datos generados.
Respuesta de error: En caso de que haya algn error en el proceso de firma digital del CFDI de
retenciones electrnicas, devolver una excepcin que contendr un cdigo de error y un mensaje de
texto con el error producido. Ejemplos de este tipo de excepciones sera por ejemplo que el usuario no
se haya autentificado correctamente en el sistema, o que no se haya enviado el fichero ZIP con el CFDI
de retenciones electrnicas, o que el CFDI de retenciones electrnicas enviado no es correcto
sintcticamente segn el esquema del SAT.
EJEMPLOS
WSCFDI EDICOM | 2.Funciones | 46
WSCFDI EDICOM
Peticin SOAP:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:cfdi="http://cfdi.service.ediwinws.edicom.com">
<soapenv:Header/>
<soapenv:Body>
<cfdi:getCfdiRetencionesTest>
<cfdi:user>xxxxxx</cfdi:user>
<cfdi:password>xxxxxx</cfdi:password>
<cfdi:file>UEsDBBQAAAAIAOJkmD0CMccqxQcAAFUSAAAfAAAAc2luX3RpbWJyYXJfX1hN+
+NAgoBzSJWgV4cbALEKkAC6Q/8Kf6O+2MupJ4ZzWI7/OoYRaCSKrOyTh5OVeZvfwxFjp2jpk2r8m1CTok
y4Ti037j1s2nVxDhFECTuyJIRJFHhffVN/7vzp7RsO68MogkmV2UUem8T2VEmmJnWFeMVflqhZCZYEDVd
[...]
LPx2hwQfDj8YH5NQX5OlHyLeJYKNmrPNa1C2Qy59xh/9sq4/ZB2RfEvjSuv3+L1BLAQIUCxQAAAAIAOJk
mD0CMccqxQcAAFUSAAAfAAAAAAAAAAEAIAAAAAAAAABzaW5fdGltYnJhcl9fWE1MSW1wXzQ3MzIwOS54b
Wx+UEsFBgAAAAABAAEATQAAAAIIAAAAAA==</cfdi:file>
</cfdi:getCfdiRetencionesTest>
</soapenv:Body>
</soapenv:Envelope>
Nota: Los datos que aparecen en este ejemplo no son reales. El cdigo del fichero en
base64 ha sido resumido [...]
Respuesta SOAP:
El siguiente ejemplo es una respuesta de generacin de CFDi en test satisfactoria.
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<getCfdiRetencionesTestResponse
xmlns="http://cfdi.service.ediwinws.edicom.com">
WSCFDI EDICOM
<getCfdiRetencionesTestReturn>UEsDBBQACAAIANV9ND4AAAAAAAAAAAAAAAAjAAAAU0lHTl9zaW5
fdGltYnJhcl9fWE1MSW1wXzQ3MzIwOS54bWztWNly67gRfU9V/oGlp6RcFhctllzjmQJJUCTNRVy1vKS4
ifsikhIp/cF8Sr5jfiygZN/re8eZTB5TuayiYaEbjdONA3SDP/3S5xl2DuomLouXETkmRlhQeKUfF+HLy
DK
[...]
AAAAAAAAAAAAAAAAAAAAAU0lHTl9zaW5fdGltYnJhcl9fWE1MSW1wXzQ3MzIwOS54bWxQSwUGAAAAAAEA
AQBRAAAAPgkAAAAA</getCfdiRetencionesTestReturn>
</getCfdiRetencionesTestResponse>
</soapenv:Body>
</soapenv:Envelope>
Para ver una lista completa de los posibles cdigos de error y respuestas asociadas consultar el punto Lista de
Cdigos de Error.
TIMBRE
DEL
CFDI
DE
RETENCIONES
getTimbreCfdiRetencionesTest
Permite realizar el timbrado del comprobante de retenciones electrnicas firmado por el cliente en modo de
prueba y devuelve el timbre del comprobante de retenciones electrnicas timbrado. Se trata de una llamada de
TEST para poder hacer pruebas del funcionamiento del servicio.
Funciona exactamente igual que la funcin getTimbreCfdiRetenciones, pero en caso de que el CFDI de
retenciones electrnicas pase todas las validaciones que implementa el servicio, genera un CFDI de retenciones
electrnicas con un timbre no vlido, y no enva el comprobante de retenciones electrnicas al SAT.
WSCFDI EDICOM
La ejecucin de esta llamada no tiene en cuenta la limitaciones del servicio en produccin para poder ser mas
flexible a la hora de que se hagan las pruebas de conectividad con el webservice final. Validaciones omitidas en
el entorno de TEST:
No se validan las 72 horas de tiempo entre la fecha del comprobante y la generacin del timbre.
No se tiene en cuenta el documento enviado, por lo que al enviar varias veces el mismo documento se
generan distintos timbres de TEST.
Estas validaciones omitidas permiten que se puedan hacer pruebas de funcionamiento con un juego reducido
de comprobantes firmados sin necesidad de ir generando continuamente comprobantes timbrados.
LLAMADA:
public byte[] getTimbreCfdiRetencionesTest(String user, String password,
byte[] file);
PARMETROS:
file: Fichero con los datos del comprobante de retenciones electrnicas firmados por el usuario. Se trata
del XML con la informacin del comprobante de retenciones electrnicas, segn lo especificado en el
Anexo 20 de la Resolucin Miscelnea Fiscal de 2014 [1]. Puede enviarse tambin comprimido en en
formato ZIP. Dentro del mensaje SOAP, se enviarn los datos del fichero codificados en Base64 dentro del
sobre de la llamada SOAP.
RESPUESTA:
Si el CFDI de retenciones electrnicas cumple con las validaciones especificadas anteriormente, se dar
respuesta al contribuyente con el timbre de la firma digital. Este timbre incluye el nmero de folio asignado por
el SAT, fecha y hora de certificacin y sello digital del CFDI de retenciones electrnicas. Se adhiere igualmente
como parte del complemento el nmero de serie del certificado digital del SAT con el que se realiz del
certificacin del CFDI, y el sello del SAT.
Respuesta satisfactoria: En caso de que se haya realizado la firma digital, el servicio devolver un
documento comprimido en formato ZIP con el timbre del CFDI de retenciones electrnicas con todos
los datos generados.
Respuesta con error: En caso de que haya algn error en el proceso de firma digital del CFDI de
retenciones electrnicas, devolver una excepcin que contendr un cdigo de error y un mensaje de
texto con el error producido. Ejemplos de este tipo de excepciones sera por ejemplo que el usuario no
se haya autentificado correctamente en el sistema, o que no se haya enviado el fichero ZIP con el CFDI
de retenciones electrnicas, o que el CFDI de retenciones electrnicas enviado no es correcto
sintcticamente segn el esquema del SAT.
EJEMPLOS
Cdigo del cliente:
public byte[] getTimbreCfdiRetencionesTest(String user, String pass, byte[]
file) {
try {
cfdiService.getTimbreCfdiRetencionesTest(user, pass, file);
} catch (CFDiException CFDIe) {
WSCFDI EDICOM
CFDIe.printStackTrace();
System.out.println("CFDiExcepcion: " + CFDIe.getText());
} catch (RemoteException Re) {
Re.printStackTrace();
System.out.println("RemoteExcepcion: " + Re.toString());
} catch (Exception e) {
e.printStackTrace();
System.out.println("Exception: " + e.toString());
}
}
Peticin SOAP:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:cfdi="http://cfdi.service.ediwinws.edicom.com">
<soapenv:Header/>
<soapenv:Body>
<cfdi:getTimbreCfdiRetencionesTest>
<cfdi:user>xxxxxx</cfdi:user>
<cfdi:password>xxxxxx</cfdi:password>
<cfdi:file>UEsDBBQAAAAIAOJkmD0CMccqxQcAAFUSAAAfAAAAc2luX3RpbWJyYXJfX1hNTEltcF80Nz
MyMDkueG1sfu1W2ZKjyhF991cQerKjY8SipVsdt+NAgoBzSJWgV4cbALEKkAC6Q/8Kf6O+2MupJ4ZzWI7
/OoYRaCSKrOyTh5OVeZvfwxFjp2jpk2r8m1CTokqxQcAAFUSAAqxQcAAFUSAAqxQcAAFUSAA
[...]
JkmD0CMccqxQcAAFUSAAAfAAAAAAAAAAEAIAAAAAAAAABzaW5fdGltYnJhcl9fWE1MSW1wXzQ3MzIwOS5
4bWx+UEsFBgAAAAABAAEATQAAAAIIAAAAAA==
</cfdi:file>
</cfdi:getTimbreCfdiRetencionesTest>
</soapenv:Body>
</soapenv:Envelope>
Nota: Los datos que aparecen en este ejemplo no son reales. El cdigo del fichero en
base64 ha sido resumido [...]
Respuesta SOAP:
El siguiente ejemplo es una respuesta de generacin de timbre de CFDI de retenciones electrnicas en test
satisfactoria.
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<getTimbreCfdiRetencionesTestResponse
xmlns="http://cfdi.service.ediwinws.edicom.com">
<getTimbreCfdiRetencionesTestReturn>UEsDBBQACAAIANV9ND4AAAAAAAAAAAAAAAAjAAAAU0lHT
l9zaW5fdGltYnJhcl9fWE1MSW1wXzQ3MzIwOS54bWztWNly67gRfU9V/oGlp6RcFhctllzjmQJJUCTNRV
y1vKS4ifsikhIp/cF8Sr5jfiygZN/re8eZTB5TuayiYaEbjdONA3SDP/3S5xl2DuomLouXETkmRlhQeKU
fF
[...]
AAAAAAAAAAAAAAAAAAAAAU0lHTl9zaW5fdGltYnJhcl9fWE1MSW1wXzQ3MzIwOS54bWxQSwUGAAAAAAEA
AQBRAAAAPgkAAAAA</getTimbreCfdiRetencionesTestReturn>
WSCFDI EDICOM
</getTimbreCfdiRetencionesTestResponse>
</soapenv:Body>
</soapenv:Envelope>
Para ver una lista completa de los posibles cdigos de error y respuestas asociadas consultar el punto Lista de
Cdigos de Error.
LLAMADA:
public CancelaResponse cancelaCFDiRetenciones(String user, String password,
String rfc, String[] uuid, byte[] pfx, String pfxPassword);
PARMETROS:
WSCFDI EDICOM
uuid: Lista de uuids que identifican los CFDI de retenciones electrnicas que quiere cancelar el usuario.
pfx: Certificado del cliente que quiere cancelar los CFDI. Dentro del mensaje SOAP, se enviarn los datos
del fichero pfx codificados en Base64 dentro del sobre de la llamada SOAP.
PxfPassword: Password del certificado para poder realizar la firma de la peticin con el certificado del
usuario.
RESPUESTA:
Respuesta satisfactoria: En caso de que se haya realizado la cancelacin Satisfactoria de los
ack: Confirmacin que devuelve el servicio del SAT como que la peticin se ha realizado. Est
codificado en base 64 y contiene el acuse de recibo expedido por el SAT para la cancelacin.
Una vez decodificado, este acuse contiene el xml con la informacin de la peticin de
cancelacin solicitada al SAT por parte de EDICOM, incluyendo los cdigos de ejecucin del
servicio por parte del SAT especificados en el Anexo 20.
Respuesta con errores: En caso de que haya algn error en el proceso de cancelacin de los
Para ver una lista completa de los posibles cdigos de error y respuestas asociadas consultar el punto Lista de
Cdigos de Error.
EJEMPLOS
Cdigo del cliente:
public CancelaResponse cancelaCFDiRetenciones(String user, String pass, String
rfc, String[] uuid, byte[] pfx, Strind pfxPassword) {
CancelaResponse cancelaResponse = null;
try {
cancelaResponse = cfdiService.cancelaCFDiRetenciones(user, pass, rfc,
uuid, pfx, pfxPassword);
} catch (CFDiException CFDIe) {
CFDIe.printStackTrace();
System.out.println("CFDiExcepcion: " + CFDIe.getText());
} catch (RemoteException Re) {
Re.printStackTrace();
System.out.println("RemoteExcepcion: " + Re.toString());
} catch (Exception e) {
e.printStackTrace();
System.out.println("Exception: " + e.toString());
}return cancelaResponse;
}
WSCFDI EDICOM
Peticin SOAP:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:cfdi="http://cfdi.service.ediwinws.edicom.com">
<soapenv:Header/>
<soapenv:Body>
<cfdi:cancelaCFDiRetenciones>
<cfdi:user>xxxxxx</cfdi:user>
<cfdi:password>xxxxxx</cfdi:password>
<cfdi:rfc>RFC</cfdi:rfc>
<cfdi:uuid>UUID1</cfdi:uuid>
<cfdi:pfx>MIIJuQIBAzCCCX8GCSqGSIb3DQEHAaCCCXAEgglsMIIJaDCCBB8GCSqGSIb3DQEHBqCCBBA
wggQMAgEAMIIEBQYJKoZIhvcNAQcBMBwGCiqGSIb3DQEMAQYwDgQIkI0BwQTfWEQCAggAgIID2DzPnHdO
A4XWGeanHoCuRitvCJJecEBSkqvg8ohliY7IiVp8qF3agvOqt32kbEDXHfrLpVVhlPnjrZo4
[...]
Hzl11kfETcJiuMUNa5hOx5CiB2WqAg/tV9MDOdUZEkN4E+N9xxSxPAkSw75RvvVfRPW4JFXbmfs7c230a
PodMQP58PfaJilI/Nm8cvAQXIEwRugMSUwIwYJKoZIhvcNAQkVMRYEFBlCuYgPj26y+M2HK9s6Tpe2Jmg
CMDEwITAJBgUrDgMCGgUABBSz8OKBcbpiR69Tw0UJ1d1D2xW0EQQIar9uSxM7uToCAggA</cfdi:pfx>
<cfdi:pfxPassword>qwertyuio</cfdi:pfxPassword>
</cfdi:cancelaCFDiRetenciones>
</soapenv:Body>
</soapenv:Envelope>
Nota: Los datos que aparecen en este ejemplo no son reales. El cdigo del fichero en
base64 ha sido resumido [...]
Respuesta SOAP:
Ejemplo de una respuesta de cancelacin de comprobantes de retenciones electrnicas satisfactoria.
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<cancelaCFDiRetencionesResponse
xmlns="http://cfdi.service.ediwinws.edicom.com">
<cancelaCFDiRetencionesReturn>
<ack>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48czpFbnZlbG9wZSB4bWxuczpz
PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VudmVsb3BlLyI+PHM6Qm9keT48Q2FuY2VsY
UNGRFJlc3BvbnNlIHhtbG5zPSJodHRwOi8vdGVtcHVyaS5vcmcvIj48Q2FuY2VsYUNGRF
[...]
+PC9hOkFjdXNlRm9saW9zPjwvYTpGb2xpb3M+PGE6U2VsbG9TQVQgaTpuaWw9InRydWUiLz48YTpyZmNF
bWlzb3I+U0FULTI4MDkxMC0wMDE8L2E6cmZjRW1pc29yPjwvQ2FuY2VsYUNGRFJlc3VsdD48L0NhbmNlb
GFDRkRSZXNwb25zZT48L3M6Qm9keT48L3M6RW52ZWxvcGU+</ack>
<text>1c550dd7-2209-4c45-acdf
-b86b6cf3723e~PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48czpFbnZlbG9wZSB
4bWxuczpzPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VudmVsb3BlLyI+PHM6Qm9keT4Q
[...]
hOkFjdXNlRm9saW9zPjwvYTpGb2xpb3M+PGE6U2VsbG9TQVQgaTpuaWw9InRydWUiLz48YTpyZmNFbWlz
b3I+U0FULTI4MDkxMC0wMDE8L2E6cmZjRW1pc29yPjwvQ2FuY2VsYUNGRFJlc3VsdD48L0NhbmNlbGFDR
kRSZXNwb25zZT48L3M6Qm9keT48L3M6RW52ZWxvcGU+</text>
<uuids>
<uuids>1c550dd7-2209-4c45-acdf-b86b6cf3723e</uuids>
</uuids>
WSCFDI EDICOM
</cancelaCFDiRetencionesReturn>
</cancelaCFDiRetencionesResponse>
</soapenv:Body>
</soapenv:Envelope>
Para ver una lista completa de los posibles cdigos de error y respuestas asociadas consultar el punto Lista de
Cdigos de Error.
CONSIDERACIONES IMPORTANTES
Timeout de la llamada de esta funcin
Hay que tener en cuenta que el proceso de cancelacin depende directamente del proceso de cancelacin del
SAT. Por tanto, el tiempo de respuesta de esta funcin no depende del servicio de cancelacin de EDICOM, sino
que depende directamente del tiempo de proceso de los servidores del SAT. Este proceso no es tan inmediato
como el tiempo de generacin del timbrado, por lo que es necesario que se utilice un timeout considerable para
estas peticiones de cancelacin.
Por defecto, los clientes de webservice suelen tener un timeout de 30 segundos, que puede llegar a ser
insuficiente para la correcta ejecucin de esta funcin. Se recomienda utilizar para esta llamada un timeout no
inferior a 2 minutos para evitar que venza la llamada por timeout y se pierda la respuesta de la peticin del
servicio.
Gestin de errores.
En la ejecucin de esta llamada hay que distinguir correctamente los cdigos de error que genera el servicio de
cancelacin de EDICOM y los cdigos de validacin que devuelve el SAT en el acuse de recibo.
La respuesta errnea del servicio de EDICOM, como se puede ver en el ejemplo anterior, devuelve un objeto
soapenv:Fault en la respuesta del servicio. Este objeto contiene un objeto ns1:cod con el cdigo de error que
proporciona EDICOM para la ejecucin del servicio.
WSCFDI EDICOM
La respuesta que devuelve el SAT est contenida dentro de la respuesta correcta del servicio de EDICOM. Ms
concretamente en el objeto ack dentro del cancelaCFDiReturn. Dentro de este acuse de recibo se encuentran
los cdigos de ejecucin de la cancelacin del comprobante por parte del SAT. Estos cdigos de ejecucin del
SAT estn contemplados en el Anexo 20.
WSCFDI EDICOM
</uuids>
</cancelaCFDiRetencionesReturn>
</cancelaCFDiRetencionesResponse>
</soapenv:Body>
</soapenv:Envelope>
Ambos cdigos son totalmente independientes, y no deben confundirse ya que corresponden a cdigos de
EDICOM y del SAT respectivamente.
LLAMADA:
public CancelaResponse cancelaCFDiRetencionesSigned(String user, String
password, byte[] sign);
PARMETROS:
user: Usuario que va realizar la conexin.
password: Contrasea del usuario que va realizar la conexin.
sign: Peticin de cancelacin de comprobantes de retenciones electrnicas firmada por el propio
cliente. Dentro del mensaje SOAP, se enviarn los datos de la cancelacin codificados en Base64
dentro del sobre de la llamada SOAP.
RESPUESTA:
Respuesta satisfactoria: En caso de que se haya realizado la cancelacin satisfactoria de los
peticin.
ack: Confirmacin que devuelve el servicio del SAT como que la peticin se ha realizado. Est
codificado en base 64 y contiene el acuse de recibo expedido por el SAT para la cancelacin.
Una vez decodificado, este acuse contiene el xml con la informacin de la peticin de
cancelacin solicitada al SAT por parte de EDICOM, incluyendo los cdigos de ejecucin del
servicio por parte del SAT especificados en el Anexo 20.
Respuesta con errores: En caso de que haya algn error en el proceso de cancelacin de los
WSCFDI EDICOM
EJEMPLOS
Cdigo del cliente:
public CancelaResponse cancelaCFDiRetencionesSigned(String user, String pass,
byte[] sign) {
CancelaResponse cancelaResponse = null;
try {
cancelaResponse = cfdiService.cancelaCFDiRetencionesSigned(user,
pass, sign);
} catch (CFDiException CFDIe) {
CFDIe.printStackTrace();
System.out.println("CFDiExcepcion: " + CFDIe.getText());
} catch (RemoteException Re) {
Re.printStackTrace();
System.out.println("RemoteExcepcion: " + Re.toString());
} catch (Exception e) {
e.printStackTrace();
System.out.println("Exception: " + e.toString());
}
return cancelaResponse;
}
Peticin SOAP:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:cfdi="http://cfdi.service.ediwinws.edicom.com">
<soapenv:Header/>
<soapenv:Body>
<cfdi:cancelaCFDiRetencionesSigned>
<cfdi:user>xxxxxx</cfdi:user>
<cfdi:password>xxxxxx</cfdi:password>
<cfdi:sign>PENhbmNlbGFjaW9uIEZlY2hhPSIyMDExLTA3LTEzVDE3OjIzOjQ0LjU4OVoiIFJmY0VtaX
Nvcj0iWlVOMTAwNjIzNjYzIiB4bWxucz0iaHR0cDovL2NhbmNlbGFjZmQuc2F0LmdvYi5teCIgeG1sbnM
6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHR[...]
rS3FtdU1vTU9QaVcyYWQ1cEF3UlpKL0JBcmMrODBqTWNWZ1VkNEtSdVdMOG4vc05jNUhsTEd5Q3RvMTRZ
UXhHUDkwdkNiV2xlUT09PC9YNTA5Q2VydGlmaWNhdGU+PC9YNTA5RGF0YT48L0tleUluZm8+PC9TaWduY
XR1cmU+PC9DYW5jZWxhY2lvbj4=</cfdi:sign>
</cfdi:cancelaCFDiRetencionesSigned>
</soapenv:Body>
</soapenv:Envelope>
Nota: Los datos que aparecen en este ejemplo no son reales. El cdigo del fichero en
base64 ha sido resumido [...]
Respuesta SOAP:
Ejemplo de una respuesta de cancelacin de comprobantes de retenciones electrnicas firmada satisfactoria.
WSCFDI EDICOM | 2.Funciones | 57
WSCFDI EDICOM
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<cancelaCFDiRetencionesSignedResponse
xmlns="http://cfdi.service.ediwinws.edicom.com">
<cancelaCFDiRetencionesSignedReturn>
<ack>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48czpFbnZlbG9wZSB4bWxuczpz
PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VudmVsb3BlLyI+PHM6Qm9keT48Q2FuY2VsY
UNGRFJlc3BvbnNlIHhtbG5zPSJodHRwOi8vdGVtcHVyaS5vcmcvIj48Q2FuY2VsYUNGRF
[...]
+PC9hOkFjdXNlRm9saW9zPjwvYTpGb2xpb3M+PGE6U2VsbG9TQVQgaTpuaWw9InRydWUiLz48YTpyZmNF
bWlzb3I+U0FULTI4MDkxMC0wMDE8L2E6cmZjRW1pc29yPjwvQ2FuY2VsYUNGRFJlc3VsdD48L0NhbmNlb
GFDRkRSZXNwb25zZT48L3M6Qm9keT48L3M6RW52ZWxvcGU+</ack>
<text>1c550dd7-2209-4c45-acdf
-b86b6cf3723e~PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48czpFbnZlbG9wZSB
4bWxuczpzPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VudmVsb3BlLyI+PHM6Qm9keT4Q
[...]
hOkFjdXNlRm9saW9zPjwvYTpGb2xpb3M+PGE6U2VsbG9TQVQgaTpuaWw9InRydWUiLz48YTpyZmNFbWlz
b3I+U0FULTI4MDkxMC0wMDE8L2E6cmZjRW1pc29yPjwvQ2FuY2VsYUNGRFJlc3VsdD48L0NhbmNlbGFDR
kRSZXNwb25zZT48L3M6Qm9keT48L3M6RW52ZWxvcGU+</text>
<uuids>
<uuids>1c550dd7-2209-4c45-acdf-b86b6cf3723e</uuids>
</uuids>
</cancelaCFDiRetencionesSignedReturn>
</cancelaCFDiRetencionesSignedResponse>
</soapenv:Body>
</soapenv:Envelope>
Nota: Para ver una lista completa de los posibles cdigos de error y respuestas asociadas
consultar el punto Lista de Cdigos de Error.
WSCFDI EDICOM
CONSIDERACIONES IMPORTANTES
Timeout de la llamada de esta funcin
Hay que tener en cuenta que el proceso de cancelacin depende directamente del proceso de cancelacin del
SAT. Por tanto, el tiempo de respuesta de esta funcin no depende del servicio de cancelacin de EDICOM, sino
que depende directamente del tiempo de proceso de los servidores del SAT. Este proceso no es tan inmediato
como e tiempo de generacin del timbrado, por lo que es necesario que se utilice un timeout considerable para
estas peticiones de cancelacin.
Por defecto, los clientes de webservice suelen tener un timeout de 30 segundos, que puede llegar a ser
insuficiente para la correcta ejecucin de esta funcin. Se recomienda utilizar para esta llamada un timeout no
inferior a 2 minutos para evitar que venza la llamada por timeout y se pierda la respuesta de la peticin del
servicio.
Gestin de errores.
En la ejecucin de esta llamada hay que distinguir correctamente los cdigos de error que genera el servicio de
cancelacin de EDICOM y los cdigos de validacin que devuelve el SAT en el acuse de recibo.
La respuesta errnea del servicio de EDICOM, como se puede ver en el ejemplo anterior, devuelve un objeto
soapenv:Fault en la respuesta del servicio. Este objeto contiene un objeto ns1:cod con el cdigo de error que
proporciona EDICOM para la ejecucin del servicio.
La respuesta que devuelve el SAT est contenida dentro de la respuesta correcta del servicio de EDICOM. Ms
concretamente en el objeto ack dentro del cancelaCFDiReturn. Dentro de este acuse de recibo se encuentran
los cdigos de ejecucin de la cancelacin del comprobante por parte del SAT. Estos cdigos de ejecucin del
SAT estn contemplados en el Anexo 20.
WSCFDI EDICOM
Ambos cdigos son totalmente independientes, y no deben confundirse ya que corresponden a cdigos de
EDICOM y del SAT respectivamente.
WSCFDI EDICOM
Error
301
El comprobante no cumple con el estndar XML (Conforme al W3C) o con la estructura XML (XSD y
complementos aplicables).
302
Error al verificar la firma del documento <referencia>. El CFDi fue firmado de manera incorrecta.
303
El CSD del emisor no corresponde al RFC que viene como emisor en el comprobante.
304
305
306
307
El documento <referencia> ya ha sido timbrado previamente por algn PAC con UUID <uuid>.
308
El CSD del emisor no ha sido firmado por un certificado de autoridad del SAT.
401
No puede firmarse el documento <referencia> con fecha <fecha>. Han pasado ms de 72 horas
desde su generacin.
402
Error al verificar la firma del documento <referencia>. El CFDi fue firmado de manera incorrecta.
El RFC <emisorRfc> no est autorizado a firmar (segn LCO).
403
WSCFDI EDICOM
Error
200
201
202
203
204
300
Se han producido errores al ejecutar el servicio de CFDi. Compruebe que el documento a firmar
sea correcto.
404
WSCFDI EDICOM
4. ANEXO: WSDL
4.1. WSDL WEBSERVICE CFDI
El contenido del WSDL del servicio es el siguiente:
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions
targetNamespace="http://cfdi.service.ediwinws.edicom.com"
xmlns:apachesoap="http://xml.apache.org/xml-soap"
xmlns:impl="http://cfdi.service.ediwinws.edicom.com"
xmlns:intf="http://cfdi.service.ediwinws.edicom.com"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<!--WSDL created by Apache Axis version: 1.4
Built on Apr 22, 2006 (06:55:48 PDT)-->
<wsdl:types>
<schema elementFormDefault="qualified"
targetNamespace="http://cfdi.service.ediwinws.edicom.com"
xmlns="http://www.w3.org/2001/XMLSchema">
<element name="getUUID">
<complexType>
<sequence>
<element name="user" type="xsd:string"/>
<element name="password" type="xsd:string"/>
<element name="file" type="xsd:base64Binary"/>
</sequence>
</complexType>
</element>
<element name="getUUIDResponse">
<complexType>
<sequence>
<element name="getUUIDReturn" type="xsd:string"/>
</sequence>
</complexType>
</element>
<complexType name="CFDiException">
<sequence>
<element name="cod" type="xsd:int"/>
<element name="text" nillable="true" type="xsd:string"/>
</sequence>
</complexType>
<element name="fault" type="impl:CFDiException"/>
<element name="changePassword">
<complexType>
<sequence>
<element name="user" type="xsd:string"/>
<element name="password" type="xsd:string"/>
WSCFDI EDICOM | 4.Anexo: WSDL | 63
WSCFDI EDICOM
WSCFDI EDICOM
WSCFDI EDICOM
WSCFDI EDICOM
<element name="getUUIDTest">
<complexType>
<sequence>
<element name="user" type="xsd:string"/>
<element name="password" type="xsd:string"/>
<element name="file" type="xsd:base64Binary"/>
</sequence>
</complexType>
</element>
<element name="getUUIDTestResponse">
<complexType>
<sequence>
<element name="getUUIDTestReturn" type="xsd:string"/>
</sequence>
</complexType>
</element>
<element name="getTimbreCfdi">
<complexType>
<sequence>
<element name="user" type="xsd:string"/>
<element name="password" type="xsd:string"/>
<element name="file" type="xsd:base64Binary"/>
</sequence>
</complexType>
</element>
<element name="getTimbreCfdiResponse">
<complexType>
<sequence>
<element name="getTimbreCfdiReturn" type="xsd:base64Binary"/>
</sequence>
</complexType>
</element>
<element name="getCfdiTest">
<complexType>
<sequence>
<element name="user" type="xsd:string"/>
<element name="password" type="xsd:string"/>
<element name="file" type="xsd:base64Binary"/>
</sequence>
</complexType>
</element>
<element name="getCfdiTestResponse">
<complexType>
<sequence>
<element name="getCfdiTestReturn" type="xsd:base64Binary"/>
</sequence>
</complexType>
</element>
<element name="cancelaCFDi">
WSCFDI EDICOM | 4.Anexo: WSDL | 67
WSCFDI EDICOM
<complexType>
<sequence>
<element name="user" type="xsd:string"/>
<element name="password" type="xsd:string"/>
<element name="rfc" type="xsd:string"/>
<element maxOccurs="unbounded" name="uuid" type="xsd:string"/>
<element name="pfx" type="xsd:base64Binary"/>
<element name="pfxPassword" type="xsd:string"/>
</sequence>
</complexType>
</element>
<element name="cancelaCFDiResponse">
<complexType>
<sequence>
<element name="cancelaCFDiReturn"
type="impl:CancelaResponse"/>
</sequence>
</complexType>
</element>
<element name="getTimbreCfdiRetenciones">
<complexType>
<sequence>
<element name="user" type="xsd:string"/>
<element name="password" type="xsd:string"/>
<element name="file" type="xsd:base64Binary"/>
</sequence>
</complexType>
</element>
<element name="getTimbreCfdiRetencionesResponse">
<complexType>
<sequence>
<element name="getTimbreCfdiRetencionesReturn"
type="xsd:base64Binary"/>
</sequence>
</complexType>
</element>
<element name="cancelaCFDiSigned">
<complexType>
<sequence>
<element name="user" type="xsd:string"/>
<element name="password" type="xsd:string"/>
<element name="sign" type="xsd:base64Binary"/>
</sequence>
</complexType>
</element>
<element name="cancelaCFDiSignedResponse">
<complexType>
<sequence>
WSCFDI EDICOM
<element name="cancelaCFDiSignedReturn"
type="impl:CancelaResponse"/>
</sequence>
</complexType>
</element>
<element name="getCfdiRetenciones">
<complexType>
<sequence>
<element name="user" type="xsd:string"/>
<element name="password" type="xsd:string"/>
<element name="file" type="xsd:base64Binary"/>
</sequence>
</complexType>
</element>
<element name="getCfdiRetencionesResponse">
<complexType>
<sequence>
<element name="getCfdiRetencionesReturn"
type="xsd:base64Binary"/>
</sequence>
</complexType>
</element>
<element name="getCfdiFromUUID">
<complexType>
<sequence>
<element name="user" type="xsd:string"/>
<element name="password" type="xsd:string"/>
<element name="rfc" type="xsd:string"/>
<element maxOccurs="unbounded" name="uuid" type="xsd:string"/>
</sequence>
</complexType>
</element>
<element name="getCfdiFromUUIDResponse">
<complexType>
<sequence>
<element name="getCfdiFromUUIDReturn"
type="xsd:base64Binary"/>
</sequence>
</complexType>
</element>
<element name="getCfdiAck">
<complexType>
<sequence>
<element name="user" type="xsd:string"/>
<element name="password" type="xsd:string"/>
<element maxOccurs="unbounded" name="uuid" type="xsd:string"/>
</sequence>
</complexType>
</element>
WSCFDI EDICOM
<element name="getCfdiAckResponse">
<complexType>
<sequence>
<element name="getCfdiAckReturn" type="xsd:base64Binary"/>
</sequence>
</complexType>
</element>
</schema>
</wsdl:types>
<wsdl:message name="getTimbreCfdiTestResponse">
<wsdl:part element="impl:getTimbreCfdiTestResponse"
name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="cancelaCFDiRetencionesResponse">
<wsdl:part element="impl:cancelaCFDiRetencionesResponse"
name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getCfdiFromUUIDResponse">
<wsdl:part element="impl:getCfdiFromUUIDResponse"
name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getUUIDResponse">
<wsdl:part element="impl:getUUIDResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getTimbreCfdiRetencionesResponse">
<wsdl:part element="impl:getTimbreCfdiRetencionesResponse"
name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getCfdiResponse">
<wsdl:part element="impl:getCfdiResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getCfdiTestResponse">
<wsdl:part element="impl:getCfdiTestResponse"
name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getTimbreCfdiTestRequest">
<wsdl:part element="impl:getTimbreCfdiTest" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getUUIDRequest">
<wsdl:part element="impl:getUUID" name="parameters">
</wsdl:part>
WSCFDI EDICOM
</wsdl:message>
<wsdl:message name="cancelaCFDiSignedRequest">
<wsdl:part element="impl:cancelaCFDiSigned" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getTimbreCfdiRequest">
<wsdl:part element="impl:getTimbreCfdi" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="cancelaCFDiSignedResponse">
<wsdl:part element="impl:cancelaCFDiSignedResponse"
name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getCfdiRetencionesTestRequest">
<wsdl:part element="impl:getCfdiRetencionesTest"
name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="cancelaCFDiResponse">
<wsdl:part element="impl:cancelaCFDiResponse"
name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getTimbreCfdiResponse">
<wsdl:part element="impl:getTimbreCfdiResponse"
name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getCfdiTestRequest">
<wsdl:part element="impl:getCfdiTest" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getUUIDTestResponse">
<wsdl:part element="impl:getUUIDTestResponse"
name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="changePasswordRequest">
<wsdl:part element="impl:changePassword" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="exportCfdiRequest">
<wsdl:part element="impl:exportCfdi" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getTimbreCfdiRetencionesRequest">
<wsdl:part element="impl:getTimbreCfdiRetenciones"
name="parameters">
</wsdl:part>
WSCFDI EDICOM | 4.Anexo: WSDL | 71
WSCFDI EDICOM
</wsdl:message>
<wsdl:message name="cancelaCFDiRetencionesSignedRequest">
<wsdl:part element="impl:cancelaCFDiRetencionesSigned"
name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="cancelaCFDiRetencionesRequest">
<wsdl:part element="impl:cancelaCFDiRetenciones"
name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="CFDiException">
<wsdl:part element="impl:fault" name="fault">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getUUIDTestRequest">
<wsdl:part element="impl:getUUIDTest" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="cancelaCFDiRequest">
<wsdl:part element="impl:cancelaCFDi" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getCfdiRetencionesTestResponse">
<wsdl:part element="impl:getCfdiRetencionesTestResponse"
name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getCfdiAckResponse">
<wsdl:part element="impl:getCfdiAckResponse"
name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getCfdiAckRequest">
<wsdl:part element="impl:getCfdiAck" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getCfdiRetencionesResponse">
<wsdl:part element="impl:getCfdiRetencionesResponse"
name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="exportCfdiResponse">
<wsdl:part element="impl:exportCfdiResponse" ame="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getCfdiRequest">
<wsdl:part element="impl:getCfdi" name="parameters">
</wsdl:part>
WSCFDI EDICOM
</wsdl:message>
<wsdl:message name="getCfdiFromUUIDRequest">
<wsdl:part element="impl:getCfdiFromUUID" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getCfdiRetencionesRequest">
<wsdl:part element="impl:getCfdiRetenciones"
name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="changePasswordResponse">
<wsdl:part element="impl:changePasswordResponse"
name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getTimbreCfdiRetencionesTestRequest">
<wsdl:part element="impl:getTimbreCfdiRetencionesTest"
name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getTimbreCfdiRetencionesTestResponse">
<wsdl:part element="impl:getTimbreCfdiRetencionesTestResponse"
name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="cancelaCFDiRetencionesSignedResponse">
<wsdl:part element="impl:cancelaCFDiRetencionesSignedResponse"
name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:portType name="CFDi">
<wsdl:operation name="getUUID">
<wsdl:input message="impl:getUUIDRequest"
name="getUUIDRequest">
</wsdl:input>
<wsdl:output message="impl:getUUIDResponse"
name="getUUIDResponse">
</wsdl:output>
<wsdl:fault message="impl:CFDiException"
name="CFDiException">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="changePassword">
<wsdl:input message="impl:changePasswordRequest"
name="changePasswordRequest">
</wsdl:input>
<wsdl:output message="impl:changePasswordResponse"
name="changePasswordResponse">
</wsdl:output>
WSCFDI EDICOM
<wsdl:fault message="impl:CFDiException"
name="CFDiException">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getTimbreCfdiRetencionesTest">
<wsdl:input
message="impl:getTimbreCfdiRetencionesTestRequest"
name="getTimbreCfdiRetencionesTestRequest">
</wsdl:input>
<wsdl:output
message="impl:getTimbreCfdiRetencionesTestResponse"
name="getTimbreCfdiRetencionesTestResponse">
</wsdl:output>
<wsdl:fault message="impl:CFDiException"
name="CFDiException">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getCfdi">
<wsdl:input message="impl:getCfdiRequest"
name="getCfdiRequest">
</wsdl:input>
<wsdl:output message="impl:getCfdiResponse"
name="getCfdiResponse">
</wsdl:output>
<wsdl:fault message="impl:CFDiException"
name="CFDiException">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getTimbreCfdiTest">
<wsdl:input message="impl:getTimbreCfdiTestRequest"
name="getTimbreCfdiTestRequest">
</wsdl:input>
<wsdl:output message="impl:getTimbreCfdiTestResponse"
name="getTimbreCfdiTestResponse">
</wsdl:output>
<wsdl:fault message="impl:CFDiException"
name="CFDiException">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="cancelaCFDiRetenciones">
<wsdl:input message="impl:cancelaCFDiRetencionesRequest"
name="cancelaCFDiRetencionesRequest">
</wsdl:input>
<wsdl:output message="impl:cancelaCFDiRetencionesResponse"
name="cancelaCFDiRetencionesResponse">
</wsdl:output>
<wsdl:fault message="impl:CFDiException"
name="CFDiException">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getCfdiRetencionesTest">
WSCFDI EDICOM
<wsdl:input message="impl:getCfdiRetencionesTestRequest"
name="getCfdiRetencionesTestRequest">
</wsdl:input>
<wsdl:output message="impl:getCfdiRetencionesTestResponse"
name="getCfdiRetencionesTestResponse">
</wsdl:output>
<wsdl:fault message="impl:CFDiException"
name="CFDiException">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="cancelaCFDiRetencionesSigned">
<wsdl:input
message="impl:cancelaCFDiRetencionesSignedRequest"
name="cancelaCFDiRetencionesSignedRequest">
</wsdl:input>
<wsdl:output
message="impl:cancelaCFDiRetencionesSignedResponse"
name="cancelaCFDiRetencionesSignedResponse">
</wsdl:output>
<wsdl:fault message="impl:CFDiException"
name="CFDiException">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="exportCfdi">
<wsdl:input message="impl:exportCfdiRequest"
name="exportCfdiRequest">
</wsdl:input>
<wsdl:output message="impl:exportCfdiResponse"
name="exportCfdiResponse">
</wsdl:output>
<wsdl:fault message="impl:CFDiException"
name="CFDiException">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getUUIDTest">
<wsdl:input message="impl:getUUIDTestRequest"
name="getUUIDTestRequest">
</wsdl:input>
<wsdl:output message="impl:getUUIDTestResponse"
name="getUUIDTestResponse">
</wsdl:output>
<wsdl:fault message="impl:CFDiException"
name="CFDiException">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getTimbreCfdi">
<wsdl:input message="impl:getTimbreCfdiRequest"
name="getTimbreCfdiRequest">
</wsdl:input>
<wsdl:output message="impl:getTimbreCfdiResponse"
name="getTimbreCfdiResponse">
</wsdl:output>
WSCFDI EDICOM | 4.Anexo: WSDL | 75
WSCFDI EDICOM
<wsdl:fault message="impl:CFDiException"
name="CFDiException">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getCfdiTest">
<wsdl:input message="impl:getCfdiTestRequest"
name="getCfdiTestRequest">
</wsdl:input>
<wsdl:output message="impl:getCfdiTestResponse"
name="getCfdiTestResponse">
</wsdl:output>
<wsdl:fault message="impl:CFDiException"
name="CFDiException">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="cancelaCFDi">
<wsdl:input message="impl:cancelaCFDiRequest"
name="cancelaCFDiRequest">
</wsdl:input>
<wsdl:output message="impl:cancelaCFDiResponse"
name="cancelaCFDiResponse">
</wsdl:output>
<wsdl:fault message="impl:CFDiException"
name="CFDiException">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getTimbreCfdiRetenciones">
<wsdl:input message="impl:getTimbreCfdiRetencionesRequest"
name="getTimbreCfdiRetencionesRequest">
</wsdl:input>
<wsdl:output
message="impl:getTimbreCfdiRetencionesResponse"
name="getTimbreCfdiRetencionesResponse">
</wsdl:output>
<wsdl:fault message="impl:CFDiException"
name="CFDiException">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="cancelaCFDiSigned">
<wsdl:input message="impl:cancelaCFDiSignedRequest"
name="cancelaCFDiSignedRequest">
</wsdl:input>
<wsdl:output message="impl:cancelaCFDiSignedResponse"
name="cancelaCFDiSignedResponse">
</wsdl:output>
<wsdl:fault message="impl:CFDiException"
name="CFDiException">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getCfdiRetenciones">
WSCFDI EDICOM
<wsdl:input message="impl:getCfdiRetencionesRequest"
name="getCfdiRetencionesRequest">
</wsdl:input>
<wsdl:output message="impl:getCfdiRetencionesResponse"
name="getCfdiRetencionesResponse">
</wsdl:output>
<wsdl:fault message="impl:CFDiException"
name="CFDiException">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getCfdiFromUUID">
<wsdl:input message="impl:getCfdiFromUUIDRequest"
name="getCfdiFromUUIDRequest">
</wsdl:input>
<wsdl:output message="impl:getCfdiFromUUIDResponse"
name="getCfdiFromUUIDResponse">
</wsdl:output>
<wsdl:fault message="impl:CFDiException"
name="CFDiException">
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getCfdiAck">
<wsdl:input message="impl:getCfdiAckRequest"
name="getCfdiAckRequest">
</wsdl:input>
<wsdl:output message="impl:getCfdiAckResponse"
name="getCfdiAckResponse">
</wsdl:output>
<wsdl:fault message="impl:CFDiException"
name="CFDiException">
</wsdl:fault>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="CFDiSoapBinding" type="impl:CFDi">
<wsdlsoap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="getUUID">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="getUUIDRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="getUUIDResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="CFDiException">
<wsdlsoap:fault name="CFDiException" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="changePassword">
<wsdlsoap:operation soapAction=""/>
WSCFDI EDICOM
<wsdl:input name="changePasswordRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="changePasswordResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="CFDiException">
<wsdlsoap:fault name="CFDiException" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getTimbreCfdiRetencionesTest">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="getTimbreCfdiRetencionesTestRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="getTimbreCfdiRetencionesTestResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="CFDiException">
<wsdlsoap:fault name="CFDiException" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getCfdi">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="getCfdiRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="getCfdiResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="CFDiException">
<wsdlsoap:fault name="CFDiException" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getTimbreCfdiTest">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="getTimbreCfdiTestRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="getTimbreCfdiTestResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="CFDiException">
<wsdlsoap:fault name="CFDiException" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="cancelaCFDiRetenciones">
<wsdlsoap:operation soapAction=""/>
WSCFDI EDICOM
<wsdl:input name="cancelaCFDiRetencionesRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="cancelaCFDiRetencionesResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="CFDiException">
<wsdlsoap:fault name="CFDiException" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getCfdiRetencionesTest">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="getCfdiRetencionesTestRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="getCfdiRetencionesTestResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="CFDiException">
<wsdlsoap:fault name="CFDiException" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="cancelaCFDiRetencionesSigned">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="cancelaCFDiRetencionesSignedRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="cancelaCFDiRetencionesSignedResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="CFDiException">
<wsdlsoap:fault name="CFDiException" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="exportCfdi">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="exportCfdiRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="exportCfdiResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="CFDiException">
<wsdlsoap:fault name="CFDiException" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getUUIDTest">
<wsdlsoap:operation soapAction=""/>
WSCFDI EDICOM
<wsdl:input name="getUUIDTestRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="getUUIDTestResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="CFDiException">
<wsdlsoap:fault name="CFDiException" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getTimbreCfdi">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="getTimbreCfdiRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="getTimbreCfdiResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="CFDiException">
<wsdlsoap:fault name="CFDiException" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getCfdiTest">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="getCfdiTestRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="getCfdiTestResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="CFDiException">
<wsdlsoap:fault name="CFDiException" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="cancelaCFDi">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="cancelaCFDiRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="cancelaCFDiResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="CFDiException">
<wsdlsoap:fault name="CFDiException" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getTimbreCfdiRetenciones">
<wsdlsoap:operation soapAction=""/>
WSCFDI EDICOM
<wsdl:input name="getTimbreCfdiRetencionesRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="getTimbreCfdiRetencionesResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="CFDiException">
<wsdlsoap:fault name="CFDiException" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="cancelaCFDiSigned">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="cancelaCFDiSignedRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="cancelaCFDiSignedResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="CFDiException">
<wsdlsoap:fault name="CFDiException" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getCfdiRetenciones">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="getCfdiRetencionesRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="getCfdiRetencionesResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="CFDiException">
<wsdlsoap:fault name="CFDiException" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getCfdiFromUUID">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="getCfdiFromUUIDRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="getCfdiFromUUIDResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="CFDiException">
<wsdlsoap:fault name="CFDiException" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getCfdiAck">
<wsdlsoap:operation soapAction=""/>
WSCFDI EDICOM
<wsdl:input name="getCfdiAckRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="getCfdiAckResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="CFDiException">
<wsdlsoap:fault name="CFDiException" use="literal"/>
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="CFDiService">
<wsdl:port binding="impl:CFDiSoapBinding" name="CFDi">
<wsdlsoap:address
location="https://cfdiws.sedeb2b.com/EdiwinWS/services/CFDi"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
Para acceder a la ltima versin de la WSDL a travs de Internet:
https://cfdiws.sedeb2b.com/EdiwinWS/services/CFDi?wsdl