![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
PHP Generación del xml
Generación previa a su firma
En mi caso sólo vendo bienes, no servicios La intención es ver la estructura del xml Código PHP:
Seguimos con el encadenamiento dentro del mismo script Busco la factura firmada anterior Código PHP:
Código PHP:
Queda enviar el desarrollo de la firma donde intervienen XmlTools.php, firmador.php y el certificado de firma y su clave. |
|
#2
|
|||
|
|||
|
PHP Firma del xml
Nos hemos quedado aquí:
Código PHP:
XmlTools.php: Código PHP:
Este es el importante: firmador.php Código PHP:
Es posible que algo sobre pero no me atrevo a tocar nada ya que finciona bien. Proximamente hablaremos del envío de los xml firmados a GIP y a BIZ, este último tiene su miga. A vuestra disposición para comentar y aclarar lo que requiráis Sería bueno poder firmar sólo con los .pem y sin clave de certificado pero quizás no se pueda. Un saludo |
|
#3
|
|||
|
|||
|
¡¡¡¡ Genial, Bilbur !!!!
Estaba atrancado con el tema de la firma. No conseguía firmar el XML sin errores. Seguro que con tu clase Firmador, salgo, por fín, del atolladero. ¡¡¡ Muchísimas Gracias !!! Apunta que te debo alguna, para cuando acabe la pandemia. Un cordial saludo Última edición por Sistel fecha: 02-05-2021 a las 19:15:30. |
|
#4
|
|||
|
|||
|
Cita:
Si necesitas ayuda en la implementación, me dices. No sea que se me olvidara subir algo. Para comprobar las firmas y antes de enviarlas yo utilizo estos dos enlaces http://tools.chilkat.io/xmlDsigVerify.cshtml https://web.uanataca.com/pe/servicio...ma-electronica Si te da correcto en las dos validaciones pues ¡eureka! |
|
#5
|
|||
|
|||
|
PHP Envío a TBAI GIP
Os adjunto lo que tengo hecho para el envío a Gipuzkoa
Este envío es el más sencillo Más o menos lo que hago es:
Código PHP:
En este lo más interesante puede ser la generación de la url del mensaje TBAI para verlo como si se tratara del código QR Código PHP:
Comentamos ... |
|
#6
|
|||
|
|||
|
PHP Envío a TBAI GIP
Buenos días,
Me acabo de poner con la programación en php para el envío de XML a TBAI a Gipuzkoa. Estoy utilizando el código que sugerís a continuación y recibo en todo momento el siguiente error: " No se puede conectar con la TBAI GIP. Error: unable to use client certificate (no key found or wrong pass phrase?) Respuesta de la TBAI GIP: 312 " Tengo un certificado pfx, el cual indico en la línea de declaración del CURLOPT_SSLCERT y añado la siguiente linea: curl_setopt($soap_do, CURLOPT_SSLCERTPASSWD, $pass); Si utilizo una conexión más sencilla, como la que indico a continuación, recibo el siguiente error: $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $server); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 100); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS, $requestXML); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); ERROR: " 01 Rechazado Baztertua 001 Error: No se ha utilizado certificado de cliente. Errorea: Ez da erabili bezeroaren ziurtagiririk. " Muchísimas gracias por vuestra ayuda. Cita:
|
|
#7
|
|||
|
|||
|
Buenos días,
Estoy con el formato LROE 240 de la DFB. Sobre el campo "Factura emitida", "TicketBai" hay que codificar el fichero TicketBai en Base64. El fichero TicketBai al que se refieren que hay que codificar, es el fichero ya firmado, no? Gracias |
|
#8
|
||||
|
||||
|
Cita:
El error parece claro, no les está llegando el certificado al enviar.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
#9
|
|||
|
|||
|
Cita:
En el envío a GIP o BAtUZ hay que identificarse, pero no firmar El certificado ha de estar tb instalado en el navegador (creo) El .pem no requiere pass Si necesitas el "como" tengo un apaño para importar certificados pfx y pasarlos a pem Ya dices |
|
#10
|
|||
|
|||
|
Cita:
Hola Canfora, a ver si esto te puede ayudar, ya que llegué a ese punto, y finalmente la conexión me la validó (aunque ahora estoy con otro problema): como te indica Bilbur, debes usar un certificado de tipo PEM, pero según he hecho yo, generando 3 ficheros PEM por separado (usando el comando openssl): el del cliente, el de la clave privada, y el de la autoridad certificadora: Cita:
Y lo que tampoco tengo aún claro, es cómo hacer esta conversión de forma automática, sin necesidad de user input.Al final, el código de la petición cURL es este: Código PHP:
|
|
#11
|
|||
|
|||
|
Cita:
Me interesa la generación del QR. Bueno, primero de todo, muchísimas gracias por lo compartido, me está ayudando muchísimo. ¿Hay algún apartado en donde estén recopilados todos los archivos de php? Muchísimas gracias de nuevo, Un saludo |
|
#12
|
|||
|
|||
|
Cita:
Lo primero de todo, gracias por compartir el código de PHP, y a todos los miembros del hilo por que se aclaran muchas dudas que se va generando durante el desarrollo. Llevo ya un tiempo con esto y la firma de momento es con diferencia lo que mas problema me esta dando, y tras probar tu codigo la cuestión es: Y si no da correcto en ninguna validación?? Estoy usando un certificado de empresa con extensión p12 pero creo que ese no es el problema, y ya no se que mas hacer, he intentado comparar con un archivo TicketBAI que de ejemplo que me descargue de ello y ese si que pasa la validación pero por mas que los comparo no entiendo muy bien el problema. Signature is Invalid Number of Reference Digests = 3 Reference 1 digest is invalid because the computed digest differs from the digest in the XML. Reference 2 digest is invalid because the computed digest differs from the digest in the XML. Reference 3 digest is valid. ¿Podrías confirmarme si el código que tienes puesto te genera correctamente la firma o decirme si te ha pasado algo similar? Muchas gracias. |
|
#13
|
|||
|
|||
|
Cita:
|
|
#14
|
|||
|
|||
|
Cita:
El código me funciona Versión PHP 5.6.40 Has de ser muy estricto en el xml con el orden de las "references" y con los "digest" Reference 1: Código PHP:
Código PHP:
Código PHP:
Si no avanzas, puedes hacerme llegar, no sé como, un xml de prueba firmado Un saludo |
|
#15
|
|||
|
|||
|
PHP Prueba firma xml
Con el propósito de comprobar la firma de los xml con el firmador.php subo el archivo P1.xml
Código:
<?xml version='1.0' encoding='UTF-8'?><T:TicketBai xmlns:T='urn:ticketbai:emision'
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xsi:schemaLocation='http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd'>
<Cabecera><IDVersionTBAI>1.2</IDVersionTBAI>
</Cabecera><Sujetos><Emisor><NIF>XXXXXXXXX</NIF>
<ApellidosNombreRazonSocial>BILBUR, S.L.</ApellidosNombreRazonSocial></Emisor>
<EmitidaPorTercerosODestinatario>N</EmitidaPorTercerosODestinatario></Sujetos>
</T:TicketBai>
http://tools.chilkat.io/xmlDsigVerify.cshtml Signature Verified Number of Reference Digests = 3 Reference 1 digest is valid. Reference 2 digest is valid. Reference 3 digest is valid. También podemos hacerlo del revés, enviad un mini xml para que yo lo firme y comparar Probad a firmar con firmador.php para ver las diferencias. Normalmente los errores se deben al "canonizado" y la generación del digest. Un saludo |
|
#16
|
|||
|
|||
|
Aupa,
Alguien ha implementado la clase firmador que hizo bilbur? yo no consigo validar los documentos. Al enviarlo a BATUZ me arroja el siguiente error: Código:
La firma no cumple los requisitos de la política de firma TicketBAI.(El mensaje ha sido modificado en tránsito o la firma no está bien realizada Código:
Signature is Invalid Number of Reference Digests = 3 Reference 1 digest is invalid because the computed digest differs from the digest in the XML. Reference 2 digest is invalid because the computed digest differs from the digest in the XML. Reference 3 digest is valid. |
|
#17
|
||||
|
||||
|
Cita:
Este error suele ir asociado en la mayoría de los casos a la codificación del fichero. O a cambios en la codificación entre que se genera y se firma. Para lo segundo, tal vez tendrías que poner qué estás enviando en el XML del TicketBAI en la sección de Politicas de firma, para que lo veamos.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
#18
|
|||
|
|||
|
Aupa eskerrik asko!
No sé si te refieres a esto: Código:
<xades:Description>Politica de firma TicketBAI 1.0</xades:Description></xades:SigPolicyId><xades:SigPolicyHash><ds:DigestMethod Algorithm="#sha256" /><ds:DigestValue>Quzn98x3PMbSHwbUzaj5f5KOpiH0u8bvmwbbbNkO9Es=</ds:DigestValue></xades:SigPolicyHash><xades:SigPolicyQualifiers><xades:SigPolicyQualifier><xades:SPURI></xades:SPURI></xades:SigPolicyQualifier></xades:SigPolicyQualifiers></xades:SignaturePolicyId></xades:SignaturePolicyIdentifier></xades:SignedSignatureProperties><xades:SignedDataObjectProperties><xades:DataObjectFormat ObjectReference="#xmldsig-e1af7cba-142f-a275-de1a-242653b03a20-ref0"><xades:ObjectIdentifier><xades:Identifier Qualifier="OIDAsURN">urn:oid:1.2.840.10003.5.109.10</xades:Identifier></xades:ObjectIdentifier><xades:MimeType>text/xml</xades:MimeType><xades:Encoding>UTF-8</xades:Encoding></xades:DataObjectFormat></xades:SignedDataObjectProperties></xades:SignedProperties></xades:QualifyingProperties>
</ds:Object>
</ds:Signature></T:TicketBai>
|
|
#19
|
|||
|
|||
|
Cita:
A mí me fue perfecta desde el primer momento. Pero, como muy bien dice Neftali, cualquier cambio de codificación puede arruinarte el fichero. Saludos |
|
#20
|
|||
|
|||
|
Cita:
Eskerrik asko! ya lo he conseguido cambiando las etiquetas de apertura del xml como dice bilbur en el post 1282 (no puedo agregar enlaces...). Milesker! |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| SII -Nuevo sistema de la Agencia Tributaria española de envío de datos vía Webservice | newtron | Internet | 3716 | 19-01-2026 20:01:34 |
| Como utilizar la ayuda del nuevo Sistema Operativo | gluglu | Humor | 3 | 24-09-2007 09:39:05 |
| Aplicacion Agencia De Viajes | ArdiIIa | Varios | 9 | 20-01-2007 16:49:53 |
| El Vasco Aguirre | Al González | La Taberna | 5 | 26-05-2006 09:22:28 |
| Microsoft ha lanzado su nuevo sistema operativo | DarkByte | Humor | 0 | 25-01-2004 09:21:14 |
|