Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Colaboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-03-2022
chenech chenech is offline
Miembro
 
Registrado: dic 2013
Posts: 138
Poder: 13
chenech Va por buen camino
XML de ejemplo

Buenas tardes, alguien tiene un XML de una factura de ejemplo antes de firmar y no le importaria compartir?
Mil gracias...

Al intentar con AutoFirma me da el siguiente mensaje:

[Fatal Error] :15:32: Byte no vßlido 1 de la secuencia UTF-8 de 1 bytes
<afirma><result>false</result><response><msg>Error en la operacion de firma: Las firmas XAdES Enveloped solo pueden realizarse sobre datos XML</msg></response></afirma>

Creo que me falta algo en el pie del XML referente a Signatures.
Ayuda, gracias.
Responder Con Cita
  #2  
Antiguo 28-03-2022
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.437
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por chenech Ver Mensaje
Al intentar con AutoFirma me da el siguiente mensaje:

[Fatal Error] :15:32: Byte no vßlido 1 de la secuencia UTF-8 de 1 bytes
<afirma><result>false</result><response><msg>Error en la operacion de firma: Las firmas XAdES Enveloped solo pueden realizarse sobre datos XML</msg></response></afirma>
Revisa que no estés generando el fichero con la codificación incorrecta (UTF8 sin BOM), lo del Byte 1 es sospehoso en ese sentido.
La correcta es UTF8.
De todas formas te adjunto un XML sin firmar.
Archivos Adjuntos
Tipo de Archivo: zip XML_TicketBAI.zip (1,0 KB, 22 visitas)
__________________
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.
Responder Con Cita
  #3  
Antiguo 28-03-2022
Sistel Sistel is offline
Miembro
 
Registrado: nov 2019
Ubicación: Bilbao
Posts: 484
Poder: 7
Sistel Va por buen camino
Signo en descuentos globales

Hola,

Como ya habíamos comentado en otras ocasiones, para registrar un descuento global de la factura (por ejemplo un descuento pronto pago), es preciso añadir una línea de detalle para ese descuento.
En esa línea de detalle hay que poner, en Cantidad, -1 y en ImporteUnitario el importe, en positivo, correspondiente al descuento, antes de IVA.
Quedamos en que en ImporteUnitario no se permitían importes negativos.

Leo en https://web.araba.eus/documents/1050...ES+%281%29.pdf
Cita:
Para incluir un descuento total de la factura (por ejemplo: pronto pago) incluya una línea que
recoja en el ImporteTotal el importe del descuento en negativo.
Ejemplo: Si queremos aplicar un descuento pronto pago de un 5% a una venta con <Importeunitario>
de 600 y <Importe total>de 726, añadiríamos una nueva línea de detalle del siguiente modo:
<DescripcionDetalle>Descuento pronto pago</DescripcionDetalle>
<Cantidad>1.00</Cantidad>
<ImporteUnitario>-30.00</ImporteUnitario> (sin IVA. En negativo. Se ha calculado 600* 5% = 30)
<ImporteTotal>-36.30</ImporteTotal> (con IVA 21%)
Extrañado de esta peculiaridad de Álava, les he consultado y me han respondido:
Cita:
Realmente en Araba nos da igual que indiquéis la "Cantidad" negativa e "Importe unitario" positivo o "Cantidad" positiva e "Importe unitario" negativo, lo que importa es que el resultado de la misma sea negativo. Es decir, que el "Importe Total" sea negativo, ya que se está indicando un descuento.
Podéis enviarlo como mejor le venga a vuestro software para que os valga para todas las administraciones.
Así que sí, Álava se desmarca admitiendo ImporteUnitario en negativo.
Curioso que cada una de las tres Haciendas Forales tenga criterios diferentes para TicketBAI.

Saludos
Responder Con Cita
  #4  
Antiguo 28-03-2022
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.437
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Sistel Ver Mensaje
Así que sí, Álava se desmarca admitiendo ImporteUnitario en negativo.
Curioso que cada una de las tres Haciendas Forales tenga criterios diferentes para TicketBAI.
Saludos
Me da la impresión de que los más restrictivos y "especilitos" son los de Vizcaya.
La actitud en este caso de Álava me parece bastante correcta y sensata (y pensando un poco en nosotros):
"Podéis enviarlo como mejor le venga a vuestro software para que os valga para todas las administraciones."


__________________
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.
Responder Con Cita
  #5  
Antiguo 28-03-2022
chenech chenech is offline
Miembro
 
Registrado: dic 2013
Posts: 138
Poder: 13
chenech Va por buen camino
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Revisa que no estés generando el fichero con la codificación incorrecta (UTF8 sin BOM), lo del Byte 1 es sospehoso en ese sentido.
La correcta es UTF8.
De todas formas te adjunto un XML sin firmar.
Muchas gracias Germán, tenia dos errores, uno en la cabecera, solucionado con el ejemplo que has enviado, muchas gracias.
El otro era en los parámetros de AutoFirma, que he visto en otros post ejemplos y ya me funciona.
Mil gracias.
Responder Con Cita
  #6  
Antiguo 28-03-2022
Irreo Irreo is offline
Miembro
 
Registrado: mar 2022
Posts: 70
Poder: 5
Irreo Va por buen camino
EDIT: Solucionado, explicación abajo

Buenas tardes,

A ver si alguien puede arrojarme algo de luz, porque tengo delante una pared y estoy dando palos de ciego.

Tengo ya funcionando el proceso de generar una factura, el XML y el QR.

Me he puesto con el tema de enviar a Hacienda, y por ahora he conseguido que me llegue el aviso de "001 - no se ha usado certificado de cliente".

- He generado un certificado de dispositivo usando la web de Izenpe (es gratuito).
- Se ha creado un P12, que he convertido a PEM y CRT con open_ssl, y lo he subido a Plesk.
- El certificado no puedo usarlo directamente en un dominio porque dice que "la conexión no es segura".
- Para probar a enviar algo firmado, me he descargado el Autofirma y he firmado usando ese certificado P12. En principio parece que OK.
- Al intentar subir por PHP este XML, me dice que no se ha usado certificado SSL.

En sí, el dominio desde el que envío los datos, tiene un certificado Let's Encrypt que funciona correctamente, pero no sé si esto se llega a usar o detectar.

He estado mirando diferentes opciones, y he visto que desde PHP se puede especificar qué fichero quieres usar como certificado.

Por un lado he probado esto:

Código PHP:
    // XML a Hacienda
    
$opts = array(
        
"ssl" => array(
            
"local_cert" => "/var/www/vhosts/xx/bai.pem",
            
"locak_pk" => "/var/www/vhosts/xx/bai_key.pem",
            
"passphrase" => "xxxxxx",
            
"allow_self_signed"    => true,
            
"cafile" =>'/var/www/vhosts/xxx/bai.pem',
            
"capath" =>'/var/www/vhosts/xxx/',
            
"verify_peer" => false
        
),
        
"http" => array (
            
"method" => "POST",
            
"header" =>
              
"Accept-language: es\r\n".
              
"Content-type: application/xml;charset=UTF-8\r\n",
            
"content" => $xml
        
)
    );
    
$context stream_context_create($opts);

    
$haciendaResult file_get_contents($eHaciendaUrlfalse$context); 
Decir que he estado jugando poniendo y quitando parámetros "local_pk", "ca_file", etc... sin resultado satisfactorio. He puesto el último ejemplo usado.

El error es este:

Código:
<br />
<b>Warning</b>:  file_get_contents(): Unable to set private key file `/var/www/vhosts/xxx/dkbai.pem' in <b>/var/www/vhosts/xxx/api/factura/index.php</b> on line <b>730</b><br />
<br />
<b>Warning</b>:  file_get_contents(): Failed to enable crypto in <b>/var/www/vhosts/xxx/api/factura/index.php</b> on line <b>730</b><br />
<br />
<b>Warning</b>:  file_get_contents(tbai-prep.egoitza.gipuzkoa.eus/WAS/HACI/HTBRecepcionFacturasWEB/rest/recepcionFacturas/alta): Failed to open stream: operation failed in <b>/var/www/vhosts/xxx/api/factura/index.php</b> on line <b>730</b><br />
Después he probado con CURL:

Código PHP:
$ch curl_init();

curl_setopt($chCURLOPT_SSL_VERIFYHOST2);
curl_setopt($chCURLOPT_CAINFO'/var/www/vhosts/xxx/bai.pem');

curl_setopt($chCURLOPT_URL$eHaciendaUrl);
curl_setopt($chCURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
curl_setopt($chCURLOPT_HEADER0);
curl_setopt($chCURLOPT_POST1);
curl_setopt($chCURLOPT_SSH_PRIVATE_KEYFILE'/var/www/vhosts/xxx/bai_key.pem');
curl_setopt($chCURLOPT_SSLCERT'/var/www/vhosts/xxx/bai.pem');
curl_setopt($chCURLOPT_SSLCERTPASSWD"xxxxxx");
curl_setopt($chCURLOPT_POSTFIELDS$xml);
curl_setopt($chCURLOPT_FOLLOWLOCATION0);
curl_setopt($chCURLOPT_REFERER$eHaciendaUrl);
curl_setopt($chCURLOPT_RETURNTRANSFER1);
curl_setopt ($chCURLOPT_VERBOSE 1);

curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);

$ch_result curl_exec($ch); 
Y el resultado es el siguiente:

Código:
58unable to load client key: -8178 (SEC_ERROR_BAD_KEY)
Básicamente, no solo no tengo ni idea de qué está pasando o cómo solucionarlo. Ni siquiera se si voy bien encaminado intentando enviar así los XML.

¿Alguien me ilumina un poco el camino?

Entiendo que quizás es algún problema con el fichero de la Key, pero no me hago idea el qué...

Gracias!
Saludos.

EDIT: SOLUCIONADO!!

El problema era el comando que utilicé para convertir el P12 en PEM. Un usuario de Stackoverflow dice que se le solucionó con este comando:

Código:
openssl pkcs12 -in keyname.p12 -out keyname.pem -nodes -clcerts
Y me ha servido al parecer, porque ahora el error es Hacienda es "004", de que falta algún campo, etc.... pero yo diría que el primer obstáculo ya sido sorteado.

Última edición por Irreo fecha: 28-03-2022 a las 17:45:46. Razón: Problema solucionado.
Responder Con Cita
  #7  
Antiguo 22-11-2022
Zósimo Zósimo is offline
Miembro
 
Registrado: nov 2022
Posts: 18
Poder: 0
Zósimo Va por buen camino
Yo he probado eso mismo y no me funciona

Pues yo he probado ese mismo comando:
Código:
openssl pkcs12 -in keyname.p12 -out keyname.pem -nodes -clcerts
Y me responde el servidor:

<b>Parse error</b>: syntax error, unexpected identifier &quot;pkcs12&quot; in <b>/srv/vhost/kalion.com/home/html/enviaXML.php</b> on line <b>32</b>

Lo cual es lógico porque ese comando con espacios entre medias no me ha parecido que exista en PHP. Lo he buscado en la bibliografía oficial y existen otros. ¿es en otro leguaje? ¿hay que adaptarlo a cada lenguaje en concreto?

Si alguien pudiera responder lo agradecería porque llevo luchando con esto ni se sabe.
Responder Con Cita
  #8  
Antiguo 22-11-2022
sEngine sEngine is offline
Miembro
 
Registrado: jul 2021
Posts: 79
Poder: 5
sEngine Va por buen camino
Cita:
Empezado por Zósimo Ver Mensaje
Pues yo he probado ese mismo comando:
Código:
openssl pkcs12 -in keyname.p12 -out keyname.pem -nodes -clcerts
Y me responde el servidor:

<b>Parse error</b>: syntax error, unexpected identifier &quot;pkcs12&quot; in <b>/srv/vhost/kalion.com/home/html/enviaXML.php</b> on line <b>32</b>

Lo cual es lógico porque ese comando con espacios entre medias no me ha parecido que exista en PHP. Lo he buscado en la bibliografía oficial y existen otros. ¿es en otro leguaje? ¿hay que adaptarlo a cada lenguaje en concreto?

Si alguien pudiera responder lo agradecería porque llevo luchando con esto ni se sabe.
Ese comando que has puesto es el que se usa desde el cmd de windows, no?
Yo lo estoy usando mas o menos asi para comprobar la fecha de caducidad desde delphi

Código:
openssl pkcs12 -in "certificadoengineclaveprivada.pfx" -passin pass:password -passout pass:password -clcerts -nodes | openssl x509 -noout -enddate

Última edición por sEngine fecha: 22-11-2022 a las 13:56:57.
Responder Con Cita
  #9  
Antiguo 22-11-2022
Zósimo Zósimo is offline
Miembro
 
Registrado: nov 2022
Posts: 18
Poder: 0
Zósimo Va por buen camino
No me deja escribir la clave

Cita:
Empezado por sEngine Ver Mensaje
Ese comando que has puesto es el que se usa desde el cmd de windows, no?
Yo lo estoy usando mas o menos asi para comprobar la fecha de caducidad desde delphi

Código:
openssl pkcs12 -in "certificadoengineclaveprivada.pfx" -passin pass:password -passout pass:password -clcerts -nodes | openssl x509 -noout -enddate
Efectivamente. Solo que al terminar me pide "Enter import Password:" pero curiosamente no me permite escribir, solo pulsar en intro.ç

¿alguien tiene algún vínculo a un tutorial o similar?

Gracias otra vez
Responder Con Cita
  #10  
Antiguo 22-11-2022
Zósimo Zósimo is offline
Miembro
 
Registrado: nov 2022
Posts: 18
Poder: 0
Zósimo Va por buen camino
No me deja escribir la clave

Perdón por repetirme.
Responder Con Cita
  #11  
Antiguo 22-11-2022
Zósimo Zósimo is offline
Miembro
 
Registrado: nov 2022
Posts: 18
Poder: 0
Zósimo Va por buen camino
No me deja escribir la clave

¿Cómo puedo borrar los mensajes repetidos?
Responder Con Cita
  #12  
Antiguo 22-11-2022
Zósimo Zósimo is offline
Miembro
 
Registrado: nov 2022
Posts: 18
Poder: 0
Zósimo Va por buen camino
Este ha sido una repetición del mensaje anterior creada por error. No sé como borrarlo. Siento las molestias
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 14:08:05.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi