1. Home
  2. Herramientas
  3. Sellar XML 3.3

Sellar XML 3.3


Con esta herramienta podrás sellar CFDI 3.3

Pasos para Sellar un xml version 3.3

  • Paso 1:
    Sube tus CSD
  • Paso 2:
    Introduce el password de los CSD
  • Paso 3:
    Sube el xml correspondiente al cfdi que deseas sellar (en version 3.3)
Nota

LA HERRAMIENTA MODIFICARA LOS SIGUIENTES ATRIBUTOS:
RFC EMISOR
NOMBRE EMISOR
CERTIFICADO
NUMERO DE CERTIFICADO
SELLO.

TODOS ESTOS DATOS TOMADOS DE LOS ARCHIVOS CSD QUE ESTAS SUBIENDO

Nota

Debes cambiar la Fecha de Emisión, ya que la herramienta sella sin importar la Fecha de Emisión.







 



Updated on junio 22, 2017

Was this article helpful?

Related Articles

  • David Gonzalez

    muy buena herramienta, logré timbrar la prueba de mi CFDI en v3.3, pero hay manera de que me puedan dar alguna informacion de como generar correctamente el sello con el algoritmo SHA256? he usado openssl y las funciones en PHP y no se logra validar mi sello, me sigue saliendo el error CFDI33102: El resultado de la digestión debe ser igual al resultado de la desencripción del sello y desde luego tambien ya usé la cadena_original corregida de este sitio

    • Emanuel López Lara

      Hola buen día, encontraste solución a tu problema? tengo el mismo problema, me manda ese mismo error.

    • Halcon Dev

      Obtén la key privada de tu llave privada así (donde $file es tu ubicación de tu archivo key.pem):
      $pkeyid = openssl_get_privatekey(file_get_contents($file));
      si es PHP aplica a la cadena original lo siguiente: openssl_sign($cadena_original, $sellosinbase64, $pkeyid, OPENSSL_ALGO_SHA256);
      tu sello será:
      $sello = base64_encode($sellosinbase64);
      Si tu cadena original está bien obtenida con el XSLTProcessor entonces no tendrás problemas en obtener el sello. (Aunque sería genial que el sello lo obtuviera el PAC, logramos implementarlo así sin problemas). (La v4 del cfdi 33 está genial, sólo que al incorporar la imagen QR, esta petición se hace muy pesada y tarda en sellar, sería igual genial tener una version que no incorporara la imagen QR que hace pesada la respuesta de la petición).

      • David Gonzalez

        Gracas por la respuesta, ya logré timbrar mis primeras pruebas e hice algo parecido a lo que me ustedes me respondieron, de hecho tuve que descargar los XSLT del SAT y modificar el archivo de cadena original para que haga la cadena con el XSLTProcessor mas rapido. Saludos

    • Hermes Jimenez

      Que tal David, tenemos una funcion que realiza el sellado en nuestra libreria de php: https://github.com/lunasoft/sw-sdk-php/blob/master/SWServices/Toolkit/SignService.php , cualquier duda te podemos apoyar.

      • David Gonzalez

        muchasgracias por el codigo, lo voy a probar

  • Armando Perez

    Hola, quiero sellar un comprobante con la herramienta SW-Tools pero me arroja una excepcion, mi codigo es

    private void signCFDI()

    {

    try

    {

    string theXml = “”;

    string url = “http://services.test.sw.com.mx”;

    Authentication auth = new Authentication(url, “aperezt@gmail.com”, “sw.perez”);

    AuthResponse response = auth.GetToken();

    string originalXml = Sign.CadenaOriginalCFDIv33(theXml);

    byte[] pfx = Sign.CrearPFX(File.ReadAllBytes(“CSD_Pruebas_CFDI_LAN7008173R5.cer”), File.ReadAllBytes(“CSD_Pruebas_CFDI_LAN7008173R5.key”), “12345678a”);

    string sealedXml = Sign.SellarCFDIv33(pfx, “12345678a”, originalXml);

    Stamp stampXml = new Stamp(url, response.Data.token);

    string xml = Encoding.UTF8.GetString(Encoding.ASCII.GetBytes(sealedXml));

    StampResponseV3 resp = stampXml.TimbrarV3(xml);

    }

    catch (Exception ex)

    {

    Console.WriteLine(ex.Message);

    }

    }

    La excepción manda el mensaje: Los datos del nivel de raíz no son válidos. línea 1, posición 1.

  • Marin

    Hola! Me sucede lo mismo, utilizo openssl y me genera un sello, “XUyBxv3cJSUpr4WFm1w4CBPQlqdO3U4rburkGkFKPAj87/VVwLA0QjXjcSivgp5qwvBspPGY7l0p7HLuMnA4Kgfh2EVRuf/5YQydjlHRGPHKH/jMXqrTbZCrKF02fJSIEy6VZVwXqW/hGvbnas7sw3ZsfItNhchhGcSOW0o1iq0wrXZY49CRxB/WpGcLFj+F7jdR+cUCFfDwOCFhG8pkELZH05ZynYFY7hfKPr77r650ofPl2fcWFhfWvmMHfbCpfdDtJKtgJ19BIso9K+DnXy++oVUOFfE3BEToK6AmDZKNllkATQOJHnMv+2Z6NhCCGdBaxfX33OSqEodnCSQ2Qw==” pero no coincide con el sello que genera la herramienta ubicada en la parte superior,

    este es mi código:
    shell_exec(‘openssl pkcs8 -inform DER -in tmp/CSD_Pruebas_CFDI_PZA000413788/CSD_Pruebas_CFDI_PZA000413788.key -passin pass:12345678a -out tmp/CSD_Pruebas_CFDI_PZA000413788.key.pem’);
    $key=’tmp/CSD_Pruebas_CFDI_PZA000413788.key.pem’;
    shell_exec(“xsltproc tmp/cadenaoriginal_3_2.xslt tmp/Base.xml > tmp/cadenaoriginal.txt”);
    $sello = shell_exec(“openssl dgst -SHA256 -sign $key tmp/cadenaoriginal.txt | openssl enc -base64 -A”);

    print_r($sello);

    • Marin

      Alguien me puede ayudar? por favor!!!

      • Gaby lopez

        Pudiste solucionar tu problema… tengo el mismo 🙁

        • Cristian Ricardo Barusta Sanch

          Buen dia Gaby Lopez, aqui tenemos una seria de ejemplos de como generar cadena, original y sellado: https://github.com/lunasoft/emision-timbrado

          En el que tambien se incluyen ejemplos de PHP, C#, y JAVA.

          Un tip muy importante es validar que el string resultante de tu cadena original este codificado en UTF-8, gran parte de los procesadores XSLT guardan el string con codificacion UTF-8 con BOM lo que genera un problema complejo, ya que aparentemente la cadena original es correcta.

          Saludos!

          • Gaby lopez

            Gracias Cristian! me sirvio mucho, yo estoy trabajando con Python, no sé porqué al generar la cadena original la hacia con saltos de linea, al final hice un servicio aparte para obtener el sello. De casualidad tienen un ejemplo para cancelar una factura?

      • Cristian Ricardo Barusta Sanch

        Buen dia, aqui tenemos una seria de ejemplos de como generar cadena, original y sellado: https://github.com/lunasoft/emision-timbrado

        En el que tambien se incluyen ejemplos de PHP, C#, y JAVA.

        Un tip muy importante es validar que el string resultante de tu cadena original este codificado en UTF-8, gran parte de los procesadores XSLT guardan el string con codificacion UTF-8 con BOM lo que genera un problema complejo, ya que aparentemente la cadena original es correcta.

        Saludos!