Вы находитесь на странице: 1из 26

S

Servicio de Recepción y
Cancelación
Retenciones

Fecha: 17 de Noviembre de 2014


Contenido
Introducción .................................................................................................................................................. 2
Glosario ......................................................................................................................................................... 2
Prerrequisitos................................................................................................................................................ 2
Modo de Uso para Servicios ......................................................................................................................... 3
Autenticación para Servicios ......................................................................................................................... 3
Servicio de Recepción ................................................................................................................................. 12
RecuperarPaquetes ................................................................................ ¡Error! Marcador no definido.
Servicio de Cancelación............................................................................................................................... 17
RecuperarPaquetes ................................................................................ ¡Error! Marcador no definido.

Página 1 de 26
Introducción
El presente documento contiene la información necesaria para conocer y utilizar los siguientes
elementos que forman parte de la solución de Retenciones del Servicio de Administración.

 Recepción y Cancelación de Retenciones.

Glosario
Término Descripción
SAT Servicio de Administración Tributaria.
SHCP Secretaría de Hacienda y Crédito Público.
URL Son las siglas de Uniform Resource Locator
(Localizador de Recursos Uniforme). Es una
secuencia de caracteres, de acuerdo a un
formato modelo estandarizado, que se usa para
nombrar recursos en Internet para su localización
o identificación, como por ejemplo documentos
textuales, imágenes, videos, presentaciones
digitales, etc.
URI Son las siglas de Uniform Resource Identifier
(Identificador de Recursos Uniforme). Es una
cadena de caracteres corta que identifica
inequívocamente un recurso (servicio, página,
documento, dirección de correo electrónico,
enciclopedia, etc.). Normalmente estos recursos
son accesibles en una red o sistema.
RFC Son las siglas de Registro Federal de
Contribuyentes. Es un conjunto de caracteres que
forman una clave única que requiere toda
persona física o moral en México para realizar
cualquier actividad económica.
FIEL La Firma Electrónica Avanzada es un conjunto de
datos que se adjuntan a un mensaje electrónico,
cuyo propósito es identificar al emisor del
mensaje como autor legítimo de éste, tal y como
si se tratara de una firma autógrafa

Prerrequisitos
Tener conexión a Internet.

Contar con la Firma Electrónica Avanzada (FIEL).

Estar dado de alta como PAC (Proveedor Autorizado de Certificación).

Página 2 de 26
Modo de Uso para Servicios
A fin de utilizar los servicios web descritos en el presente documento es necesario: 1) crear el cliente de
servicios web correspondiente a partir de la URL del Servicio y/o la URL de acuerdo con las instrucciones
de la plataforma desde la que se vaya a consumir el servicio web.

En la descripción de cada uno de los servicios se proporcionará la URL del servicio y / o del WSDL para
generar el cliente del servicio web.

Para mayor información acerca de la manera en la que se genera el cliente del servicio web consulte la
documentación de la plataforma desde la que consumirá el servicio.

Una vez que se creó el cliente el siguiente paso es: 2) verificar el tipo de certificado a enviar para poder
realizar la autenticación y posterior consumo de los servicios.

En el siguiente paso se habla específicamente de cómo realizar dicha autenticación.

Autenticación para Servicios


Adicionalmente, para utilizar los servicios web descritos en el presente documento es necesario:
3) autenticarse ante el servidor de servicios web mediante un par de llaves proporcionados por el SAT al
momento de tramitar la FIEL.

Para mayor información acerca de la FIEL consulte:

http://www.sat.gob.mx/sitio_internet/e_sat/tu_firma/60_11498.html

El tipo de autenticación del servicio cumple con las especificaciones de Web Services Security v1.0 (WS-
Security 2004):

https://www.oasis-open.org/standards#wssv1.0

A continuación se muestra la parte del WSDL de cada uno de los servicios que menciona el método de
autenticación que se requiere para el consumo de los servicios:

Servicio Autenticación Recepción

Página 3 de 26
Página 4 de 26
Página 5 de 26
La URL de pruebas de integración para utilizar el servicio es la siguiente:
https://autenticaretencion.cloudapp.net/Autenticacion.svc

A fin de facilitar la autenticación mediante el uso de la FIEL, se recomienda utilizar el almacén local de
llaves criptográficas para almacenar y recuperar una llave y así poder utilizarla posteriormente. A
continuación se muestra un ejemplo de código en C# de cómo obtener un certificado especifico.

Ejemplo:

Página 6 de 26
Una vez seleccionado el certificado a utilizar como medio de autenticación se tiene que mandar la
petición hacia el servicio de autenticación para poder: 4) obtener el token requerido para poder usar los
servicios como son recepción y cancelación. Esto se realiza de la siguiente manera:

Ejemplo:

Servicio Autenticación Recepción

El código mostrado anteriormente es en C#, pero sirve como ejemplo para ilustrar como enviar estos
certificados a los servicios descritos y poder obtener el token de autenticación correspondiente.

Ahora se muestra un ejemplo de cómo se ve una petición hacia los servicios de autenticación:

Servicio Autenticación Recepción

Si existe algún error durante la autenticación y no se obtiene el token no se podrán utilizar los demás
servicios. Otro punto a considerar es que al consumir los servicios se validará el token enviado. Si éste es
válido se podrá hacer uso de los métodos expuestos de cada uno; en caso contrario se mandará una
excepción de autenticación y no se podrá hacer uso del Web Services. (ANTES ESO DEL WEB SERVICES)

A continuación se muestra un ejemplo de la petición en donde la autenticación no fue satisfactoria y por


ende no se pudo hacer uso de los servicios.

Servicio Autenticación Recepción

Página 7 de 26
Es importante mencionar también que para poder hacer uso de los Servicios Web se tiene que estar
dado de alta como PAC; de no ser así la autenticación no será satisfactoria.

El alta como PAC seguirá un proceso definido por el SAT (Sistema de Administración Tributaria).

Servicio Autenticación Cancelación

Página 8 de 26
Página 9 de 26
La URL de pruebas de integración para utilizar el servicio es la siguiente:
https:// autenticaretencioncancelacion.cloudapp.net/Autenticacion.svc

A fin de facilitar la autenticación mediante el uso de la FIEL, se recomienda utilizar el almacén local de
llaves criptográficas para almacenar y recuperar una llave para utilizarla posteriormente. A continuación
se muestra un ejemplo de código en C# de cómo obtener un certificado especifico.

Ejemplo:

Una vez seleccionado el certificado a utilizar como medio de autenticación se tiene que mandar la
petición hacia el servicio de autenticación para poder: 4) obtener el token que se requiere para poder
usar los servicios como son recepción y cancelación. Esto se realiza de la siguiente manera:

Ejemplo:

Servicio Autenticación Cancelación

Página 10 de 26
El código mostrado anteriormente es en C#, pero sirve como ejemplo para ilustrar como enviar estos
certificados a los servicios descritos y poder obtener el token de autenticación correspondiente.

Ahora se muestra un ejemplo de cómo se ve una petición hacia los servicios de autenticación:

Servicio Autenticación Cancelación

Si existe algún error durante la autenticación y no se obtiene el token no se podrán utilizar los demás
servicios. Otro punto a considerar es que al consumir los servicios se validará el token enviado. Si éste es
válido se podrá hacer uso de los métodos expuestos de cada uno; en caso contrario se mandará una
excepción de autenticación y no se podrá hacer uso del Web Services. (ANTES ESO DEL WEB SERVICES)

A continuación se muestra un ejemplo de la petición en donde la autenticación no fue satisfactoria y por


ende no se pudo hacer uso de los servicios.

Servicio Autenticación Cancelación

Página 11 de 26
Es importante mencionar también que para poder hacer uso de los Servicios Web se tiene que estar
dado de alta como PAC; de no ser así la autenticación no será satisfactoria.

El alta como PAC seguirá un proceso definido por el SAT (Sistema de Administración Tributaria).

Servicio de Recepción
Es un servicio web que permite recibir los documentos de retenciones que son enviados por parte de los
PAC’s y devolver un acuse con el estatus del documento enviado. Este WS está compuesto por las
siguientes operaciones de tipo REST:

 Post

La URL de pruebas de integración para utilizar el servicio es la siguiente:


https://servicioretencion.cloudapp.net/api/Recibe?versionEsquema=[VersiondelEsquema]

La descripción de la operación es la siguiente:

Recibe
Al ser una operación REST se puede enviar como una petición HTTP y no es necesario hacer una
referencia al servicio Web como en el caso de la autenticación.

Esta operación realiza de manera asíncrona la recepción y validación de los comprobantes de


retenciones. También regresa un acuse con el resultado o estatus en el que se encuentra el
comprobante enviado.

Página 12 de 26
Los parámetros que requiere dicha operación son los siguientes:

Parámetro Tipo de Dato Descripción Tipo de Parámetro


versionEsquema String Es la versión del Entrada
esquema, para esta
primera entrega
siempre será
“versionEsquema=1.0”.
Contenido MultipartFormDataContent Contiene el contenido Entrada
de la petición que se
compone de un
streamcontent, un
nombre y el nombre del
archivo por cada uno de
los comprobantes a
enviar.
Token Autenticación Header Contiene el token de Entrada
autenticación que se
obtuvo en el servicio
correspondiente, se
debe de usar el nombre
“Authorization” y el
valor debe de ser en el
siguiente formato
“WRAP
access_token="Token"”
Metodo HttpMethod Indica qué método Entrada
acepta la acción
pertinente.
Acuse Acuse Contiene el acuse con Salida
el código de respuesta
o estatus del
comprobante que se
envió

Ejemplo de código en C# para poder solicitar la recepción de comprobantes de retención:

El código que se muestra a continuación es solo el llamado al método, porque antes de esto según lo
que se ha indicado en este mismo documento primero hay que crear el cliente de autenticación y
solicitar el token correspondiente.

Página 13 de 26
Ejemplo de petición al servicio de recepción de comprobantes de retención:

POST https://servicioretencion.cloudapp.net/api/Recibe?versionEsquema=1.0 HTTP/1.1

Authorization: WRAP
access_token="role=user&http%3a%2f%2fschemas.microsoft.com%2faccesscontrolservice%2f2010%2f0
7%2fclaims%2fidentityprovider=https%3a%2f%2ffilerepository.accesscontrol.windows.net%2f&Audienc
e=https%3a%2f%2fservicioretencion.cloudapp.net%2f&ExpiresOn=1416414419&Issuer=https%3a%2f%2
ffilerepository.accesscontrol.windows.net%2f&HMACSHA256=C7E7ZYLfGRiCOCFea2nqNluxL5JiRrwOV5h
WPJn8KYg%3d&wrap_subject=3230303031303030303030333030303033313131"

Content-Type: multipart/form-data; boundary="651e1102-b6b0-4317-bb2b-f3a3b2360f98"

Host: servicioretencion.cloudapp.net

Content-Length: 3509

Expect: 100-continue

--651e1102-b6b0-4317-bb2b-f3a3b2360f98

Content-Disposition: form-data; name=file; filename=6a15f029-9674-42a8-bdee-a6d337f681a5;


filename*=utf-8''6a15f029-9674-42a8-bdee-a6d337f681a5

<retenciones:Retenciones xmlns:retenciones="http://www.sat.gob.mx/retencionpago/1"
xmlns:tfd="http://www.sat.gob.mx/TimbreFiscalDigital" Version="1.0" FolioInt="FolioInt1"
Sello="GwQlJNeT/JBvhPvz3uPCo98lJezvhsYFJXvc4hzE0NZFAipLqW9jS4VEAXaoaGK29L1szeRHnXMS/ppG
8GZPc9+OGpy44zFkkIR7gfqITa664RsB+NBd3MuTMot32mKMBhR8WjCRP11Ku1ubFvCU92ro1oFPGB8FD

Página 14 de 26
+8rwoU+VXE=" NumCert="20001000000200001651"
Cert="MIIEYzCCA0ugAwIBAgIUMjAwMDEwMDAwMDAyMDAwMDE2NTEwDQYJKoZIhvcNAQEFBQAwggF
cMRowGAYDVQQDDBFBLkMuIDIgZGUgcHJ1ZWJhczEvMC0GA1UECgwmU2VydmljaW8gZGUgQWRtaW5
pc3RyYWNpw7NuIFRyaWJ1dGFyaWExODA2BgNVBAsML0FkbWluaXN0cmFjacOzbiBkZSBTZWd1cmlkYW
QgZGUgbGEgSW5mb3JtYWNpw7NuMSkwJwYJKoZIhvcNAQkBFhphc2lzbmV0QHBydWViYXMuc2F0Lmdv
Yi5teDEmMCQGA1UECQwdQXYuIEhpZGFsZ28gNzcsIENvbC4gR3VlcnJlcm8xDjAMBgNVBBEMBTA2MzAw
MQswCQYDVQQGEwJNWDEZMBcGA1UECAwQRGlzdHJpdG8gRmVkZXJhbDESMBAGA1UEBwwJQ295b2Fj
w6FuMTQwMgYJKoZIhvcNAQkCDCVSZXNwb25zYWJsZTogQXJhY2VsaSBHYW5kYXJhIEJhdXRpc3RhMB4X
DTEzMDcxMDA2Mzc0M1oXDTE3MDcxMDA2Mzc0M1owgasxITAfBgNVBAMTGEZFUk5BTkRPIENBTUFDS
E8gUkFNSVJFWjEhMB8GA1UEKRMYRkVSTkFORE8gQ0FNQUNITyBSQU1JUkVaMSEwHwYDVQQKExhGRVJ
OQU5ETyBDQU1BQ0hPIFJBTUlSRVoxCzAJBgNVBAYTAk1YMRYwFAYDVQQtEw1DQVJGNzQwNzA1M0gxM
RswGQYDVQQFExJDQVJGNzQwNzA1TURGUk5OMDkwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAL
rcbMRDXwDy/bRA4XPAYABrAzbaTDEIBGjTbJ8Xk+rwSZUAMhpeYF6j3gtTzowCjNIXcVgzUrEbo24vj6/WBJu
EkBVujvOyAOGx9oyulmI1CdEwlslUNcdVq+5XiBiMuHwBHfJAAlQvwvUVKwErTAySsKQy9MQxWgqKW6bO
IqWZAgMBAAGjTzBNMAwGA1UdEwEB/wQCMAAwCwYDVR0PBAQDAgPYMBEGCWCGSAGG+EIBAQQEA
wIFoDAdBgNVHSUEFjAUBggrBgEFBQcDBAYIKwYBBQUHAwIwDQYJKoZIhvcNAQEFBQADggEBACKzMvNke
h+atORnx0jBdD3aFvswN/diLfGY1BUD122WDGvudiGER/qUDdEZ2Cpdttpw4AjYeEQJOrZpl0De6qTSB/YPuf
fTsnIM5XVk8Q2fI02AiJyy9BcQSS5sEN9FAy2/0UZXmhyGYEksajQPD993VoiUK82GvGJtwVlJy0yi9oDeHGsA
UfXdnZz51+1PcjZj8C01V7dADmocaA+oNZw1Ttxi+Y3swhqkUzBalhu7Rte9SCppM/rNmmcuTi0/L83wIiAuie
vMUyK5UfTpDahKxdC5cHxLsR70lmc3UII2GjATlg09qrEMT5x4l/c9n+1T28mcF7XvlKx4JtdZJqw="
FechaExp="2014-11-19T16:10:05+00:00" CveRetenc="Servicios profesionales"
DescRetenc="DescRetenc1">

<retenciones:Emisor RFCEmisor="LAMG851211E33" NomDenRazSocE="NomDenRazSocE1"


CURPE="LAMG851211HNLNLD06" />

<retenciones:Receptor Nacionalidad="Nacional">

<retenciones:Nacional RFCRecep="LAMG881211O34" NomDenRazSocR="NomDenRazSocR1"


CURPR="LAMG881211HNLNLD06" />

</retenciones:Receptor>

<retenciones:Periodo MesIni="1" MesFin="1" Ejerc="2004" />

<retenciones:Totales montoTotOperacion="1" montoTotGrav="1" montoTotExent="1"


montoTotRet="1">

<retenciones:ImpRetenidos BaseRet="1" montoRet="1" TipoPagoRet="Pago definitivo" />

</retenciones:Totales>

<retenciones:Complemento>

<tfd:TimbreFiscalDigital xmlns:tfd="http://www.sat.gob.mx/TimbreFiscalDigital" Version="1.0"


UUID="4B70F250-5888-42A0-94D5-7CC64EA6BBE1" FechaTimbrado="2014-11-19T15:10:06+00:00"
selloCFD="GwQlJNeT/JBvhPvz3uPCo98lJezvhsYFJXvc4hzE0NZFAipLqW9jS4VEAXaoaGK29L1szeRHnXMS/
ppG8GZPc9+OGpy44zFkkIR7gfqITa664RsB+NBd3MuTMot32mKMBhR8WjCRP11Ku1ubFvCU92ro1oFPGB
8FD+8rwoU+VXE=" noCertificadoSAT="20001000000300003111"

Página 15 de 26
selloSAT="I97yVrUoj+XbAyIVswtS/F3pxA/3cy/NWL2bwFRY0I/MiVJu2LCIdIZCAWPDxhFQYUuzyvu7kQGM
mkK8CLtZPkiKpDWtCXqc5lgGJyYBy2Sn05HCaFfFTwlPjAVx7O4LzSBOlOKqXItWjIlqyotRxQkZcXeV5SvRMAz
0fEobMEg=" />

</retenciones:Complemento>

<retenciones:Addenda />

</retenciones:Retenciones>

--651e1102-b6b0-4317-bb2b-f3a3b2360f98--

En el ejemplo anterior se puede visualizar que la petición va dividida en dos partes:

 La primera de ellas es el Header que contiene el token de autenticación, del cual se puede
encontrar el detalle en el punto anterior.
 La segunda es aquella que contiene la petición hacia el servicio con los parámetros ya
establecidos anteriormente. Como se mencionó en el punto de autenticación, esta operación
del Web Services solo podrá ser usada siempre y cuando se haya autenticado de manera exitosa
y el token sea válido en el tiempo que se está intentando consumir.

Ejemplo de Respuesta del Servicio de recepción de comprobantes de retención:

TTP/1.1 200 OK

Cache-Control: no-cache

Pragma: no-cache

Content-Type: application/json; charset=utf-8

Expires: -1

Server: Microsoft-IIS/8.5

X-AspNet-Version: 4.0.30319

X-Powered-By: ASP.NET

Date: Wed, 19 Nov 2014 16:10:36 GMT

Content-Length: 1617

Página 16 de 26
{"AcuseRecepcionRetencion":{"uuid":"4B70F250-5888-42A0-94D5-
7CC64EA6BBE1","signature":{"signedInfo":{"canonicalizationMethod":{"any":null,"algorithm":"http://w
ww.w3.org/TR/2001/REC-xml-c14n-
20010315"},"signatureMethod":{"hMACOutputLength":null,"any":null,"algorithm":"http://www.w3.org/
2001/04/xmldsig-more#hmac-
sha512"},"reference":{"transforms":[{"text":null,"algorithm":"http://www.w3.org/TR/1999/REC-xpath-
19991116","<XPath>k__BackingField":"not(ancestor-or-self::*[local-
name()='Signature'])"}],"digestMethod":{"any":null,"algorithm":"http://www.w3.org/2001/04/xmlenc#s
ha512"},"digestValue":"ZDoewJSy9CQDghknJsO4KBAVqGKoVCWrUIAJzlRupg+V0c8aKOa7GuiiVtfueG51j
Cs0OumovtXqDDI+Ai09FQ==","id":null,"uRI":"","type":null},"id":null},"signatureValue":"gPPHO2ocv5KZx
4Qm45yhuB/HZQa2TgSmUK+JxINjQMJJhlsLvymsR2t68s444DUJ6+oEwVLU7FH98P6BxG6iuA==","keyInfo
":{"itemsElementName":null,"text":null,"id":null,"<X509Data>k__BackingField":null,"<KeyName>k__Bac
kingField":"E34953FDC139F440","<KeyValue>k__BackingField":{"text":null,"<RSAKeyValue>k__BackingF
ield":{"modulus":"mqm4BTjfHGr4ycLK3a02cLofgtInLtznkvETEFkhuOECvGanf12OiU3ja9rj5wJ8MjdxtQjJW
wqq08ohEyLduaTsY4Ahj4ybyExVC814i9BThqZcQkmn2C+tPY7HCXzmp8gJqjINBwAjlEUu9zuSMzdhc0a/RE
gDKXaUWPn5BiC0lg+s4BCdUvHGSW4M3pL2SuAkXR4XNOLKUfxngs3KgO02Lw3CHnlgqyXuH38JlGtRUyW
9L9Zgc/GqO0ckSgL01+kh5ciQfBORnUbWaLXk6DxDioXe0Yfn8r3gjBr6t2pdgy1rFbYIRkCL3Eucxq41ay/hVW
+st2hdUr9Xqr3TVQ==","exponent":"AQAB"}}},"objectType":null,"id":"SelloSAT"},"codEstatus":"Comprob
ante recibido satisfactoriamente","fecha":"2014-11-
19T10:10:34.5483299","noCertificadoSAT":"20001000000200001651","listaIncidencia":[]}}

En el ejemplo mostrado en la imagen anterior se puede ver que la respuesta contiene dos partes:

 La primera de ellas es el Header que contiene temas relacionados con la seguridad.


 La segunda de ellas es el Body que contendrá los parámetros de salida mencionados
anteriormente, es decir, el acuse.

Mensajes Recibidos desde el servicio.

Catálogo de Incidencias - Recepción Esquema de Retenciones


Evento Mensaje Observaciones ¿Se recibe Descripción para su
Retención? consulta.

1001 Autenticación no válida. No Aplica Autenticación no


válida
1002 Comprobante no Se emplean los No Aplica. Comprobante no
encontrado en la ruta datos Encontrado.
especificada. Ruta proporcionados
proporcionada: <Ruta por el PAC.
Retención>."

Página 17 de 26
1003 Metadatos no válidos. Se emplean los No Metadatos No
Hash: <Hash>, RFC Emisor: datos Válidos
<RFC Emisor>, No. proporcionados
Certificado: <Numero por el PAC.
Certificado>, UUID: <UUID,
Fecha Timbrado: {Fecha
Timbrado}.

1004 La estructura del Si se recibe, si se Estructura Inválida


comprobante recibido no tienen los datos
es válida. mínimos y el TFD es
válido.

1005 Metadatos no No se recibe. Metadatos No


correspondientes al Correspondientes
documento de retenciones al documento
retenciones
1006 El Timbre proporcionado Se emplean los No se recibe. Timbre existente.
ya existe. UUID: <UUID>. datos
proporcionados
por el PAC.

1007 El documento recibido fue Se recibirá el Se recibe. Documento de


previamente cancelado. documento de Retención
retención previamente
cancelado
1008 El PAC que envía es . No se recibe El PAC que envía es
diferente al PAC que diferente al PAC
certificó. que certificó.

1009 El documento de No se recibe El documento de


retenciones no cuenta con retenciones no
los datos mínimos. cuenta con los
datos mínimos.

1010 Sello de certificación No se recibe Sello de


inválido. certificación
inválido.

Evento Mensaje Observaciones ¿Se recibe CFDI? Descripción para


su consulta.
1011 Sello del documento de Si se recibe. Si el Sello del
resto de las comprobante

Página 18 de 26
retenciones inválido validaciones son inválido.
correctas. Por
ejemplo: Datos
mínimos, Sello de
certificación valido.

1012 TFD no válido. No se recibe. TFD no válido

1013 Versión del estándar no Se validará la Si se recibe. Ver Versión del


vigente versión del descripción de flujo estándar no
documento VS el alterno. vigente
esquema vigente De otra manera se
de retenciones rechaza.
1014 Comprobante con envío No se recibe Comprobante con
extemporáneo por vigencia envío
de versión extemporáneo por
vigencia de
versión

1015 Uso del complemento no Sí y genera la Uso del


vigente incidencia complemento no
vigente
1016 Uso de complemento no Se validará que No se recibe Complemento no
permitido no incluyan un permitido
complemento de
CFDI

1017 Uso del certificado de FIEL Se validará sí el No se recibe Uso del certificado
no válido Emisor del de FIEL no válido
documento es
persona moral
no haya
realizado el sello
del documento
con FIEL

Servicio de Cancelación
Es un servicio web que permite: a) realizar la cancelación de los comprobantes de retenciones enviados
con anterioridad y que no hayan sido cancelados previamente, b) devolviendo un acuse con el estatus
de cada una de las operaciones. Este WS está compuesto por las siguientes operaciones de tipo REST:

 Post

La Url de pruebas de integración para utilizar el servicio es la siguiente:


https://cancelaretencion.cloudapp.net/api/Cancela

Página 19 de 26
La descripción de la operación es la siguiente:

Cancela
Al ser una operación REST se puede enviar como una petición HTTP y no es necesario hacer una
referencia al servicio Web como en el caso de la autenticación.

Esta operación: a) realiza la cancelación de los folios correspondientes a los comprobantes de


retenciones enviados con anterioridad y b) devuelve un acuse con el estatus en el que queda cada uno
de los folios enviados.

Los parámetros que requiere dicha operación son los siguientes:

Parámetro Tipo de Dato Descripción Tipo de Parámetro


Contenido MultipartFormDataContent Contiene el contenido Entrada
de la petición que se
compone de un string
que es la petición de
cancelación, un
encodding que debe
der ser “UTF8” y un tipo
de contenido que debe
de ser
“application/xml”.
Token Autenticación Header Contiene el token de Entrada
autenticación que se
obtuvo en el servicio
correspondiente, se
debe de usar el nombre
“Authorization” y el
valor debe de ser en el
siguiente formato
“WRAP
access_token="Token"”
Metodo HttpMethod Indica qué método Entrada
acepta la acción
pertinente.
Contentype Header Content Type Se debe de indicar el Entrada
tipo de contenido de la
petición y debe de ser
“application/xml”
Acuse Acuse Contiene el acuse con el Salida
código de respuesta o
estatus del
comprobante que se
envió

Ejemplo de código en C# para poder solicitar la cancelación de comprobantes de retención:

Página 20 de 26
El código que se muestra a continuación es solo el llamado al método, porque antes de esto según lo
que se ha indicado en este mismo documento primero hay que crear el cliente de autenticación y
solicitar el token correspondiente.

Ejemplo de petición al servicio de cancelación de comprobantes de retención:

POST https://cancelaretencion.cloudapp.net/api/cancela HTTP/1.1

Authorization: WRAP
access_token="role=user&http%3a%2f%2fschemas.microsoft.com%2faccesscontrolservice%2f2010%2f0
7%2fclaims%2fidentityprovider=https%3a%2f%2ffilerepository.accesscontrol.windows.net%2f&Audienc
e=https%3a%2f%2fcancelaretencion.cloudapp.net%2f+&ExpiresOn=1416416044&Issuer=https%3a%2f%
2ffilerepository.accesscontrol.windows.net%2f&HMACSHA256=awZva%2b%2bxnfqUIoAFI6hYvg1Iw7o5i
8zFl5tJNvB0X0k%3d&wrap_subject=3230303031303030303030333030303033313131"

Accept: application/xml

Content-Type: application/xml

Host: cancelaretencion.cloudapp.net

Content-Length: 3694

Expect: 100-continue

<?xml version="1.0"?><Cancelacion xmlns:xsd="http://www.w3.org/2001/XMLSchema"


xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" RfcEmisor="ACL831101752" Fecha="2014-
11-19T16:36:57" xmlns="http://cancelaretencion.sat.gob.mx"><Folios><UUID>862bb647-50da-4ff8-
a91a-04db1f9bb2b4</UUID></Folios><Folios><UUID>69f2e141-474a-4728-a4ad-
bc99f3d41ee2</UUID></Folios><Folios><UUID>9f266167-60b3-4f65-baea-
7444ed351f77</UUID></Folios><Folios><UUID>ea22caf1-264e-416a-9eab-
09d5952ae719</UUID></Folios><Folios><UUID>9ae9d656-d9ff-49cb-bf99-

Página 21 de 26
75dab55879f2</UUID></Folios><Signature
xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod
Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /><SignatureMethod
Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" /><Reference
URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-
signature" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"
/><DigestValue>RbsFXIvt3yPozJ8SKBdxIBO18qs=</DigestValue></Reference></SignedInfo><SignatureV
alue>TfJ8sZvaxwbAKwg+zHJB1Rkwhv/YQlMsq3K4KNLB6PIEjd4VOYhRRCbtpZiuc/sAHyhrr3UqOqo8iF7wG
mXfwqUdD+ei6sdf790EtPhoDx6mG3dRHPNLQEM2xI8aaf6tx73GaFD1bXZwcLaPQY5OZBpMu/bJ6aVy+Tw
DmoXoW5c=</SignatureValue><KeyInfo><X509Data><X509IssuerSerial><X509IssuerName>OID.1.2.840.
113549.1.9.2=Responsable: ACDMA, OID.2.5.4.45=SAT970701NN3, L=Coyoacán, S=Distrito Federal,
C=MX, PostalCode=06300, STREET="Av. Hidalgo 77, Col. Guerrero", E=asisnet@pruebas.sat.gob.mx,
OU=Administración de Seguridad de la Información, O=Servicio de Administración Tributaria, CN=A.C. 2
de
pruebas(4096)</X509IssuerName><X509SerialNumber>28652417209938216223553305454808150995
4798171957</X509SerialNumber></X509IssuerSerial><X509Certificate>MIIFbjCCA1agAwIBAgIUMjAwM
DEwMDAwMDAzMDAwMDI3NzUwDQYJKoZIhvcNAQEFBQAwggFmMSAwHgYDVQQDDBdBLkMuIDIgZGU
gcHJ1ZWJhcyg0MDk2KTEvMC0GA1UECgwmU2VydmljaW8gZGUgQWRtaW5pc3RyYWNpw7NuIFRyaWJ1
dGFyaWExODA2BgNVBAsML0FkbWluaXN0cmFjacOzbiBkZSBTZWd1cmlkYWQgZGUgbGEgSW5mb3JtYW
Npw7NuMSkwJwYJKoZIhvcNAQkBFhphc2lzbmV0QHBydWViYXMuc2F0LmdvYi5teDEmMCQGA1UECQwd
QXYuIEhpZGFsZ28gNzcsIENvbC4gR3VlcnJlcm8xDjAMBgNVBBEMBTA2MzAwMQswCQYDVQQGEwJNWDE
ZMBcGA1UECAwQRGlzdHJpdG8gRmVkZXJhbDESMBAGA1UEBwwJQ295b2Fjw6FuMRUwEwYDVQQtEwxT
QVQ5NzA3MDFOTjMxITAfBgkqhkiG9w0BCQIMElJlc3BvbnNhYmxlOiBBQ0RNQTAeFw0xNDAzMTkwMDIw
MjRaFw0xODAzMTkwMDIwMjRaMIHeMSowKAYDVQQDEyFBRE1JTklTVFJBQ0lPTiBDT05ET01JTklPIExPU
09MRVMxKjAoBgNVBCkTIUFETUlOSVNUUkFDSU9OIENPTkRPTUlOSU8gTE9TT0xFUzEqMCgGA1UEChMh
QURNSU5JU1RSQUNJT04gQ09ORE9NSU5JTyBMT1NPTEVTMSUwIwYDVQQtExxBQ0w4MzExMDE3NTIgLy
BGVUFCNzcwMTE3QlhBMR4wHAYDVQQFExUgLyBGVUFCNzcwMTE3TURGUk5OMDkxETAPBgNVBAsTCF
BydWViYSAxMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCtKZI6o1p8bGmm9eJkgKgA2Wm5o8+d
ad67FN3645eYkD0JiidPTeIUKJWuwgdKYEqg6TElT6yfcxfOenA8dqvg7Ijf847FUl2B5lagXe3CPkidg66oCZTgg
2oPgWioWfu1rxXNoj3I075hnf4umyJ57Agd0OCB4f2jp45p2pfDwwIDAQABox0wGzAMBgNVHRMBAf8EAj
AAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQUFAAOCAgEAflPuGbi9yjScjpmIwdMthDdxvjpOgGbUM
XsXqljAXR1Tyl1+IzMoFXQLXkM/6yo9oTnQY/4gY0gIrN63+IvY7RtHIY5/BF5cRrFQmBNP8x6PkvlxP/QfJdo7+
+SR33nV6vNlC1lX7xRPhzAnFrEZhTenH4jy06O6PGGJMFizc8fff4zRChTFhEctb3h4HR21UJuwEh7WBvrlt+uk
8RRIBICdQBiXIGrblxe588w3VFMmiMDgnrNc7GqlVSpc/x7Y1xGE+nxAeXw4Pm7NH9PzaUM0Y8cdwQF5rC
xRe5hjPPqdEUP7dSdMmyNRRqAKglHUxGDMa651M65RJWGv8h3xKMA8ZL+/71C/9h/kV4JMzusmUNXLil
wtFQSq00sUUoqrq0XgA6/1U1Mp6hNrLsGVjOC85N3JWvNnR2/c3RHSN4UwuDPL7IV9tASPK0gIRqaxtcyVv
ef7W7S+xZyy4kowUKov+PCRWcteWymXdVrbGvaNwpC/CFpmYxxPEVpFBS21Nhih+U+tOBzIL3fOa7hQLi9
GVIuxKOqDF3uJDFbLfb4ta5hgCsmCoyivRpc2ZazPsKty0qfRUE/nVikURevHF3Ti27Cdmqi2J6aFObx/qPj9cZp
ISzPJtJdYKNP9RJhot1L6d5MPKYRUUVTa4XXLqZdQeayvUwH9kNbZwEJaaVc=</X509Certificate></X509Da
ta></KeyInfo></Signature></Cancelacion>

Página 22 de 26
En el ejemplo anterior se puede visualizar que la petición va dividida en dos partes:

 La primera de ellas es el Header que contiene: a) el token de autenticación, del cual se puede
encontrar el detalle en el punto anterior y b) el Content Type de la petición que se encuentra
definido en los parámetros de la operación.
 La segunda es aquella que contiene la petición hacia el servicio con los parámetros ya
establecidos anteriormente. Como se mencionó en el punto de la autenticación esta operación
del Web Services solo podrá ser usada siempre y cuando se haya autenticado de manera exitosa
y el token sea válido en el tiempo que se está intentando consumir.

Ejemplo de Respuesta del Servicio de cancelación de comprobantes de retención:

HTTP/1.1 200 OK

Cache-Control: no-cache

Pragma: no-cache

Content-Length: 1818

Content-Type: application/xml; charset=utf-8

Expires: -1

Server: Microsoft-IIS/8.5

X-AspNet-Version: 4.0.30319

X-Powered-By: ASP.NET

Date: Wed, 19 Nov 2014 16:37:30 GMT

<?xml version="1.0"?><Acuse xmlns:xsd="http://www.w3.org/2001/XMLSchema"


xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Fecha="2014-11-19T10:37:30.2590203"
RfcEmisor="ACL831101752" xmlns="http://cancelaretencion.sat.gob.mx"><Folios><UUID>862BB647-
50DA-4FF8-A91A-
04DB1F9BB2B4</UUID><EstatusUUID>1201</EstatusUUID></Folios><Folios><UUID>69F2E141-474A-
4728-A4AD-
BC99F3D41EE2</UUID><EstatusUUID>1201</EstatusUUID></Folios><Folios><UUID>9F266167-60B3-
4F65-BAEA-
7444ED351F77</UUID><EstatusUUID>1201</EstatusUUID></Folios><Folios><UUID>EA22CAF1-264E-
416A-9EAB-
09D5952AE719</UUID><EstatusUUID>1201</EstatusUUID></Folios><Folios><UUID>9AE9D656-D9FF-
49CB-BF99-75DAB55879F2</UUID><EstatusUUID>1201</EstatusUUID></Folios><Signature
Id="SelloSAT" xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod
Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /><SignatureMethod
Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-sha512" /><Reference
URI=""><Transforms><Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-

Página 23 de 26
19991116"><XPath>not(ancestor-or-self::*[local-
name()='Signature'])</XPath></Transform></Transforms><DigestMethod
Algorithm="http://www.w3.org/2001/04/xmlenc#sha512"
/><DigestValue>Em0KZwyWZ6Ez4h0Uj7xTGLNUsYehFbwanUUo8rltzfhbuY+ZkwV2RlPu00zuVy/LzjVXVnC
Jon7TJEmggfpi2A==</DigestValue></Reference></SignedInfo><SignatureValue>bMTHA4UIs9NsGxNWzi
93vPsa1aJx2dZXu7qjy8Ek6uJaQ+JNEWJmtg7IMx75MVaGfIGt4M5degNkqOunziLa4Q==</SignatureValue
><KeyInfo><KeyName>20001000000300003586</KeyName><KeyValue><RSAKeyValue><Modulus>n77f
bi0dTENVn43LCUOIF/8iyQObFg/AaTRBdpf0fVuozOOy48INue46sN54AHL+I50s1U8Nh6Dq+MRvRNc8WyH
PQWsnmSaicT5vAkkzqucVj004WyLcmpysY45DrCxSitPMRzop3XboPr1msWd3EuyduUtbu3QmNRin8uzpY
g8=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue></KeyValue></KeyInfo></Signature></Ac
use>

En el ejemplo mostrado en la imagen anterior se puede ver que la respuesta contiene dos partes:

 La primera de ellas es el Header que contiene temas relacionados con la seguridad.


 La segunda de ellas es el Body que contendrá los parámetros de salida mencionados
anteriormente, es decir, el acuse.

Mensajes Recibidos desde el servicio.

Códigos de Respuesta Cancelación - Esquema de Retenciones

Códigos de Respuesta Cancelación - Esquema de Retenciones

Validación de la cancelación del CFDI

Regla de validación Código

UUID Cancelado 1201

UUID Previamente cancelado 1202

Estatus UUID UUID No encontrado o no corresponde en el emisor 1203

UUID No aplicable para cancelación 1204

UUID No existe 1205

UUID no corresponde a un CFDI del Sector Primario 1206

Página 24 de 26
Validación de la cancelación del CFDI

Regla de validación Código

XML mal formado 1301

Sello mal formado o inválido 1302

Estatus Sello no corresponde al emisor 1303


Petición
Certificado revocado o caduco 1304

Página 25 de 26

Вам также может понравиться