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.

DESCARGA SOFTWARE PARA FACTURA ELECTRONICA DE AQUI.
Facturacion, Validacion, Addendas, Librerias de programacion, etc.
CARTA PORTE V3.1
ECODEX TIENE ESTOS NUEVOS DATOS DE CONTACTO :
Comercializacion y Ventas - Evelia Vicke evicke@ecodex.com.mx 33-16-03-03-48
Soporte - Humberto Guerrero soporte@ecodex.com.mx 33-34-90-46-03
.
CANCELANDO CDFI DE FEL
-
- Mensajes: 370
- Registrado: Lun Oct 10, 2011 11:50 am
Re: CANCELANDO CDFI DE FEL
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...
la libreria Microsoft SOAP type library v3.0 para armado de xml de envio
Pegales una estudiada...
-
- Mensajes: 2
- Registrado: Sab Oct 24, 2015 9:12 pm
Re: CANCELANDO CDFI DE FEL
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.
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.
- Adjuntos
-
- Cancelación de CFDI con facturación FEL.docx
- adjunto cancelación fel
- (16.75 KiB) Descargado 462 veces