Haz clic aqui y descarga: Implementación de la Cancelación.

Cancelación
Pantalla de ejemplo para desarrollar la cancelación
Tabla de codigos de acuse SAT
Validación de la cancelación del CFD
201 UUID Cancelado exitosamente
202 UUID Previamente cancelado
203 UUID No corresponde el R FC del emisor y de quien solicita la cancelación.
205 UUID No existe
Validación de timbrado y cancelación del CFD
301 XML m al formado
302 S ello mal formado o inválido
303 S ello no corresponde a emisor
304 Certificado revocado o caduco
305 La fecha de emisión no esta dentro de la vigencia del CSD del Emisor
306 EL certificado no es de tipo CSD
307 El CFDI contiene un timbre previo
308 Certificado no expedido por el S AT
Parámetros a enviar
• Usuario
• Contraseña
• RFC
• Certificado publico ( igual que en el CFDi)
• Xml de cancelacion (ver R ef 1)
• UUID Array String
• Sello o firma (Ver R ef 2)
Referencia 1
<Cancelacion xmlns="http://cancelacfd.sat.gob.mx" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-­‐instance" Fecha="2015-­‐0 4-­‐2 0T15:53:30" RfcEmisor="SMD040115EL5"><Folios><UUID>F2511526-­‐9 EF8-­‐4 905-­‐9FB4-­‐5 10AF8724E2D</UUID></Folios></Cancelacion>
Referencia 2
1.-­‐ generar xml de c ancelacion
<Cancelacion xmlns="http://cancelacfd.sat.gob.mx" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-­‐instance" Fecha="2015-­‐0 4-­‐2 0T15:53:30" RfcEmisor="SMD040115EL5"><Folios><UUID>F2511526-­‐9 EF8-­‐4 905-­‐9FB4-­‐5 10AF8724E2D</UUID></Folios></Cancelacion>
2.-­‐ sacar un Hash en SHA1 de e l xml anterior y c onvertir e l resultado del Hash e n base64
Eje c#:
byte[] hashdata = sha1(xmlcancel.Text);
string digestvalue = Convert.ToBase64String(hashdata);
Eje PHP: $digestvalue = b ase64_encode(hash('sha1',$datos,true));
3.-­‐armar este xml e incluir e l resultado del Hash
<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-­‐instance"><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-­‐xml-­‐c 14n-­‐
20010315"></CanonicalizationMethod><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-­‐
sha1"></SignatureMethod><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-­‐
signature"></Transform></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod><DigestValue> Resultado del Hash en base64 </DigestValue></Reference></SignedInfo>
4.-­‐ este ultimo xml se va a firmar c on la .key y obtendremos asi el sello (es e l mismo proceso de firmar c omo e l que hacemos e n e l c fdi)
Notas:
Tener mucho c uidado que los xml aquí mostrados no tengan doble e spacio y e stén formados tal y como se muestra obviamente cambiando los valores c orrespondientes
Se e xige que e stos xml sean canonizados
Ref: https://en.wikipedia.org/wiki/Canonical_XML
Ejemplo de Request
•
•
•
•
•
•
•
POST /prometheus/ws_cancel.php?wsdl HTTP/1.1
Content-­‐Type: text/xml; charset=ISO-­‐8859-­‐1
SOAPAction: "”
Host: fprontorojo.n5nitro.com
Content-­‐Length: 1163
Accept-­‐Encoding: gzip, deflate
•
<?xml version="1.0" encoding="ISO-­‐8859-­‐1"?><SOAP-­‐ENV:Envelope SOAP-­‐ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-­‐ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-­‐instance" xmlns:SOAP-­‐ENC="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-­‐
ENV:Body><ns4336:cancelacion xmlns:ns4336="http://tempuri.org"><rfc xsi:type="xsd:string"></rfc><usuario
xsi:type="xsd:string">usuario </usuario><password xsi:type="xsd:string”>Contraseña</password><uuid
xsi:type="xsd:string"></uuid><certificado xsi:type="xsd:string">EL CERTIFICADO VA EN BASE64 COMO EN EL CFDI</certificado><xmlcancelacion
xsi:type="xsd:string”>&lt;Cancelacion xmlns=&quot;http://cancelacfd.sat.gob.mx&quot; xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-­‐
instance&quot; Fecha=&quot;2015-­‐0 4-­‐2 0T15:53:30&quot; RfcEmisor=&quot;SMD040115EL5&quot;&gt;&lt;Folios&gt;&lt;UUID&gt;F2511526-­‐9 EF8-­‐4 905-­‐9 FB4-­‐
510AF8724E2D&lt;/UUID&gt;&lt;/Folios&gt;&lt;/Cancelacion&gt;</xmlcancelacion><firma xsi:type="xsd:string">LA FIRMA VIENE EN BASE 64</firma></ns4336:cancelacion></SOAP-­‐ENV:Body></SOAP-­‐ENV:Envelope>
Acuse exitoso SAT
•
•
EstatusUUID = 200 cancelacion exitosa
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-­‐instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><CancelaCFDResponse xmlns="http://cancelacfd.sat.gob.mx"><CancelaCFDResult Fecha="2014-­‐
08-­‐20T16:58:37.7358421" RfcEmisor="FAC130626CP7"><Folios><UUID>D1988F23-­‐DBEF-­‐41D2-­‐8441-­‐
6517726EF151</UUID><EstatusUUID>200</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-­‐19991116"><XPath> not(ances tor-­‐or-­‐self::*[local-­‐
name()='Signature'])</XPath></Transform></Transforms><DigestMethod
Algorithm="http://www.w3.org/2001/04/xmlenc#sha512"/><DigestValue>zLjl/afSHHZxgKCOBPRKIMuIQ4gQ237cVMTKnHcuUO8xtKtqd45XcOlPaMS
bmNr59HsdhHJhtKI6wVFcsNqWYQ==</DigestValue></Reference></SignedInfo><SignatureValue>DxGxe4i0zKbTGX9Z5/u6f3JT1QY0sgrGyhHVYHtyO
HTpUdrOhBOmCV34sCVTPWTNKsqZNfFAettHMFsRasP96Q==</SignatureValue><KeyInfo><KeyName>00001088888800000003</KeyName><KeyVal
ue><RSAKeyValue><Modulus>5W8PNugL/HbQV7L7H0PPfI4123iMzUsUXa2DdBKVemyGWGFdjhnzs+LLdU4BnKne 2UMBHPrOE0n2rK44DfdTFLBgMhR
hzLsstiaC4rMslW5AWl/dXwgva2EVVhFAuTP31LAGV5shkbPbp75ZCreFE00r14oQv4EpmZuoxhz4yEM=</Modulus><Exponent>AQAB</Exponent></RS
AKeyValue></KeyValue></KeyInfo></Signature></CancelaCFDResult></CancelaCFDResponse></s:Body></s:Envelope>
•
•
EstatusUUID = 202 previamente cancelado
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-­‐instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><CancelaCFDResponse xmlns="http://cancelacfd.sat.gob.mx"><CancelaCFDResult Fecha="2014-­‐
08-­‐20T16:58:37.7358421" RfcEmisor="FAC130626CP7"><Folios><UUID>D1988F23-­‐DBEF-­‐41D2-­‐8441-­‐
6517726EF151</UUID><EstatusUUID>202</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-­‐19991116"><XPath> not(ances tor-­‐or-­‐self::*[local-­‐
name()='Signature'])</XPath></Transform></Transforms><DigestMethod
Algorithm="http://www.w3.org/2001/04/xmlenc#sha512"/><DigestValue>zLjl/afSHHZxgKCOBPRKIMuIQ4gQ237cVMTKnHcuUO8xtKtqd45XcOlPaMS
bmNr59HsdhHJhtKI6wVFcsNqWYQ==</DigestValue></Reference></SignedInfo><SignatureValue>DxGxe4i0zKbTGX9Z5/u6f3JT1QY0sgrGyhHVYHtyO
HTpUdrOhBOmCV34sCVTPWTNKsqZNfFAettHMFsRasP96Q==</SignatureValue><KeyInfo><KeyName>00001088888800000003</KeyName><KeyVal
ue><RSAKeyValue><Modulus>5W8PNugL/HbQV7L7H0PPfI4123iMzUsUXa2DdBKVemyGWGFdjhnzs+LLdU4BnKne 2UMBHPrOE0n2rK44DfdTFLBgMhR
hzLsstiaC4rMslW5AWl/dXwgva2EVVhFAuTP31LAGV5shkbPbp75ZCreFE00r14oQv4EpmZuoxhz4yEM=</Modulus><Exponent>AQAB</Exponent></RS
AKeyValue></KeyValue></KeyInfo></Signature></CancelaCFDResult></CancelaCFDResponse></s:Body></s:Envelope>
Acuse mensaje de error SAT
•
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-­‐instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><CancelaCFDResponse xmlns="http://cancelacfd.sat.gob.mx"><CancelaCFDResult Fecha="2014-­‐
08-­‐20T17:19:29.4935372" RfcEmisor="FAC130626CP7"><Folios><UUID>D1988F23-­‐DBEF-­‐41D2-­‐8441-­‐
6517726EF150</UUID><EstatusUUID>205</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-­‐19991116"><XPath> not(ances tor-­‐or-­‐self::*[local-­‐
name()='Signature'])</XPath></Transform></Transforms><DigestMethod
Algorithm="http://www.w3.org/2001/04/xmlenc#sha512"/><DigestValue>6CjwEKniVa/6st3a1tb0LiIX/Mpo7PPVuGOYfkGNSQ8ypuHSuiWPtUg5Kv8B
J6C/UbMMXZ4wSsMZZ5o0nVl59A==</DigestValue></Reference></SignedInfo><SignatureValue>SpfzPCRB281LU9uM+iUMZ6ymPKTP944X5RGZGzlE
BteKASbpEkJghKKUdiacjCxwD15O9TwTaCwp+uxQDAoDNg==</SignatureValue><KeyInfo><KeyName>00001088888800000003</ KeyName><KeyVal
ue><RSAKeyValue><Modulus>5W8PNugL/HbQV7L7H0PPfI4123iMzUsUXa2DdBKVemyGWGFdjhnzs+LLdU4BnKne 2UMBHPrOE0n2rK44DfdTFLBgMhR
hzLsstiaC4rMslW5AWl/dXwgva2EVVhFAuTP31LAGV5shkbPbp75ZCreFE00r14oQv4EpmZuoxhz4yEM=</Modulus><Exponent>AQAB</Exponent></RS
AKeyValue></KeyValue></KeyInfo></Signature></CancelaCFDResult></CancelaCFDResponse></s:Body></s:Envelope>