Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Colaboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
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
  #2  
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
  #3  
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
  #4  
Antiguo 22-11-2022
sEngine sEngine is offline
Miembro
 
Registrado: jul 2021
Posts: 79
Poder: 6
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
  #5  
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
  #6  
Antiguo 22-11-2022
espinete espinete is offline
Miembro
 
Registrado: mar 2009
Posts: 668
Poder: 18
espinete Va camino a la fama
Cita:
Empezado por Zósimo Ver Mensaje
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
Ten en cuenta que algunos programas en la línea de comandos, cuando preguntan contraseña, no se ve lo que escribes pero sí se está escribiendo. Por seguridad no se muestran los caracteres escritos.

Por si acaso sea eso
Responder Con Cita
  #7  
Antiguo 23-11-2022
KiwiCode KiwiCode is offline
Registrado
 
Registrado: nov 2022
Posts: 2
Poder: 0
KiwiCode Va por buen camino
Tarjetas regalo

Buenos días, ¿alguien ha tenido que lidiar con tarjetas regalo? He enviado varios mensajes a las diferentes haciendas preguntando como se tiene que gestionar este tipo de operativa y no me han aclarado absolutamente nada. (que sorpresa...)
Se me plantean dos posibilidades:

1) Para operativas de recarga de tarjetas regalo, generar un fichero de alta de TicketBAI donde el desglose de factura sea NoSujeto con causa OT y en el importe el correspondiente a la recarga de la tarjeta.
Por otra parte, cuando se hace uso de la tarjeta regalo no reflejar nada en el fichero de alta ya que se trataría como un medio de pago.

2) Para operativas de recarga de tarjetas regalo, generar un fichero de alta de TicketBAI donde el desglose de factura sea NoSujeto con causa OT y en el importe el correspondiente a la recarga de la tarjeta.
Por otra parte, cuando se hace uso de la tarjeta regalo, reflejar ese importe empleado como si fuera un descuento.

3) Para operativas de recarga de tarjetas regalo, no generar un fichero de alta TicketBAI ya que no hay un movimiento real de mercancías ni existe IVA que puedan recaudar (es un cambio de un tipo de medio de pago por otro)
Por otra parte, cuando se hace uso de la tarjeta regalo no reflejar nada en el fichero de alta ya que se trataría como un medio de pago.

A ver si alguien puede arrojar un poco de luz...

Gracias!
Responder Con Cita
  #8  
Antiguo 24-11-2022
Zósimo Zósimo is offline
Miembro
 
Registrado: nov 2022
Posts: 18
Poder: 0
Zósimo Va por buen camino
Cita:
Empezado por espinete Ver Mensaje
Ten en cuenta que algunos programas en la línea de comandos, cuando preguntan contraseña, no se ve lo que escribes pero sí se está escribiendo. Por seguridad no se muestran los caracteres escritos.

Por si acaso sea eso
Muchas gracias. No había caído en eso. Ya lo hace.
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

Perdón por repetirme.
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

¿Cómo puedo borrar los mensajes repetidos?
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
Este ha sido una repetición del mensaje anterior creada por error. No sé como borrarlo. Siento las molestias
Responder Con Cita
Respuesta



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 23:01:49.


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