Herramientas para Desarrolladores e Integradores

CERTIFICACIÓN CFDI cuenta con los Desarrollos de Interfaces a la medida de tus necesidades.

También contamos con API’s Personalizados para sus ERP / GRP.

Tenemos las siguientes opciones para Desarrolladores e Integradores:

  • Si ya tienes el archivo XML sellado y solo deseas el timbre

    Solución: Transmite el XML para recibir el Timbre Fiscal de tres formas: 

    1.- Utiliza nuestros servicios Web Service tipo SOAP para todos los tipos de CFDI. Consulta nuestro manual, dependiendo del lenguaje de programación aquí.

    2.- Envía tus XML a través de nuestro sistema instalado en tu PC con Windows o tu Server Windows, este sistema transmite a nuestro portal, timbra el XML y regresa el XML timbrado o el error que encontró (en caso de que exista), el sistema se configura para cada PC que desees utilizar para el timbrado.

    3.- Puedes enviar todos los XML sellados en un archivo ZIP a uno de nuestros servidores FTP. Se procesarán cada uno de los XML al final se emiten dos archivos ZIP y se generan en el mismo servidor FTP, uno con los XML timbrados y el otro con los PDF de cada CFDI.

  • Si tienes el archivo XML sin sellar

    Instala nuestro sistema de envío de XML tu PC Windows, esté sistema sella el XML y lo envía a timbrar a nuestros servicios para obtener el XML timbrado, opcionalmente se obtiene el PDF en un formato estándar con la información del XML.

  • Si NO tienes el archivo XML, solo datos 

    Puedes instalar un sistema en tu PC Windows para interpretar, emitir el XML, sellarlo y enviarlo a nuestros servicios de timbrado.
    Solo requieres llenar un archivo de texto simple y dejarlo en la carpeta de ingreso de CFDI del sistema y obtener el XML timbrado.

  • Como cancelar tus CFDI

    Puedes hacerlo a través de nuestro Web Service, consulta el "Manual de Consumo de Web Service" para la conexión del servicio dependiendo del lenguaje de programación.

    También puedes utilizar nuestro sistema de cancelación que se instala en tu PC Windows.

Tenemos conectores de Web Service para los siguientes lenguajes de programación:

  • .NET (C# y VB)
    C#
                                using System;
                                using System.Collections.Generic;
                                using System.Linq;
                                using System.Web;
                                using System.Web.UI;
                                using System.Web.UI.WebControls;
                                using System.Globalization;
                                using System.Data;
                                using System.Text;
                                using System.IO;
                                using System.Configuration;
                                using Certificacion;
    
                                public partial class vtnw_VerXml : System.Web.UI.Page
                                {
                                    protected void Page_Load(object sender, EventArgs e)
                                    {
                                    }
                                    public void CertificarCFDI()
                                    {
                                        byte[] yXML = File.ReadAllBytes(sRutaArchivoXmlEnZip);
                                        motorCFDI oMotor = new motorCFDI();
                                        byte[] yRespuesta = oMotor.getCFDiTest("Usuario", "password", yXML);
                                    }
                                }
                            
    V.B.
                                Imports ConexionWebService.Certificacion
    
                                Public Class Form1
     
                                    Private Sub btnCertificar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCertificar.Click
                                        Dim yXML() As Byte = File.ReadAllBytes(sRutaArchivoXmlEnZip)
                                        Dim oMotor As New MotorCFDI.motorCFDI
                                        Dim yRespuesta As Byte = oMotor.getCFDITest("Usuario","Password",yXML)
                                    End Sub
                                End Class
                            
  • Java
                                //Importaciones necesarias
    	                        import Cliente.Servicio.MotorCFDI;
                                import Cliente.Servicio.MotorCFDISoap;
                                import java.io.File;
                                import java.io.FileInputStream;
                                import java.io.FileOutputStream;
                                import java.io.IOException;
    	
    	                        //Importaciones opcionales
    	
                                import javax.swing.JOptionPane;
    
    	
    	                        //Código de consumo del servicio
                                try
                                {
                                    //Rutas de archivos
                                    String sRutaCFDIZip;	 //Ruta del CFDI empacado en ZIP
                                    String sRutaRespuesta;   //Ruta de la respuesta del servicio
              
                                    //Credenciales
                                    String sUsuario="Usuario";
                                    String sPassword="Contraseña";
              
                                    //Lectura del CFDI en Zip
                                    File oFichero = new File(sRutaCFDIZip); 
                                    byte aCFDI[] = new byte[(int)oFichero.length()];
                                    try (FileInputStream fisFichero = new FileInputStream(oFichero)) 
                                    {
                                        fisFichero.read(aCFDI);
                                    }
                                    //Fin de la Lectura
              
                                    //Consumo de Web Service
                                    MotorCFDI oServicio = new MotorCFDI();
                                    MotorCFDISoap oMotor = oServicio.getMotorCFDISoap();
                                    byte aRespuesta[];
                                    aRespuesta=oMotor.getCFDiTest(sUsuario, sPassword, aCFDI);
                                    //Fin de Consumo
              
                                    //Guardar respuesta
                                    File oRes = new File(sRutaRespuesta);
                                    try (FileOutputStream fosFichero = new FileOutputStream(oRes))
                                    {
                                        fosFichero.write(aRespuesta);
                                    }
                                    //Fin de Guardar respuesta
                                    JOptionPane.showMessageDialog(null, "Envío con éxito");
                                }
                                catch(IOException ex)
                                {
                                    JOptionPane.showMessageDialog(null, ex.getMessage());
                                }
                            
  • Python
                                import zipfile                        #Lectura y Escritura de archivos Zip
                                import os                             #Manejo de archivos y directorios
                                from suds.client import Client  	  #Configuración del cliente
                                import base64               	      #Conversión a base64
    
                                #Ruta del XML original
                                xml = os.path.relpath("AAA010101AAA1.xml")    
     
                                #Ruta del Zip generado a partir del XML original   
                                xmlZip = os.path.relpath("AAA010101AAA1.zip") 
        
                                #Ruta del Zip de respuesta
                                xmlResp = os.path.relpath("Respuesta.zip")  
    
                                #Generación del archivo Zip a partir del XML original
                                zpFile = zipfile.ZipFile(xmlZip, "w")
                                zpFile.write(xml)
                                zpFile.close()
    
                                #Recupera el archivo zip
                                oZip = open(xmlZip, "rb")
                                yXml = oZip.read()
                                oZip.close()
    
                                #Configuración del cliente
                                wsURL = "https://www.certificacfdi.mx/appcertificacfdi/motorCFDI.asmx?WSDL"
                                oCliente = Client(wsURL)
    
                                #Convierte a base64 antes de enviar el Zip
                                paquete = base64.b64encode(yXml).decode("utf-8") 
    
                                #Llamado al método getCFDiTest() y recibe la respuesta del servicio
                                respuesta = oCliente.service.getCFDiTest(["usuario"], ["password"], paquete) 
     
                                #Descodifica base64 la respuesta del servicio
                                yResp = base64.b64decode(respuesta)
    
                                #Crea el Zip de respuesta
                                oResp = open(xmlResp, "wb")
                                oResp.write(yResp)
                                oResp.close()
    
                                #Extrae el XML dentro del Zip de respuesta
                                unZip = zipfile.ZipFile(xmlResp)
                                unZip.extractall()
                                unZip.close()
    
                            
  • Visual Basic 6
                                'Declaración de variables
                                Dim sRutaCfdiZip As String 'Ruta del CFDI en Zip
                                Dim sRutaRespuesta As String 'Ruta de la respuesta del servicio
                                Dim ayXML() As Byte
                                Dim NumArchivo As Integer
                                Dim ayRes() As Byte
                                Dim fLen As Long 
    
                                'Lectura del archivo a enviar
                                'Abrir el archivo en modo binario de solo lectura (Binary Lock Read)
                                Open sRutaCfdiZip For Binary Lock Read As 1
    
                                'Redimensionar el array al tamaño del archivo
                                fLen = FileLen(sRutaCfdiZip)
                                ReDim ayXML(fLen) As Byte
    
                                'Leer el archivo entero y almacenarlo en el array
                                Get #1, , ayXML
                                Close
    
                                'Consumo de Servicio Web
                                Dim oCliente As New SoapClient30
                                On Error GoTo Error
                                Dim sUrlWS As String
                                sUrlWS ="https://www.certificacfdi.mx/appcertificacfdi/motorCFDI.asmx?WSDL"
                                oCliente.MSSoapInit(sUrlWS)
                                ayRes = oCliente.getCFDiTest("Usuario", "Contraseña", ayXML)
    
                                'Escribir la respuesta del servicio
                                'Crear un archivo para guardar los datos recibidos (Binary Access Write)
                                Open sRutaRespuesta For Binary Access Write As 1
    
                                'Escribir los bytes del array de la respuesta, en el nuevo archivo 
                                Put #1, , ayRes
                                Close
                            
  • PHP
                                $sRutaCFDI;		    //Ruta del CFDI a empacar
    	                        $sNomZip; 		    //Ruta del CFDI empacado
    	                        $sRutaZipRes;	    //Ruta donde se guardará el Zip de respuesta
    	                        $sRutaRespuesta;	//Ruta para desempacar la respuesta
    	
    	                        //Empacar CFDI en ZIP
    	                        //Objeto de la clase ZipArchive
    	                        $oZip = new ZipArchive();
    		
     	                        if($oZip->open($sNomZip,ZIPARCHIVE::CREATE)===true)
    	                        {
    		                        $oZip->addFile($sRutaCFDI);
    		                        $oZip->close();
    	                        }
    	                        //Fin del proceso de empacado
    	
    
    	                        //Lectura en bytes del CFDI empacado
    	                        $gestor = fopen($sNomZip, "r");
    	                        $contenido = fread($gestor, filesize($sNomZip));
    	                        fclose($gestor);
    	                        //Fin de la lectura
    
    	                        // Llamada al WebService
    	                        // Creación del objeto oCliente de la clase SoapClient
    		                    $sUrlWS='https://www.certificacfdi.mx/appcertificacfdi/motorCFDI.asmx?WSDL';
    	                        $oCliente = new SoapClient($sUrlWS);
    		
                                //Se crean dos variables que contienen las credenciales para acceder al servicio
    	                        $sUsuario='Usuario';
    	                        $sPassword='Password';
    		
                                //Se crea una variable $aParametros que contiene un array que hace referencia a los parámetros definidos en el método del Web Service
    	                        $aParametros = array('psUsuario'=>$sUsuario,
    				                                 'psPassword'=>$sPassword,
    				                                 'pyXML'=>$contenido);
    
                                //Se connsume el método getCFDiTest para recibir su respuesta "getCFDiTestResult"
                                $aRespuesta=$oCliente->getCFDiTest($aParametros)->getCFDiTestResult;
    	                        //Fin del llamado al método
    	
    	                        //Se guarda la respuesta obtenida
    	                        $oZipRes = fopen($sRutaZipRes,'w');
    	                        fwrite($oZipRes,$aRespuesta);
    	                        fclose($oZipRes);
    		
    	                        //Se crea un objeto zip de la clase ZipArchive
    	                        $oZipR = new ZipArchive();
    		
    	                        //Se abre el zip para extraer los datos de la respuesta del servicio
    	                        $bRes = $oZipR->open($sRutaZipRes);
    		
    	                        //Se extrae el contenido del Zip
    	                        $oZipR->extractTo($sRutaRespuesta);
    	                        $oZipR->close();
    
                            

Web Service de producción

Consulta nuestro Servicio Web de Producción aquí.

Consulta el manual de conector Web Service aquí.

Web Service de desarrollo

¡Eres Desarrollador y no tienes forma de probar tus soluciones! CERTIFICACIÓN CFDI te ofrece un Servicio Web para Desarrolladores con los siguientes métodos...

Sellar CFDI en formato XML

Validación de CFDI en formato XML

¿Deseas adicionar un proceso de autofactura para tus clientes? Saber mas...

Consúltanos sobre tus necesidades de desarrollo o integración

¿Te gustaría publicitar tus desarrollos o soluciones? Saber mas...

Si eres Desarrollador te invitamos a ser nuestro SOCIO, donde puedes proveer mayor y mejores soluciones a tus clientes con nuestra tecnología, déjanos contactarte para mejor asistencia:

account_circle    
info
   
business
   
phone    
smartphone    
email    
mode_edit    
 

CERTIFICACIÓN CFDI SAPI DE CV

Teléfonos: +52 55 59 32 48 22.
Correo electrónico: contacto@certificacfdi.com
Aviso de Privacidad Aplicación Gratuita

Políticas de uso de la página

No se permitirá ninguna conducta irrespetuosa, textos o imagenes ofensivos o abusivos:
Las contribuciones deberán ser constructivas, educadas, sin señalamientos explicitos, no malintencionadas ni realizadas con la intención de difamar, ofender o calumniar a nadie.

El portal www.certificacfdi.com y sus administradores, se reservan el derecho de retirar o censurar cualquier comentario que incumpla con nuestra política de uso.

Si eres nuestro Cliente

Ingresar

Área para nuestros Socios

Ingresar

Visita