GithubHelp home page GithubHelp logo

MIME no válido FACe about facturae-php HOT 5 CLOSED

josemmo avatar josemmo commented on August 26, 2024
MIME no válido FACe

from facturae-php.

Comments (5)

josemmo avatar josemmo commented on August 26, 2024

Hola @bprietonogal,

No parece que haya cambiado nada en el webservice de FaceB2B ya que los tests siguen pasando a fecha de hoy.

¿Podrías pasar un ejemplo de código para poder reproducir el fallo?

from facturae-php.

bprietonogal avatar bprietonogal commented on August 26, 2024

He probado a reenviar una factura que fue enviada hace un mes (esperando que, si no hay cambios en FACe ni cambios en el código, la factura debería enviarse y recibir un error indicando que la factura ha sido ya enviada), y recibo el mismo error, que el MIME es incorrecto. No se ha cambiado nada del código que realiza la firma y el envío en este tiempo.

Básicamente, yo genero el xml antes de firmarlo, cuyo formato es válido según los dos validadores (éste y éste), y por cURL lo envío, junto con el email que recibirá las notificaciones, al servidor donde está la firma y al que no tengo acceso. El código que lo firma recoge ambos campos, y hace:

    $factura=new Facturae();
    $factura->sign($ficheroPFX, null, $clavePFX);
    $xmlFirmado=$factura->injectSignature($xml);
    
    $face = new FaceClient($ficheroPFX, null, $clavePFX);
    
    $invoice = new FacturaeFile();
    $invoice->loadData($xmlFirmado, "invoice.xsig");
    $res = $face->sendInvoice($emailEnvio, $invoice);
    print $res->asXML();

No se ha modificado ni la clase FacturaeFile ni FaceClient ni Facturae.

Estoy tratando de hacer pruebas, pero como no tengo acceso a la firma, no puedo registrarla en el entorno staging. ¿No existe algún fichero válido de firma para poder realizar pruebas?

from facturae-php.

josemmo avatar josemmo commented on August 26, 2024

Puedes descagar certificados eIDAS válidos para pruebas desde la web del DNI Electrónico.

El código de envío parece estar bien pero el de generación de la factura es incorrecto:

$factura = new Facturae();
// Aquí falta añadir los datos del emisor, receptor y líneas de producto
$factura->sign($ficheroPFX, null, $clavePFX);
$xmlFirmado = $factura->injectSignature($xml); // Este método es interno y no devuelve la factura firmada, solo la firma

En este enlace tienes un ejemplo de generación de una factura con Facturae-PHP y en este otro un ejemplo de cómo mandar la factura generada a FACe.

Tampoco me queda claro si el fallo ocurre con FACe (como aparece en el código) o con FACeB2B (como pone en el título del issue).

from facturae-php.

bprietonogal avatar bprietonogal commented on August 26, 2024

Vale, por partes... Primero, tienes razón, es FACe, no FACeB2B. Y es FACe el que estamos utilizando. Cambio el título del issue, perdón.

La generación de la factura no la he puesto, creo que no me expliqué bien. Yo genero la factura, y guardo en una variable todo el xml de la factura (y si lo imprimo en un fichero o por pantalla y copio a fichero xml, y lo paso por los validadores, el xml de la factura está bien formado). Hasta ahí todo perfecto.

El resto me ha estado funcionando hasta ahora. Incluso si quiero solo firmarlo y no enviarlo, consigo el fichero completo sin problemas firmado. El problema me viene al enviarlo, que me dice que el MIME no es válido. El MIME que me sale en el fichero firmado es text/xml.

Ahora mismo los certificados que tenía de prueba me dan error, pero en cuanto me descargue los que hay en la página del dni electrónico probaré todo de nuevo y a ver si consigo reproducir el error en pruebas, o si puedo cambiar el MIME y que funcione. Ya os contaré. Muchas gracias!

from facturae-php.

bprietonogal avatar bprietonogal commented on August 26, 2024

Buenas,

Bueno, pues parece que hemos encontrado la causa. Por alguna razón, cuando firmábamos anteriormente, si poníamos la declaración del xml en la cadena que firmábamos, nos daba un error, así que enviábamos la factura sin ella, y se la tragaba sin problemas. Pero han debido de cambiar algo, porque ahora sí necesita que se envíe la declaración obligatoriamente. Limpiando todos los saltos de línea y añadiendo la cabecera antes de firmar, nos ha dejado enviar sin problemas. Así que aunque el error que nos daba era todo el tiempo MIME inválido, no se refería al MIME especificado dentro del xml sino que no se indicaba en la cabecera que era un xml.
Cierro. Muchas gracias!

from facturae-php.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.