Cancelación Retenciones 1 Introducción El Web Service de Cancelación proporcionado por Tralix tiene la misma definición que el servicio del SAT expuesto hacia los PAC’s, esto tiene como consecuencia que el cliente al hacer la petición de cancelación hacia el servicio de Tralix debe emplear obligatoriamente XMLSignature para firmar la petición. Una vez teniendo la petición formada puede ser enviada a Tralix en donde, Tralix como PAC se encarga de añadir un Token de Autenticación proporcionado por el SAT para hacer 100% valida la petición de cancelación. De esta manera se lleva a cabo el proceso de cancelación de CFDI mediante la llamada directa al Web Service de Tralix. Nota: 1) Toda petición de cancelación debe estar firmada usando XMLSignature, cumpliendo con los lineamientos definidos por el SAT. 2) Cada cancelación consume un timbre del paquete contratado por el cliente. 2 Estructura del Servicio 2.1 Firma XML (XML Signature) Antes de enviar la solicitud, esta debe estar firmada digitalmente. Aunque la generación de la firma no se detalla en este documento, se explican los elementos relevantes: Elemento Descripción DigestValue Contiene el resultado de aplicar el algoritmo hash a el (o los) recurso(s) transformado(s). SignatureValue Contiene el resultado de una firma codificada en Base64 (la firma generada con los parámetros especificados en el elemento SignatureMethod del elemento SignedInfo después de aplicar el algoritmo especificado por el CanonicalizationMethod. X509IssuerName Contiene el Qualified Name del certificado con el que se firma la petición. X509SerialNumber Número de serie del certificado con el que se firma la petición. X509Certificate Es el certificado en base64 con el que firma la petición. Fragmento de ejemplo del nodo de firma: x4XBfF1LtX9WSj8pBp3mG96OWaE= cP+JbE40A8apElFcXgmv0W2FwPve3hDphTCOkpWc9JW3w2YX0V6P4E4/7y4a8SM0H2fkF3a2lZv3hyCp7R2XXsaHraurmAv0KaHs7so8/dN7d4OTVqa17584ays027zkYcUZeda3o4dcTGROnrlaEEtAEW/IDkTnKSDZwWsvpg= Nota: este manual no explica la manera de llevar a cabo la firma mediante XML Signature ya que esta fuera del alcance, sin embargo, se definen algunos elementos que generalmente causan confusión al momento de firmar la petición. 2.2 Parámetros requeridos Endpoint POST http://IP_DOMAIN:8081/ HTTP/1.1 Método Ambiente Ruta POST Pruebas 🔗 https://pruebastfd.tralix.com:7070/retenciones/cancelaUno/ POST Productivo 🔗 https://timbrador.tralix.com:7070/retenciones/cancelaUno/ Autenticación y Headers Header Value Accept-Encoding gzip,deflate User-Agent Jakarta Commons-HttpClient/3.1 Parámetros Parámetro Tipo Uso Descripción Content-Type Header Requerido text/xml; charset=UTF-8 idCustomer Header Requerido customer_key_id. Clave única del cliente asignada por Tralix idCustomer: customer_key_idHost: IP_DOMAIN:8081ipAddress: IP_DOMAIN 2.3 Ejemplo de petición NOTA: El REQUEST de la petición debe estar sellada con el CSD con el que emiten. Encabezado HTTP: Toda petición al servicio de cancelación debe incluir las siguientes cabeceras HTTP: POST https://timbrador.tralix.com:7070/retenciones/cancelaUno/ HTTP/1.1 Accept-Encoding: gzip,deflate Content-Type: text/xml;charset=UTF-8 idCustomer: User-Agent: Jakarta Commons-HttpClient/3.1 Host: timbrador.tralix.com ipAddress: Datos que se sellan Request AAIGTZrpSeAiR2gG3C5HB+zYTGc= cCRO+aoBgYoelmLCxX5836fKKaa/pUPc0bQppVu5kW6KOcx/xpiQpuCv6LnhkSwVwtsdlz6qdr3XbY72jCs4+/GH4qfs+WzhTMxa/6aUUl0RJJae1o34G0WCdDs/WfKRooDcIe2oks5s2vWrSd0pmTtC5lPJVTQEgMb9h7zJnV6gNs2Ss3n1XQnJ+psf+cQIyKjjSKv7bYtX3kwjFW04GHlEHZrsQH+DrL9stGRXoZNICMTqTqHHjjnJhxQEB1okY16mS08Vj5q4psZBb5vvTA+gtrrIUYqI9//ahDZ1cGrV/RxzTxJH2Rl/nxkLaZEmi6zHDoipapp20KVXfI8ZTg== OID.1.2.840.113549.1.9.2=responsable: ACDMA-SAT, OID.2.5.4.45=2.5.4.45, L=COYOACAN, S=CIUDAD DE MEXICO, C=MX, PostalCode=06370, STREET=3ra cerrada de cadiz, E=oscar.martinez@sat.gob.mx, OU=SAT-IES Authority, O=SERVICIO DE ADMINISTRACION TRIBUTARIA, CN=AC UAT 292233162870206001759766198444326234574021605684 MIIFszCCA5ugAwIBAgIUMzAwMDEwMDAwMDA0MDAwMDEyOTQwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWRpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMTkwMTA1MDAwMTEwWhcNMjMwMTA1MDAwMTEwWjCB2jElMCMGA1UEAxMcTUFOREFSSU5BIE1BUktFVElORyBTQSBERSBDVjElMCMGA1UEKRMcTUFOREFSSU5BIE1BUktFVElORyBTQSBERSBDVjElMCMGA1UEChMcTUFOREFSSU5BIE1BUktFVElORyBTQSBERSBDVjElMCMGA1UELRQcQiZNMDExMTI3QlEwIC8gRE8mRDYwMTAwOUxSQTEeMBwGA1UEBRMVIC8gQkFVTTkzMDIwMU1NQ0RHUjA1MRwwGgYDVQQLExNNQU5EQVJJTkEgTUFSS0VUSU5HMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAono09SHjdHQwOumVLCvvPPNwVabv5qxwKqO7RiuLODXopBwuGvTS7LERoCpx+KrKdP8C1tPXIFWzJ701kGPSLhUgKrft4Gj031hFLt6vRne/N8fnmYnjiIP11DN2gj6/dbLbwzNSzmpW+4quITKin+zpYegCBNXGJunNrr1y7qREfiD1TssHWfuPnKC7UFzBTXCR425dq5wjxvYQSuIPq4FieyVWFNppcRFhfzSole16wQRfLZoWcR+7DsUfxqZNbNVQpkFVMVQZ1H95MJyjf/MY7+07aXXzt+Ovc+/FVsHjQ8YtaDNMcG8lNXxSQhsvAvX9is0VCfXe4P8Nu62tYwIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAkcEVnJGpXpKxeGAP/U/vH/q8866MwQlW/OUs1yAdEMJZilWu8I5uvfDmPIde7hKwXdpQYFexFWMa6RDODmprY/W6tZRuqeaXpNEXdt/hWnkbN72Bbu6u01WW+rHqVjRCmu1hjhpTkj+S/g9KSeB6gkrwtaCXjykLEIGtIITTOC/vDISEFM/bVkg0Y5Ck0eRBPVURhnUh2GyKkLPDKiQC2UD8fE0Ebe0OHiYMX5jj8v1mbn5F8sAlovlEvFMUDYZgvD/ISF43IK0lK/B6P5ocIitX/lHLMDgrvn/fY57B9y0F58CR1cjBR+JYSDmw/pRA6l/EIpJzJzjLn9TLDfSUBRvpkmrr0CBNhDbMbksXOTjyNDEkOBEgX9qg0rf5T3bAcOs99kVVTvzuEZqSxWoTPZ9NQaEFWUeVjKCJt2qcAfIcpmDfykXyhh0awQVi1ewhLMQ5I4SOcex0yejX7vlIjxFsN5MYx7vH0/NXV0kwPAuUM2vLVzrWkJD4f7+fC0pNFM50viaIBYJLpVBj3uPtmPOIPHvB1xjEbmdZ8m3oQdvkok0FMKmLMXs1C3pgLPIzysTscrPCF8pCJw5Tm+cAUu34BgS2J9r3PdOPLt0gXDxAg3yvkadi4ao5r9JqJhJVpHsUt0GnV2bQR8uZmwPnd1eX8Ojklgym6MGihm+sQ/8= 2.4 Ejemplo de respuesta (Acuse) Respuesta exitosa 0AA0A514-6997-4C1B-8A36-89BB0CB1B265 1201 01 01E53227-38EC-458D-B1D4-08F2B533F98B not(ancestor-or-self::*[local-name()='Signature']) fMuB/Ee3grx4cDFX+GRpnX3ME0l9dLTLdbiYXundyMPS+GOZ1AR2XMtepTSZiD08NzAwF2nFFHWkZOIEU3a4Dw== D4rC8c5ZK2eXtbJWQ2C6xOTeW3dkPIf6u2+i6DbX1FTXqPkVW1dcm4i+I9GEetpJOfS6pSxGBa152QBPimJBNg== 30001000000400001215 nbtVtkPquCMLdpgeClMrTmxzCjyjn8P9YrBlW9jXC/FcXozIYHvzctK1pRxRxLTKlChc9fjluht9ffDfGOWim/4AlTrCiG6om7ItkHbLGMQrABp8qGY+SPmq1xtZ7qbbgoTFCtzP3pN9Z4uSDhdnrF2655sdmDzHJYE9MirNLM4SIdSFsabA31CCAMaWpB4TO6ZmExLp+wUiUyeIFWswc5G5KvmS/lU5tbXLK7zBDDUVjN0K1r/0iaZIZzPMxQcgfgYBrfLGZ3916MkmF28iBk5l1sfNTKS9S445QHKc+6oTP4UDDnjN/K14YWX449BAMxKcelEpjZlBQs1a1eNVcQ== AQAB 3 Motivos de Cancelación Código Descripción 01 Comprobante emitido con errores con relación 02 Comprobante emitido con errores sin relación 03 No se llevó a cabo la operación 04 Operación nominativa relacionada en una factura global 4 Códigos de Respuesta Los códigos de error y la descripción de los mismos contenidos en la excepción CancellationClientException en caso de que se lance son los siguientes: Código Descripción 1201 Petición aceptada 1202 UUID previamente cancelado 1203 UUID no corresponde con el emisor 1205 UUID no existe 1300 Autenticación no válida 1301 XML mal formado 1302 Estructura de folios no válida 1303 Estructura de RFC no válida 1304 Estructura de fecha no válida 1305 Certificado no corresponde al emisor 1306 Certificado no vigente 1307 Uso de FIEL no permitido 1308 Certificado revocado o caduco 1309 Firma mal formada o inválida 1310 Motivo no válido 1311 Folio Sustitución no válido 1312 Folio Sustitución no requerido 1313 Solicitud fuera de la declaración anual 1314 Relación no válida 901 El cliente con el CustomerKey proporcionado no es válido. 902 El RFC no está registrado como cliente. 903 El RFC se encuentra inactivo por el momento. 904 No cuenta con licencia para realizar peticiones. 905 El RFC no pertenece al cliente con el CustomerKey que proporcionó. 906 Ha expirado su periodo de pruebas. 910 No se puede determinar el cliente a partir del RFC. 998 Error en el cliente. 999 Error en el servidor. 5 Consideraciones Técnicas La solicitud debe estar firmada digitalmente mediante XMLSignature, usando un Certificado de Sello Digital (CSD) vigente y autorizado del emisor. Toda petición debe estar completamente firmada y codificada en UTF-8. Se requiere un CustomerKey válido proporcionado por Tralix. El proceso consume un timbre del paquete del cliente. 6 Contacto y Soporte Para soporte técnico, dudas sobre el uso del servicio o solicitud de su CustomerKey, puede comunicarse con su ejecutivo o con el área de soporte técnico de Tralix vía ticket.