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 26-05-2021
Band Band is offline
Miembro
 
Registrado: may 2021
Posts: 35
Poder: 0
Band Va por buen camino
Yo para el curl creo así los parámetros, y luego ejecuto el curl con shellexecute.

Código Delphi [-]
curlCommand := '-F "data=@' + nombreArchivo + '" ' +  
    ' -H "Content-Type: application/xml;charset=UTF-8" ' + // Si no pongo este content type me da error 415 y en un documento de ellos comentan que se ponga este content type y efectivamente ya no da error 
    ' -H "Accept-Encoding: ''gzip''" ' +
    ' -H "Content-Encoding: ''gzip''" ' +   
    ' -H "eus-bizkaia-n3-version: ''1.0''" ' + 
    ' -H "eus-bizkaia-n3-content-type: ''application/xml''" ' +
    ' -H "eus-bizkaia-n3-data: ' + json + '"' + 
    ' -X POST ' + url ;

Entiendo que es correcto porque el servidor me devuelve la siguiente respuesta:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:TicketBaiResponse xmlns:ns2="urn:ticketbai:emision">
<Salida>
<FechaRecepcion>25-05-2021 18:20:50</FechaRecepcion>
<Estado>01</Estado>
<Descripcion>Rechazado</Descripcion>
<Azalpena>Baztertua</Azalpena>
<ResultadosValidacion>
<Codigo>001</Codigo>
<Descripcion>Error: No se ha utilizado certificado de cliente.</Descripcion>
<Azalpena>Errorea: Ez da erabili bezeroaren ziurtagiririk.</Azalpena>
</ResultadosValidacion>
</Salida>
</ns2:TicketBaiResponse>

Lo cual es correcto imagino, ya que no le estoy enviando el certificado. Para enviar el certificado en curl, en teoría sería así:

Código Delphi [-]
--cacert PATH\certificado.crt

Yo ando un poco perdido con el tema del certificado. Sirve enviar uno de prueba? (Me interesa saberlo porqué aqui: web.uanataca.com/es/certificados-prueba se pueden conseguir. También hay otros sitios) Lo que pasa es que cuando envio uno de estos certificados me sigue dando el mismo error y tengo mis dudas de si no lo envío bien o realmente no és válido (tampoco sé si debe ser crt, pem). Alguien me puede contestar a esto?

Por cierto, soy nuevo en el foro y pido perdón por si no he puesto bien las etiquetas del código.

Muchas gracias.
Responder Con Cita
  #2  
Antiguo 26-05-2021
Sistel Sistel is offline
Miembro
 
Registrado: nov 2019
Ubicación: Bilbao
Posts: 484
Poder: 7
Sistel Va por buen camino
Cita:
Empezado por Band Ver Mensaje
...
<Descripcion>Error: No se ha utilizado certificado de cliente.</Descripcion>
<Azalpena>Errorea: Ez da erabili bezeroaren ziurtagiririk.</Azalpena>
Hola,

Lo mismo de mi respuesta anterior a Noe277
Si el certificado utilizado para firmar no es de la empresa o autónomo que emite la factura, es preciso añadir:
Código:
<EmitidaPorTercerosODestinatario>T</EmitidaPorTercerosODestinatario>
Dentro del nodo <Sujetos>
"T" es el valor de la clave L4 de la página 15 del documento de especificaciones de TicketBAI

Saludos
Responder Con Cita
  #3  
Antiguo 26-05-2021
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.441
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 Band Ver Mensaje
Yo ando un poco perdido con el tema del certificado. Sirve enviar uno de prueba?
Alguien me puede contestar a esto?
Puedes usar certificados de prueba. Desde la web de Izenpe creo que se pueden descargar algunos.
Eso te servirá para avanzar un paso más y saber si lo envía correctamente, pero entonces obtendrás un error de este estilo:

<012 - Aviso: Error en verificación alta-inscripción software TicketBAI: los datos de registro no coinciden.>

Que significa que el certificado llega bien, pero no "cuadra" con los datos que tienen ellos.

Al final, para poder enviar facturas y que te las acepten, debes usar un certificado "bueno", que coincida con los datos de empresa y que "cuadre" con los datos que tienen ellos (hay que darlos de alta).


Cita:
Empezado por Band Ver Mensaje
Por cierto, soy nuevo en el foro y pido perdón por si no he puesto bien las etiquetas del código.
__________________
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
  #4  
Antiguo 26-05-2021
Avatar de HerensugeBeltz
HerensugeBeltz HerensugeBeltz is offline
Miembro
 
Registrado: may 2021
Ubicación: Hondarribia
Posts: 90
Poder: 6
HerensugeBeltz Va por buen camino
Hola a todos!

Me acaban de endosar la adaptación a TicketBAI de una pequeña aplicación de facturación. Hemos adquirido los componentes SecureBlackBox2020 y ya tengo dos prototipos de prueba: uno de firma del XML y otro para el envío TLS del XML firmado a la Hacienda de Gipuzkoa.

Adelanto ya que nunca he tenido que pelearme con certificados digitales y todo esto es nuevo para mí.
La duda que me surge es que, tanto para la firma como para el envío, al cargar el certificado tengo que especificar su contraseña. Entiendo que la firma del XML debe ser automática, sin que intervenga el usuario. ¿Hay alguna forma de firmar o enviar el documento firmado sin que el usuario tenga que indicar su contraseña en, por ejemplo, una pantalla de configuración de la aplicación?

Muchas gracias.

Nota: soy nuevo en el foro y no he encontrado una opción de nuevo mensaje, por lo que he pulsado en respuesta rápida. SI he hecho mal que alguien me corrija.
Responder Con Cita
  #5  
Antiguo 26-05-2021
Noe277 Noe277 is offline
Miembro
 
Registrado: jul 2017
Posts: 162
Poder: 10
Noe277 Va por buen camino
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Al final, para poder enviar facturas y que te las acepten, debes usar un certificado "bueno", que coincida con los datos de empresa y que "cuadre" con los datos que tienen ellos (hay que darlos de alta).

Gracias. Pensábamos que no tenían por que coincidir con la cabecera del envió.

En cuanto a HerensugeBeltz. Nosotros guardamos en local el certificado que vamos a usar para que no nos lo pida cada vez, aunque la contraseña si la pide. Hay maneras de instalar el certificado para que no pida la contraseña pero esto ya es externo a la aplicación es mas del almacén de certificados.
Responder Con Cita
  #6  
Antiguo 26-05-2021
Avatar de HerensugeBeltz
HerensugeBeltz HerensugeBeltz is offline
Miembro
 
Registrado: may 2021
Ubicación: Hondarribia
Posts: 90
Poder: 6
HerensugeBeltz Va por buen camino
Cita:
Empezado por Noe277 Ver Mensaje
En cuanto a HerensugeBeltz. Nosotros guardamos en local el certificado que vamos a usar para que no nos lo pida cada vez, aunque la contraseña si la pide. Hay maneras de instalar el certificado para que no pida la contraseña pero esto ya es externo a la aplicación es mas del almacén de certificados.
Muchas gracias!!
Responder Con Cita
  #7  
Antiguo 26-05-2021
Band Band is offline
Miembro
 
Registrado: may 2021
Posts: 35
Poder: 0
Band Va por buen camino
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Puedes usar certificados de prueba. Desde la web de Izenpe creo que se pueden descargar algunos.
Eso te servirá para avanzar un paso más y saber si lo envía correctamente, pero entonces obtendrás un error de este estilo:

<012 - Aviso: Error en verificación alta-inscripción software TicketBAI: los datos de registro no coinciden.>

Que significa que el certificado llega bien, pero no "cuadra" con los datos que tienen ellos.

Al final, para poder enviar facturas y que te las acepten, debes usar un certificado "bueno", que coincida con los datos de empresa y que "cuadre" con los datos que tienen ellos (hay que darlos de alta).




Gracias! Tiraré por este camino de los certificados de prueba de Izenpe (solo para probar el envío del certificado). Después ya me haré con uno "bueno" para seguir con los errores de validación del xml que puedan haber, que seguro que los habrá xD
Responder Con Cita
  #8  
Antiguo 26-05-2021
tejano tejano is offline
Miembro
 
Registrado: dic 2020
Posts: 132
Poder: 6
tejano Va por buen camino
Cita:
Empezado por Band Ver Mensaje
Yo para el curl creo así los parámetros, y luego ejecuto el curl con shellexecute.

Código Delphi [-]
curlCommand := '-F "data=@' + nombreArchivo + '" ' +  
    ' -H "Content-Type: application/xml;charset=UTF-8" ' + // Si no pongo este content type me da error 415 y en un documento de ellos comentan que se ponga este content type y efectivamente ya no da error 
    ' -H "Accept-Encoding: ''gzip''" ' +
    ' -H "Content-Encoding: ''gzip''" ' +   
    ' -H "eus-bizkaia-n3-version: ''1.0''" ' + 
    ' -H "eus-bizkaia-n3-content-type: ''application/xml''" ' +
    ' -H "eus-bizkaia-n3-data: ' + json + '"' + 
    ' -X POST ' + url ;

Entiendo que es correcto porque el servidor me devuelve la siguiente respuesta:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:TicketBaiResponse xmlns:ns2="urn:ticketbai:emision">
<Salida>
<FechaRecepcion>25-05-2021 18:20:50</FechaRecepcion>
<Estado>01</Estado>
<Descripcion>Rechazado</Descripcion>
<Azalpena>Baztertua</Azalpena>
<ResultadosValidacion>
<Codigo>001</Codigo>
<Descripcion>Error: No se ha utilizado certificado de cliente.</Descripcion>
<Azalpena>Errorea: Ez da erabili bezeroaren ziurtagiririk.</Azalpena>
</ResultadosValidacion>
</Salida>
</ns2:TicketBaiResponse>

Lo cual es correcto imagino, ya que no le estoy enviando el certificado. Para enviar el certificado en curl, en teoría sería así:

Código Delphi [-]
--cacert PATH\certificado.crt

Yo ando un poco perdido con el tema del certificado. Sirve enviar uno de prueba? (Me interesa saberlo porqué aqui: web.uanataca.com/es/certificados-prueba se pueden conseguir. También hay otros sitios) Lo que pasa es que cuando envio uno de estos certificados me sigue dando el mismo error y tengo mis dudas de si no lo envío bien o realmente no és válido (tampoco sé si debe ser crt, pem). Alguien me puede contestar a esto?

Por cierto, soy nuevo en el foro y pido perdón por si no he puesto bien las etiquetas del código.

Muchas gracias.
Gracias, creo que me servirá parte de lo que has puesto.

Si miras el documento de ESPECIFICACIONES FUNCIONALES Y TECNICAS DEL ENVIO MASIVO DEL LROE, en la página 17 y 18 verás:
Para el LROE, se deben incluir en la cabecera HTTP de la petición obligatoriamente los siguientes parámetros con los valores que se indican a continuación:
▪ Accept-Encoding = gzip.
▪ Content-Encoding = gzip.
▪ Content-Length = tamaño del cuerpo del mensaje.
▪ Content-Type = application/octet-stream.
▪ eus-bizkaia-n3-version = 1.0.
▪ eus-bizkaia-n3-content-type = application/xml.
▪ eus-bizkaia-n3-data = contenido del fichero json.
Json - eus-bizkaia-n3-data = { "con": "LROE", "apa": "1.1", "inte": { "nif": "número de identificación fiscal", "nrs": "nombre o Razón social", "ap1": "primer apellido", "ap2": "segundo apellido" }, "drs": { "mode": "140/240", "ejer": "ejercicio" } }

Creo que te falta el content-length, el content-Type creo que esta mal y por lo demás todo OK.

Una cosilla para todos, si sabéis...... el LROE de facturas recibidas hay que comprimir el fichero en formato gzip?

Gracias
Responder Con Cita
  #9  
Antiguo 26-05-2021
Band Band is offline
Miembro
 
Registrado: may 2021
Posts: 35
Poder: 0
Band Va por buen camino
Cita:
Empezado por tejano Ver Mensaje
Gracias, creo que me servirá parte de lo que has puesto.

Si miras el documento de ESPECIFICACIONES FUNCIONALES Y TECNICAS DEL ENVIO MASIVO DEL LROE, en la página 17 y 18 verás:
Para el LROE, se deben incluir en la cabecera HTTP de la petición obligatoriamente los siguientes parámetros con los valores que se indican a continuación:
▪ Accept-Encoding = gzip.
▪ Content-Encoding = gzip.
▪ Content-Length = tamaño del cuerpo del mensaje.
▪ Content-Type = application/octet-stream.
▪ eus-bizkaia-n3-version = 1.0.
▪ eus-bizkaia-n3-content-type = application/xml.
▪ eus-bizkaia-n3-data = contenido del fichero json.
Json - eus-bizkaia-n3-data = { "con": "LROE", "apa": "1.1", "inte": { "nif": "número de identificación fiscal", "nrs": "nombre o Razón social", "ap1": "primer apellido", "ap2": "segundo apellido" }, "drs": { "mode": "140/240", "ejer": "ejercicio" } }

Creo que te falta el content-length, el content-Type creo que esta mal y por lo demás todo OK.

Una cosilla para todos, si sabéis...... el LROE de facturas recibidas hay que comprimir el fichero en formato gzip?

Gracias

Cierto, falta el content-length pero de momento no se me ha quejado de esto. Si me da algún tipo de problema ya lo pondré. El content-type ya digo, yo tuve que cambiar el "application/octet-stream" por "application/xml;charset=UTF-8". Esto lo encontré en algún documento de FAQ para desarrolladores (concretamente el documento se llama "Problemas y dudas frecuentes en servicios de alta y anulación de facturas"). Lo encontré de chiripa poniendo "ticket bai error 415" en google
Responder Con Cita
  #10  
Antiguo 26-05-2021
Sistel Sistel is offline
Miembro
 
Registrado: nov 2019
Ubicación: Bilbao
Posts: 484
Poder: 7
Sistel Va por buen camino
Cita:
Empezado por Band Ver Mensaje
Cierto, falta el content-length pero de momento no se me ha quejado de esto. Si me da algún tipo de problema ya lo pondré. El content-type ya digo, yo tuve que cambiar el "application/octet-stream" por "application/xml;charset=UTF-8". Esto lo encontré en algún documento de FAQ para desarrolladores (concretamente el documento se llama "Problemas y dudas frecuentes en servicios de alta y anulación de facturas"). Lo encontré de chiripa poniendo "ticket bai error 415" en google
Hola Band,

Es diferente el caso de envío a Bizkaia (en LROE) al caso de envío a Gipuzkoa (envío directo inmediato).
En el caso de Bizkaia (LROE):
Código:
Content-Type: application/octet-stream
eus-bizkaia-n3-content-type: application/xml
En el caso de Gipuzkoa (envío directo inmediato):
Código:
Content-Type: application/xml;charset=UTF-8
Saludos
Responder Con Cita
  #11  
Antiguo 26-05-2021
Band Band is offline
Miembro
 
Registrado: may 2021
Posts: 35
Poder: 0
Band Va por buen camino
Angry

Cita:
Empezado por Sistel Ver Mensaje
Hola Band,

Es diferente el caso de envío a Bizkaia (en LROE) al caso de envío a Gipuzkoa (envío directo inmediato).
En el caso de Bizkaia (LROE):
Código:
Content-Type: application/octet-stream
eus-bizkaia-n3-content-type: application/xml
En el caso de Gipuzkoa (envío directo inmediato):
Código:
Content-Type: application/xml;charset=UTF-8
Saludos

Gracias por esta aclaración! Es que manda... ya bastante tedioso es controlar como lo tiene cada pais, que encima nosotros nos liamos más . Ya solo queda que cada ciudad tribute diferente... aunque espero que ningún político lumbreras lea esto
Responder Con Cita
  #12  
Antiguo 27-05-2021
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.235
Poder: 24
keys Va por buen camino
Hola a todos.

Para los de delphi o no. El lunes al realizar envíos a Bizkaia, resulta que me empezó a dar errores del servidor y se había estado enviando sin problemas hasta ahora. Después de envíar la consulta a hacienda me dijeron que el problema es que habían tocado algo y el sistema ya no aceptaba saltos de línea ni retornos de carro en el campo TicketBai, es decir donde va el fichero TicketBai en Base64.

Me dijeron que lo volvían a cambiar y ya esta funcionando como antes.

Y ahora al grano, la función que estamos utilizando para pasar a Base64 en delphi esta devolviendo saltos de linea y retornos de carro. He modificado la función para que no tenga en cuenta esos caracteres y salga todo en una misma linea como en los ejemplo de hacienda.

Código Delphi [-]
 
function DevolverFicheroBase64(Nfichero:string): string; //nfichero es el fichero xml de TBai a enviar
var
     ListaFichero : TStringList;
     Base64: TBase64Encoding;
     i : integer;
     resultado : string;
begin
   ListaFichero := TStringList.Create;
   ListaFichero.LoadFromFile(NFichero);
   Base64 := TBase64Encoding.Create;
   resultado := Base64.Encode(ListaFichero.Text);
   Base64.Destroy;
   ListaFichero.Destroy;

   result := '';
   for i := 1 to Length(resultado) do
    if (resultado[i] = Char(13)) or (resultado[i] = Char(10)) then //Vamos a quitarles los saltos de linea y retornos de carro
    else
     result := result + resultado[i];


end;
Responder Con Cita
  #13  
Antiguo 27-05-2021
rci rci is offline
Miembro
 
Registrado: nov 2020
Posts: 565
Poder: 6
rci Va por buen camino
Gipuzkoa - Error en el servidor remoto: (503) Servidor no disponible

Hola, hace un par de días que cuando intento enviar a Gipuzkoa me da un error:


Error en el servidor remoto: (503) Servidor no disponible.


¿Os funciona a vosotros?
Antes me funcionaba sin problema y no he cambiado nada.

Estoy utilizando la url que indica en el documento de guía de entorno de pruebas ticketBAI

https://tbai-prep.egoitza.gipuzkoa.e...nFacturas/alta


Muchas gracias. Saludos





Cita:
Empezado por keys Ver Mensaje
Hola a todos.

Para los de delphi o no. El lunes al realizar envíos a Bizkaia, resulta que me empezó a dar errores del servidor y se había estado enviando sin problemas hasta ahora. Después de envíar la consulta a hacienda me dijeron que el problema es que habían tocado algo y el sistema ya no aceptaba saltos de línea ni retornos de carro en el campo TicketBai, es decir donde va el fichero TicketBai en Base64.

Me dijeron que lo volvían a cambiar y ya esta funcionando como antes.

Y ahora al grano, la función que estamos utilizando para pasar a Base64 en delphi esta devolviendo saltos de linea y retornos de carro. He modificado la función para que no tenga en cuenta esos caracteres y salga todo en una misma linea como en los ejemplo de hacienda.

Código Delphi [-] function DevolverFicheroBase64(Nfichero:string): string; //nfichero es el fichero xml de TBai a enviar var ListaFichero : TStringList; Base64: TBase64Encoding; i : integer; resultado : string; begin ListaFichero := TStringList.Create; ListaFichero.LoadFromFile(NFichero); Base64 := TBase64Encoding.Create; resultado := Base64.Encode(ListaFichero.Text); Base64.Destroy; ListaFichero.Destroy; result := ''; for i := 1 to Length(resultado) do if (resultado[i] = Char(13)) or (resultado[i] = Char(10)) then //Vamos a quitarles los saltos de linea y retornos de carro else result := result + resultado[i]; end;

Última edición por rci fecha: 27-05-2021 a las 11:37:06. Razón: añadir información
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 21:15:36.


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