Sunteți pe pagina 1din 82

Web Service CFDi

Gua de Usuario

WSCFDI EDICOM

Ttulo del documento:

WSCFDI EDICOM

Nombre del fichero:

ES WebService CFDi Gua de usuario.odt

Versin:

1.9

Estado:

REVISADO

Fecha:

04/12/2014

Autor:

Oscar Albert Arcas

Revisin, Aprobacin
Revisado por:

Oscar Albert Arcas

Fecha: 19/10/2011

Aprobado por:

Francisco Belda Escamilla

Fecha: 19/10/2011

Historial de cambios
Versin

Fecha

Descripcin de la accin

Pginas

1.0

21/01/2011

Versin inicial WSCFDi

Todas

1.1

18/02/2011

Corregido referencias equivocas a CFD en al 4, 5,8.,15,18


descripcin de las funciones.

1.2

17/03/2011

El ws permite ahora enviar ZIP o XML en el


parmetro file

5, 8, 15, 18

1.3

12/07/2011

Correccin. Se modifica el ejemplo de la


respuesta SOAP de getTimbreCfdi

9,10

1.4

10/08/2011

Nuevas funciones getUUID y getUUIDTest


Correccin. Se corrigen los cdigos de error
de la cancelacin de comprobantes

2, 6, 23-28, 30

1.5

19/10/2011

Nuevas funciones CancelaCFDISgined,


getCFDIAck y getCFDIFromUUID.
se modifica la WSDL incluida en el
documento

27-32

1.6

08/10/2013

Nuevas consideraciones de las funciones


getCfdiTest, getTimbreCfdiTest, getUUID y
getUUIDTest

18, 21, 24 y 26

1.7

11/02/2014

Nuevas consideraciones de funcionamiento


y cdigos de errores de las funciones
cancelaCfdi y cancelaCfdiSigned

14, 17, 18, 32, 34, 35 y 36

1.8

04/12/2014

Servicio de timbrado de comprobantes de


retenciones electrnicas

6, 37-49, 52-69

1.9

10/02/2015

Servicio de cancelacin de comprobantes de 6, 49-58, 61-81


retenciones electrnicas

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

3.Lista de Cdigos de Error....................................................................................................................................................... 61


3.1.Introduccin ............................................................................................................................................................................................61
Cdigos definidos por el SAT..................................................................................................................................................................61
Cdigos definidos por Edicom................................................................................................................................................................62
Ejemplo de una respuesta de error........................................................................................................................................................62

4.Anexo: WSDL......................................................................................................................................................................... 63
4.1.WSDL WEBSERVICE CFDi .......................................................................................................................................................................63

WSCFDI EDICOM | | 5

WSCFDI EDICOM

1. WEBSERVICE CFDI DE EDICOM


1.1. INTRODUCCIN
CFDi es la plataforma webservice de EDICOM para generar los Comprobantes Fiscales Digitales a travs de
Internet. Esta plataforma acredita a EDICOM como Proveedor Autorizado de CFD por el Servicio de
Administracin Tributaria, convirtindose as en Proveedor de Servicios de Expedicin de Comprobante Fiscal
Digital a travs de Internet (PSECFDI), conforme a los nuevos requerimientos especificados para realiza todas las
validaciones de los CFDi exigidas por el SAT.
Cuando un cliente contrata el servicio de Expedicin de CFDis de Edicom obtiene:
La URL del servicio y la documentacin necesaria para ser utilizada.
Su Usuario de acceso al servicio (coincide con su RFC)
Su Password de acceso al servicio (nico para l)

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

de Junio de 2010, y sus posteriores modificaciones a la resolucin y anexos, en concreto el Anexo 20


http://www.sat.gob.mx/sitio_internet/informacion_fiscal/legislacion/52_18801.html.

URL DE ACCESO AL SERVICIO


La URL de acceso al webservice CFDi de edicom es la siguiente:
https://cfdiws.sedeb2b.com/EdiwinWS/services/CFDi?wsdl
La implementacin del servicio se realiza a travs del protocolo https. De esta forma, se utiliza un canal de
comunicaciones seguro con el Proveedor de Servicios de Emisin de CFDI (PSECFDI).

FUNCIONES DEL WEBSERVICE CFDI DE EDICOM


funcin

Descripcin

getCfdi

Generacin de CFDI. Permite realizar el timbrado del comprobante firmado por el 1.0
cliente y devuelve el comprobante timbrado.

getTimbreCfdi

Generacin de timbre de CFDI. Permite realizar el timbrado del comprobante


firmado por el cliente y devuelve el timbre del comprobante timbrado.

1.0

cancelaCFDi

Cancelacin de CFDI. Permite cancelar comprobantes timbrados.

1.0

changePassword

Cambio de password de acceso al Servicio CFDI. Permite al usuario cambiar el


password de acceso al servicio CFDi

1.0

getCfdiTest

Generacin de CFDI en test. Permite realizar el timbrado del comprobante


firmado por el cliente en modo de prueba y devuelve el comprobante timbrado.

1.0

getTimbreCfdiTest

Generacin de timbre de CFDI en test. Permite realizar el timbrado del


comprobante firmado por el cliente en modo de prueba y devuelve el timbre del
comprobante timbrado.

1.0

getUUID

Comprobacin de la generacin de timbres CFDI. Permite comprobar si un

1.0

WSCFDI EDICOM | 1.webservice CFDi de EDICOM | 6

ver.

WSCFDI EDICOM
comprobante ha sido timbrado en nuestro sistema.
getUUIDTest

Comprobacin de la generacin de timbres CFDI en test. Permite comprobar si


un comprobante ha sido timbrado en modo de prueba de nuestro sistema.

1.0

cancelaCfdiSigned

Cancelacin de CFDI firmada. Permite cancelar comprobantes timbrados a partir


de la peticin de cancelacin del cliente previamente firmada.

1.0

getCfdiAck

Obtencin de Ack de timbrado. Permite obtener el acuse del timbrado del SAT

1.0

getCfdiFromUUID

Obtencin del CFDi timbrado. Permite obtener un duplicado de los CFDi


generados anteriormente.

1.0

getCfdiRetenciones

Generacin de Retenciones de CFDI. Permite realizar el timbrado del


comprobante de retenciones electrnicas firmado por el cliente y devuelve el
comprobante timbrado.

1.0

getTimbreCfdiRetencio Generacin de timbre de Retenciones de CFDI. Permite realizar el timbrado del


nes
comprobante de retenciones electrnicas firmado por el cliente y devuelve el
timbre del comprobante timbrado.

1.0

getCfdiRetencionesTes Generacin de Retenciones de CFDi en test. Permite realizar el timbrado del


t
comprobante de retenciones electrnicas firmado por el cliente en modo de
prueba y devuelve el comprobante de retenciones electrnicas timbrado.

1.0

getTimbreCfdiRetencio Generacin de timbre de Retenciones de CFDI en test. Permite realizar el


nesTest
timbrado del comprobante de retenciones electrnicas firmado por el cliente en
modo de prueba y devuelve el timbre del comprobante de retenciones
electrnicas timbrado.

1.0

cancelaCFDiRetencione Cancelacin de Retenciones de CFDI. Permite cancelar comprobantes de


s
retenciones electrnicas timbrados.

1.0

cancelaCfdiRetencione Cancelacin de Retenciones de CFDI firmada. Permite cancelar comprobantes de 1.0


sSigned
retenciones electrnicas timbrados a partir de la peticin de cancelacin del
cliente previamente firmada.

WSCFDI EDICOM | 1.webservice CFDi de EDICOM | 7

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:

user: Usuario que va realizar la conexin.

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 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

documento para su certificacin no exceda de 72 horas.

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

conforme a la Resolucin Miscelnea Fiscal para 2010 y sucesivas modificaciones.

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 | 2.Funciones | 9

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 &lt;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 &lt;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 | 2.Funciones | 10

WSCFDI EDICOM

2.2. GENERACIN DEL TIMBRE DEL CFDI


getTimbreCfdi
Permite realizar el timbrado del comprobante firmado por el cliente y devuelve el timbre del 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[] getTimbreCfdi(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 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

documento para su certificacin no exceda de 72 horas.

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

conforme a la Resolucin Miscelnea Fiscal para 2010 y sucesivas modificaciones.

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 | 2.Funciones | 12

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>

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 &lt;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 &lt;SE3> 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>

Para ver una lista completa de los posibles cdigos de error y respuestas asociadas consultar el punto Lista de
Cdigos de Error.

2.3. CANCELAR CFDI


cancelaCFDi

Permite cancelar comprobantes timbrados.


Para poder implementar la llamada, el usuario debe autentificarse como usuario del servicio CFDi y especificar
cuales son los CFDI que quiere cancelar mediante los UUIDs de los comprobantes firmados digitalmente.
En cada llamada se pueden cancelar varios CFDI.

LLAMADA:
WSCFDI EDICOM | 2.Funciones | 13

WSCFDI EDICOM
public CancelaResponse cancelaCFDi(String user, String password, String rfc,
String[] uuid, byte[] pfx, String pfxPassword);

PARMETROS:

user: Usuario que va realizar la conexin

password: Contrasea del usuario que va realizar la conexin

rfc: RFC del usuario que est cancelando los CFDI

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

comprobantes, el servicio devolver un listado de datos derivados de la cancelacin:


uuids: Listado de CFDI que se han cancelado en la 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 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 | 2.Funciones | 14

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 | 2.Funciones | 15

WSCFDI EDICOM
hOkFjdXNlRm9saW9zPjwvYTpGb2xpb3M+PGE6U2VsbG9TQVQgaTpuaWw9InRydWUiLz48YTpyZmNFbWlz
b3I+U0FULTI4MDkxMC0wMDE8L2E6cmZjRW1pc29yPjwvQ2FuY2VsYUNGRFJlc3VsdD48L0NhbmNlbGFDR
kRSZXNwb25zZT48L3M6Qm9keT48L3M6RW52ZWxvcGU+</text>
<uuids>
<uuids>1c550dd7-2209-4c45-acdf-b86b6cf3723e</uuids>
</uuids>
</cancelaCFDiReturn>
</cancelaCFDiResponse>
</soapenv:Body>
</soapenv:Envelope>

Ejemplo de 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 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>

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 | 2.Funciones | 16

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.

Ejemplo de una respuesta de error del servicio de 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>
<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.

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>

WSCFDI EDICOM | 2.Funciones | 17

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.

2.4. CAMBIAR PASSWORD DE ACCESO AL SERVICIO DE CFDI


changePassword
Permite al usuario cambiar el password de acceso al servicio CFDi.
Para poder implementar la llamada, el usuario debe autentificarse como usuario del servicio CFDi e indicar el
nuevo password para hacer el cambio.

LLAMADA:
public boolean changePassword(String user, String password, String newPassword)

PARMETROS:

user: Usuario que va realizar la conexin.

password: Contrasea del usuario que va realizar la conexin.

newPassword: Nueva contrasea que quiere utilizar el usuario para realizar las conexiones al servicio.

RESPUESTA:

Respuesta satisfactoria: En caso de que se haya realizado el cambio correctamente, el servicio


devolver un resultado correcto (true).

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 | 2.Funciones | 18

WSCFDI EDICOM

Cdigo del cliente:


public boolean changePassword(String user, String pass, String newPass) {
boolean result = false;
try {
result = cfdiService.changePassword(user, pass, newPass);
} 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 result;
}

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>

El siguiente ejemplo es una respuesta de error.


<?xml version="1.0" encoding="UTF-8"?>

WSCFDI EDICOM | 2.Funciones | 19

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.

2.5. GENERACIN DEL CFDI EN TEST


getCfdiTest
Permite realizar el timbrado del comprobante 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 getCfdi, pero en caso de que el CFDI pase todas las validaciones
que implementa el servicio, genera un CFDI con un timbre no vlido, y no enva el CFDI 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[] 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

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
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 | 2.Funciones | 21

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>

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
certificado &lt;> no ha sido expedido por el Servicio de Administracin
Tributaria</faultstring>
<detail>
<ns1:fault xmlns:ns1="http://cfdi.service.ediwinws.edicom.com">
<ns1:cod>308</ns1:cod>
<ns1:text>El certificado &lt;> no ha sido expedido por el Servicio
de Administracin Tributaria</ns1:text>
</ns1:fault>
<ns2:hostname
xmlns:ns2="http://xml.apache.org/axis/">cfdiws.sedeb2b.com</ns2:hostname>
</detail>
</soapenv:Fault>
</soapenv:Body>

WSCFDI EDICOM | 2.Funciones | 22

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.

2.6. GENERACIN DEL TIMBRE DEL CFDI EN TEST


getTimbreCfdiTest
Permite realizar el timbrado del comprobante firmado por el cliente en modo de prueba y devuelve el timbre
del comprobante timbrado. Se trata de una llamada de TEST para poder hacer pruebas del funcionamiento del
servicio.
Funciona exactamente igual que la funcin getTimbreCfdi, pero en caso de que el CFDI pase todas las
validaciones que implementa el servicio, genera un CFDI con un timbre no vlido, y no enva el comprobante 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[] getTimbreCfdiTest(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 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 | 2.Funciones | 23

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 | 2.Funciones | 24

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>

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 &lt;SE1> ya ha sido firmado
&lt;D63558240D3051448088CED185C0832038A8735C></faultstring>
<detail>
<ns1:fault xmlns:ns1="http://cfdi.service.ediwinws.edicom.com">
<ns1:cod>307</ns1:cod>
<ns1:text>El documento &lt;SE1> ya ha sido firmado
&lt;D63558240D3051448088CED185C0832038A8735C></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.

2.7. COMPROBACIN DEL TIMBRADO CFDI


getUUID
Permite comprobar si un comprobante ha sido timbrado previamente y devuelve el UUID del comprobante
timbrado. Para poder implementar la llamada, el usuario debe autentificarse como usuario del servicio de CFDi
y enviar el mismo comprobante que se envi previamente a timbrar.

WSCFDI EDICOM | 2.Funciones | 25

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:

user: Usuario que va realizar la conexin.

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 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 satisfactoria: En caso de que se haya comprobado que el comprobante se ha timbrado, el


servicio devolver el UUID del comprobante generado. Si no se ha timbrado el comprobante, devolver
una cadena de texto en blanco indicando que no hay ningn UUID que se corresponda con el
comprobante enviado.

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 | 2.Funciones | 26

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 | 2.Funciones | 27

WSCFDI EDICOM
<ns2:hostname
xmlns:ns2="http://xml.apache.org/axis/">cfdipr01a</ns2:hostname>
</detail>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>

Nota: En este ejemplo concreto se presenta un error "202" No se ha podido comprobar el


UUID del comprobante.
Para ver una lista completa de los posibles cdigos de error y respuestas asociadas consultar el punto Lista de
Cdigos de Error.

2.8. COMPROBACIN DEL TIMBRADO CFDI EN TEST


getUUIDTest
Permite comprobar si un comprobante ha sido timbrado previamente en el entorno de pruebas de EDICOM y
devuelve el UUID del comprobante timbrado en el entorno de pruebas. Para poder implementar la llamada, el
usuario debe autentificarse como usuario del servicio de CFDi y enviar el mismo comprobante que se envi
previamente a timbrar en el entorno de pruebas.
Por la naturaleza del servicio de TEST, en el que se permiten generar distintos timbres de un mismo
comprobante firmado, no se pueden asignar los UUIDs directamente a los ficheros originales ya que un fichero
podra tener varios UUIDs disponibles. Por tanto, la funcionalidad de esta llamada al webservice est limitada
de forma que esta funcin nunca devolver un UUID de un timbre de TEST. Esta funcin est destinada a
verificar que la implementacin de la funcin getUUID funciona correctamente.
En cada llamada se puede enviar un nico comprobante para obtener un nico UUID.

LLAMADA:
public String getUUIDTest(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 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.

Respuesta satisfactoria: En caso de que se haya comprobado que el comprobante se ha timbrado en el


entorno de pruebas, el servicio devolver el UUID del comprobante generado en el entorno de
pruebas. Si no se ha timbrado el comprobante en el entorno de pruebas, devolver una cadena de
texto en blanco indicando que no hay ningn UUID que se corresponda con el comprobante enviado.
WSCFDI EDICOM | 2.Funciones | 28

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 | 2.Funciones | 29

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>

Nota: El UUID reflejado en este ejemplo es un UUID como el obtenido en entorno de


pruebas, El segundo grupo es siempre "7E57" ("TEST")
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>
<ns2:hostname
xmlns:ns2="http://xml.apache.org/axis/">cfdipr01a</ns2:hostname>
</detail>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>

Nota: En este ejemplo concreto se presenta un error "202" No se ha podido comprobar el


UUID del comprobante
Para ver una lista completa de los posibles cdigos de error y respuestas asociadas consultar el punto Lista de
Cdigos de Error.

2.9. CANCELAR CFDI FIRMADO


cancelaCFDiSigned

Permite cancelar comprobantes timbrados.


Para poder implementar la llamada, el usuario debe autentificarse como usuario del servicio CFDi. En este caso,
el cliente tiene que implementar la peticin de cancelacin de los timbres que quieren cancelar y firmarla. Esta
peticin firmada se enva directamente al webservice para que genere la peticin de cancelacin a partir de
esos datos firmados

WSCFDI EDICOM | 2.Funciones | 30

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

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

comprobantes, el servicio devolver un listado de datos derivados de la cancelacin:


uuids: Listado de CFDI que se han cancelado en la 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 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 | 2.Funciones | 31

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 | 2.Funciones | 32

WSCFDI EDICOM

Ejemplo de 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 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>

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.

Ejemplo de una respuesta de error del servicio de EDICOM.


<?xml version="1.0" encoding="UTF-8"?>

WSCFDI EDICOM | 2.Funciones | 33

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.

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
[...]
hOkFjdXNlRm9saW9zPjwvYTpGb2xpb3M+PGE6U2VsbG9TQVQgaTpuaWw9InRydWUiLz48YTpyZmNFbWlz
b3I+U0FULTI4MDkxMC0wMDE8L2E6cmZjRW1pc29yPjwvQ2FuY2VsYUNGRFJlc3VsdD48L0NhbmNlbGFDR
kRSZXNwb25zZT48L3M6Qm9keT48L3M6RW52ZWxvcGU+</text>
<uuids>
<uuids>1c550dd7-2209-4c45-acdf-b86b6cf3723e</uuids>
</uuids>
</cancelaCFDiReturn>
</cancelaCFDiResponse>
</soapenv:Body>

WSCFDI EDICOM | 2.Funciones | 34

WSCFDI EDICOM
</soapenv:Envelope>

Ambos cdigos son totalmente independientes, y no deben confundirse ya que corresponden a cdigos de
EDICOM y del SAT respectivamente.

2.10. OBTENCIN DEL ACK(ACUSE) DEL TIMBRADO


getCfdiAck
Permite obtener el acuse (Acknowledge o ACK.) generado por el SAT en el momento de timbrar el comprobante.
Para poder implementar la llamada, el usuario debe autentificarse como usuario del servicio de CFDi y
especificar cuales son los UUIDs de los que quiere obtener el ACK. de los timbrados.
En cada llamada se pueden obtener varios ACKs.

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 | 2.Funciones | 35

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 | 2.Funciones | 36

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.

2.11. OBTENCIN DEL TIMBRE A PARTIR DEL UUID.


GetCfdiFromUUID
Permite obtener comprobante timbrado anteriormente. Para poder implementar la llamada, el usuario debe
autentificarse como usuario del servicio de CFDi y especificar su RFC y los UUIDs de los comprobantes timbrados
que quiere recuperar.

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 | 2.Funciones | 37

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 | 2.Funciones | 38

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.

2.12. GENERACIN DEL CFDI DE RETENCIONES ELECTRNICAS


getCfdiRetenciones
Permite realizar el timbrado del comprobante de retenciones electrnicas firmado por el cliente y devuelve el
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 de
retenciones electrnicas para poder generar as la firma digital.
En cada llamada se puede generar un CFDI.

LLAMADA:
public byte[] getCfdiRetenciones(String user, String password, byte[] file);

PARMETROS:

user: Usuario que va realizar la conexin.


WSCFDI EDICOM | 2.Funciones | 39

WSCFDI EDICOM

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. 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

documento para su certificacin no exceda de 72 horas.

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

conforme a la Resolucin Miscelnea Fiscal para 2014 y sucesivas modificaciones.

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 | 2.Funciones | 40

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

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 &lt;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 &lt;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 | 2.Funciones | 42

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:

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:
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

documento para su certificacin no exceda de 72 horas.

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

conforme a la Resolucin Miscelnea Fiscal para 2014 y sucesivas modificaciones.

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 | 2.Funciones | 44

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>

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 &lt;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 &lt;SE3> 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>

Para ver una lista completa de los posibles cdigos de error y respuestas asociadas consultar el punto Lista de
Cdigos de Error.

2.14. GENERACIN DEL CFDI DE RETENCIONES ELECTRNICAS EN TEST


getCfdiRetencionesTest

WSCFDI EDICOM | 2.Funciones | 45

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

Cdigo del cliente:


public byte[] getCfdiRetencionesTest(String user, String pass, byte[] file) {
try {
cfdiService.getCfdiRetencionesTest(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: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 | 2.Funciones | 47

WSCFDI EDICOM

<getCfdiRetencionesTestReturn>UEsDBBQACAAIANV9ND4AAAAAAAAAAAAAAAAjAAAAU0lHTl9zaW5
fdGltYnJhcl9fWE1MSW1wXzQ3MzIwOS54bWztWNly67gRfU9V/oGlp6RcFhctllzjmQJJUCTNRVy1vKS4
ifsikhIp/cF8Sr5jfiygZN/re8eZTB5TuayiYaEbjdONA3SDP/3S5xl2DuomLouXETkmRlhQeKUfF+HLy
DK
[...]
AAAAAAAAAAAAAAAAAAAAAU0lHTl9zaW5fdGltYnJhcl9fWE1MSW1wXzQ3MzIwOS54bWxQSwUGAAAAAAEA
AQBRAAAAPgkAAAAA</getCfdiRetencionesTestReturn>
</getCfdiRetencionesTestResponse>
</soapenv:Body>
</soapenv:Envelope>

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
certificado &lt;> no ha sido expedido por el Servicio de Administracin
Tributaria</faultstring>
<detail>
<ns1:fault xmlns:ns1="http://cfdi.service.ediwinws.edicom.com">
<ns1:cod>308</ns1:cod>
<ns1:text>El certificado &lt;> no ha sido expedido por el Servicio
de Administracin Tributaria</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.

2.15. GENERACIN DEL


ELECTRNICAS EN TEST

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 | 2.Funciones | 48

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:

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 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 | 2.Funciones | 49

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 | 2.Funciones | 50

WSCFDI EDICOM
</getTimbreCfdiRetencionesTestResponse>
</soapenv:Body>
</soapenv:Envelope>

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 &lt;SE1> ya ha sido firmado
&lt;D63558240D3051448088CED185C0832038A8735C></faultstring>
<detail>
<ns1:fault xmlns:ns1="http://cfdi.service.ediwinws.edicom.com">
<ns1:cod>307</ns1:cod>
<ns1:text>El documento &lt;SE1> ya ha sido firmado
&lt;D63558240D3051448088CED185C0832038A8735C></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.

2.16. CANCELAR COMPROBANTES DE RETENCIONES ELECTRNICAS


cancelaCFDiRetenciones

Permite cancelar comprobantes de retenciones electrnicas timbrados.


Para poder implementar la llamada, el usuario debe autentificarse como usuario del servicio CFDi y especificar
cuales son los comprobantes de retenciones electrnicas que quiere cancelar mediante los UUIDs de los
comprobantes firmados digitalmente.
En cada llamada se pueden cancelar varios comprobantes.

LLAMADA:
public CancelaResponse cancelaCFDiRetenciones(String user, String password,
String rfc, String[] uuid, byte[] pfx, String pfxPassword);

PARMETROS:

user: Usuario que va realizar la conexin

WSCFDI EDICOM | 2.Funciones | 51

WSCFDI EDICOM

password: Contrasea del usuario que va realizar la conexin

rfc: RFC del usuario que est cancelando los CFDI

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

comprobantes, el servicio devolver un listado de datos derivados de la cancelacin:


uuids: Listado de CFDI que se han cancelado en la 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

comprobantes 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 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 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 | 2.Funciones | 52

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 | 2.Funciones | 53

WSCFDI EDICOM
</cancelaCFDiRetencionesReturn>
</cancelaCFDiRetencionesResponse>
</soapenv:Body>
</soapenv:Envelope>

Ejemplo de 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 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>

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 | 2.Funciones | 54

WSCFDI EDICOM

Ejemplo de una respuesta de error del servicio de 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>
<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.

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>

WSCFDI EDICOM | 2.Funciones | 55

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.

2.17. CANCELAR COMPROBANTES DE RETENCIONES ELECTRNICAS


FIRMADO
cancelaCFDiRetencionesSigned

Permite cancelar comprobantes de retenciones electrnicas timbrados.


Para poder implementar la llamada, el usuario debe autentificarse como usuario del servicio CFDi. En este caso,
el cliente tiene que implementar la peticin de cancelacin de los comprobantes de retenciones electrnicas
timbrados que quieren cancelar y firmarla. Esta peticin firmada se enva directamente al webservice para que
genere la peticin de cancelacin a partir de esos datos firmados

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

comprobantes, el servicio devolver un listado de datos derivados de la cancelacin:

uuids: Listado de comprobantes de retenciones electrnicas que se han cancelado en la

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

comprobantes 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
WSCFDI EDICOM | 2.Funciones | 56

WSCFDI EDICOM

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 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>

Ejemplo de 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 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>

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 | 2.Funciones | 58

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.

Ejemplo de una respuesta de error del servicio de 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>
<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 | 2.Funciones | 59

WSCFDI EDICOM

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>
<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>

Ambos cdigos son totalmente independientes, y no deben confundirse ya que corresponden a cdigos de
EDICOM y del SAT respectivamente.

WSCFDI EDICOM | 2.Funciones | 60

WSCFDI EDICOM

3. LISTA DE CDIGOS DE ERROR


3.1. INTRODUCCIN
El SAT ha publicado una lista estndar de cdigos de error (cdigos del 301 al 403) aplicables a las respuestas no
satisfactorias. El servicio CFDi de Edicom detecta estos errores, y tambin otras situaciones de error
directamente relacionadas con la aplicacin de Edicom.

CDIGOS DEFINIDOS POR EL SAT


Estos cdigos han sido definidos como cdigos de error estndar por el SAT. Se indican tambin las posibles
respuestas literales causadas de estos errores.
Cdigo

Error

301

El comprobante no cumple con el estndar XML (Conforme al W3C) o con la estructura XML (XSD y
complementos aplicables).

El documento no es correcto sintcticamente.

El documento <referencia> no esta codificado en UTF-8.

El documento <referencia> contiene Addenda.

302

El sello del emisor no es vlido.

El documento <referencia> no est firmado.

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.

El certificado <serialRfc> con el que se ha firmado el documento <referencia> no pertenece al rfc


<emisorRfc>.

304

El CSD del emisor ha sido revocado, utilizando la lista de LCO.

El certificado <serialRfc> del RFC <emisorRfc> ha sido revocado (segn LCO).

305

La fecha de emisin no est dentro de la vigencia del CSD del emisor.

El certificado <serialRfc> todava no es vlido para la fecha del documento <referencia>


<fecha_documento>.

El certificado <serialRfc> ya no es vlido para la fecha del documento <referencia>


<fecha_documento>.

306

La llave utilizada para sellar corresponde a un FIEL (no a un CSD).

El certificado <serialRfc> es de tipo FIEL, no es un CSD.

307

Contiene un timbre previo.

El documento <referencia> ya ha sido firmado <hash>.

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.

El certificado <serialRfc> no ha sido expedido por el Servicio de Administracin Tributaria.

401

La fecha de generacin es mayor a 72 horas de la emisin del timbre.

No puede firmarse el documento <referencia> con fecha <fecha>. Han pasado ms de 72 horas
desde su generacin.

No puede firmarse el documento <referencia> con fecha <fecha>. La fecha es posterior a la


actual.

402

El RFC no existe conforme al rgimen autorizado (Lista de validacin de rgimen) LCO.

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

La fecha de emisin es anterior al 01 de Enero de 2011.

La fecha de emisin del comprobante no puede ser anterior al 01 de Enero de 2011.

WSCFDI EDICOM | 3.Lista de Cdigos de Error | 61

WSCFDI EDICOM

CDIGOS DEFINIDOS POR EDICOM


Estos cdigos afectan a errores relacionados con la aplicacin de EDICOM. Se indican tambin los posibles
escenarios en que se presentan estos errores.
Cdigo

Error

200

No se ha podido cambiar el password del usuario.

Se ha producido un error al intentar cambiar el password.

La contrasea no cumple las restricciones avanzadas.

La contrasea no puede ser la misma que la que haba anteriormente.

201

No se ha podido cancelar los comprobantes.

No se ha podido cancelar los UUIDs especificados.

202

No se ha podido comprobar el UUID del comprobante.

No se ha podido comprobar el UUID del comprobante.

203

No se ha podido obtener la respuesta de la peticin de generacin del comprobante.

No se ha enviado ningn UUID para ejecutar el servicio de obtencin de acuses de los


comprobantes.

No se ha podido obtener los acuses de envo de los UUIDs especificados.

204

No se ha podido obtener el comprobante de los UUIDs enviados.

No se ha enviado ningn UUID para ejecutar el servicio de bsqueda de comprobantes.

No se ha enviado ningn rfc para ejecutar el servicio de bsqueda de comprobantes.

No se ha podido obtener los CFDi de los UUIDs especificados.

300

Error genrico de la aplicacin.

Se han producido errores al ejecutar el servicio de CFDi. Compruebe que el documento a firmar
sea correcto.

404

Error de autentificacin en el servicio.

El usuario <username> no es un usuario vlido.

EJEMPLO DE 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 &lt;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 &lt;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>

WSCFDI EDICOM | 3.Lista de Cdigos de Error | 62

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

<element name="newPassword" type="xsd:string"/>


</sequence>
</complexType>
</element>
<element name="changePasswordResponse">
<complexType>
<sequence>
<element name="changePasswordReturn" type="xsd:boolean"/>
</sequence>
</complexType>
</element>
<element name="getTimbreCfdiRetencionesTest">
<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="getTimbreCfdiRetencionesTestResponse">
<complexType>
<sequence>
<element name="getTimbreCfdiRetencionesTestReturn"
type="xsd:base64Binary"/>
</sequence>
</complexType>
</element>
<element name="getCfdi">
<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="getCfdiResponse">
<complexType>
<sequence>
<element name="getCfdiReturn" type="xsd:base64Binary"/>
</sequence>
</complexType>
</element>
<element name="getTimbreCfdiTest">
<complexType>
<sequence>
<element name="user" type="xsd:string"/>
<element name="password" type="xsd:string"/>
WSCFDI EDICOM | 4.Anexo: WSDL | 64

WSCFDI EDICOM

<element name="file" type="xsd:base64Binary"/>


</sequence>
</complexType>
</element>
<element name="getTimbreCfdiTestResponse">
<complexType>
<sequence>
<element name="getTimbreCfdiTestReturn"
type="xsd:base64Binary"/>
</sequence>
</complexType>
</element>
<element name="cancelaCFDiRetenciones">
<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="cancelaCFDiRetencionesResponse">
<complexType>
<sequence>
<element name="cancelaCFDiRetencionesReturn"
type="impl:CancelaResponse"/>
</sequence>
</complexType>
</element>
<complexType name="ArrayOf_xsd_string">
<sequence>
<element maxOccurs="unbounded" minOccurs="0" name="item"
type="xsd:string"/>
</sequence>
</complexType>
<complexType name="CancelaResponse">
<sequence>
<element name="ack" nillable="true" type="xsd:string"/>
<element name="text" nillable="true" type="xsd:string"/>
<element name="uuids" nillable="true"
type="impl:ArrayOf_xsd_string"/>
</sequence>
</complexType>
<element name="getCfdiRetencionesTest">
<complexType>
<sequence>

WSCFDI EDICOM | 4.Anexo: WSDL | 65

WSCFDI EDICOM

<element name="user" type="xsd:string"/>


<element name="password" type="xsd:string"/>
<element name="file" type="xsd:base64Binary"/>
</sequence>
</complexType>
</element>
<element name="getCfdiRetencionesTestResponse">
<complexType>
<sequence>
<element name="getCfdiRetencionesTestReturn"
type="xsd:base64Binary"/>
</sequence>
</complexType>
</element>
<element name="cancelaCFDiRetencionesSigned">
<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="cancelaCFDiRetencionesSignedResponse">
<complexType>
<sequence>
<element name="cancelaCFDiRetencionesSignedReturn"
type="impl:CancelaResponse"/>
</sequence>
</complexType>
</element>
<element name="exportCfdi">
<complexType>
<sequence>
<element name="user" type="xsd:string"/>
<element name="password" type="xsd:string"/>
<element name="rfc" type="xsd:string"/>
<element name="iniDate" type="xsd:dateTime"/>
<element name="endDate" type="xsd:dateTime"/>
</sequence>
</complexType>
</element>
<element name="exportCfdiResponse">
<complexType>
<sequence>
<element name="exportCfdiReturn" type="xsd:base64Binary"/>
</sequence>
</complexType>
</element>

WSCFDI EDICOM | 4.Anexo: WSDL | 66

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 | 4.Anexo: WSDL | 68

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 | 4.Anexo: WSDL | 69

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 | 4.Anexo: WSDL | 70

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 | 4.Anexo: WSDL | 72

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 | 4.Anexo: WSDL | 73

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 | 4.Anexo: WSDL | 74

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 | 4.Anexo: WSDL | 76

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 | 4.Anexo: WSDL | 77

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 | 4.Anexo: WSDL | 78

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 | 4.Anexo: WSDL | 79

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 | 4.Anexo: WSDL | 80

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 | 4.Anexo: WSDL | 81

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

WSCFDI EDICOM | 4.Anexo: WSDL | 82

S-ar putea să vă placă și