Página 1 de 1
CANCELANDO CDFI DE FEL
Publicado: Mié Ago 26, 2015 8:47 am
por cpedgarbm
para cancelar un CFDI con FEL se requiere construir un XML y anexar el certificado en Base64 lo cual se puede hacer con OPEN SSL hasta obtener el archivo CertificadoPkcs12_base64 el contenido de este archivo es el que se anexa al XML de envío de cancelacion y se envía FEL.
El asunto es que estoy programando en visual Basic 6.0 y no encuentro la forma de anexar el contenido de ese archivo a mi XML, ¿alguien conoce la forma?
Gracias anticipadas por sus aportaciones.
Re: CANCELANDO CDFI DE FEL
Publicado: Mié Ago 26, 2015 4:08 pm
por jggtz
Cuando desarrollo con VB6, Yo utilizo la libreria Microsoft XML v6.0 (msxml6.dll) para manipular archivos xml y
la libreria Microsoft SOAP type library v3.0 para armado de xml de envio
Pegales una estudiada...
Re: CANCELANDO CDFI DE FEL
Publicado: Sab Oct 24, 2015 9:36 pm
por danielperezvargas
Bueno apenas vi tu mensaje.
espero no sea muy tarde pero de todos modos te paso el código que empleo para cancelar en FEL.
Saludos.
1) Primero obtienes la cadena del certificado base 64 con el openssl sin tocar nada de visual studio:
ver archivo adjunto.
2) código en visual basic
donde:
UsuarioPAC = Dato proporcionado por FEL
PasswordPAC = Dato proporcionado por FEL
RFCEmisor = FRC del Emisor
ListaUUID.ToArray() = Lista de UUID's que se van a cancelar (funciona aunque envíes uno solo)
CSDCertificadoBase64 = texto obtenido tal cual como lo obtienes del "Archivo.pem" abriendolo con el block de notas.
CSDcontrasenaLlavePrivada = texto plano de la contraseña de la llave privada de tu CSD.
'Consumir el servicio (Para cancelar un CFDI).
RespuestaServicio_FEL = ServicioTimbrado_FEL.CancelarCFDI(UsuarioPAC, PasswordPAC, RFCEmisor, ListaUUID.ToArray(), CSDCertificadoBase64, CSDcontrasenaLlavePrivada)
'Se asigna la respuesta al objeto que contendrá la operación de todos los UUID a cancelar.
RespuestaCancelacionDetallada_FEL = RespuestaServicio_FEL.DetallesCancelacion.ToList()
'Se recorre el objeto para obtener la operacion independiente de cada CFDi.
For Each UUID As WSFel2015.DetalleCancelacion In RespuestaCancelacionDetallada_FEL
If UUID.CodigoResultado = "201" Or UUID.CodigoResultado = "202" Then
Dim doc As New System.Xml.XmlDocument
Try
doc.LoadXml(RespuestaServicio_FEL.XMLAcuse)
doc.Save("C:\Archivos de programa\xxxxxx\ArchivosCFDICancelados\" & ListaUUID(0) & ".xml")
Catch ex As Exception
End Try
'valores devueltos en caso de ser exitosa la cancelacion:
MsgBox(UUID.CodigoResultado)
MsgBox(UUID.MensajeResultado)
MsgBox(UUID.UUID)
Else
'valores devueltos en caso de ser erronea la cancelacion:
MsgBox(UUID.CodigoResultado)
MsgBox(UUID.MensajeResultado)
MsgBox(UUID.UUID)
MsgBox("Error al cancelar el recibo en el Sat, intente nuevamente. Error: " & UUID.CodigoResultado & ", " & UUID.MensajeResultado)
Return False
End If
Next
Saludos.