Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Ley antifraude 2021 (VERIFACTU) - Programas informáticos (https://www.clubdelphi.com/foros/showthread.php?t=95235)

[email protected] 25-10-2024 11:28:39

Interpretar respuesta AEAT Verifactu
 
Como puedo chequear la respuesta de la AEAT respecto a el envio efectuado.

Necesito saber si ha sido OK o a generado algún error y al mismo tiempo detectar el tipo de error.

Gracias

bmfranky 25-10-2024 11:47:00

Cita:

Empezado por [email protected] (Mensaje 558790)
Como puedo chequear la respuesta de la AEAT respecto a el envio efectuado.

Necesito saber si ha sido OK o a generado algún error y al mismo tiempo detectar el tipo de error.

Gracias

Como haces la consulta??, mejor dicho como estas enviando la informacion, porque el mismo metodo de envio que uses te devuelve un response, del que has de extraer esa informacion.

ermendalenda 25-10-2024 11:51:58

Cita:

Empezado por [email protected] (Mensaje 558790)
Como puedo chequear la respuesta de la AEAT respecto a el envio efectuado.

Necesito saber si ha sido OK o a generado algún error y al mismo tiempo detectar el tipo de error.

Gracias

Se me ocurre otrq solución para verificar posteriormente
El 5 parámetro del qr.
Haces la consulta con los datos que tiene el qr pero con el quinto parámetro que te devuelvela respuesta en json, estaba pensado para incluirla por ejemplo en la factura electrónica y otras necesidades de comprobación del estado se envio.

Aparte de la respuesta de verifactu puedes posteriormente comprobar el estado, pero la respuesta te da unos datos que el qr no te lo da.

CarlosArjonomia 25-10-2024 12:36:45

Cita:

Empezado por ermendalenda (Mensaje 558792)
Se me ocurre otrq solución para verificar posteriormente
El 5 parámetro del qr.
Haces la consulta con los datos que tiene el qr pero con el quinto parámetro que te devuelvela respuesta en json, estaba pensado para incluirla por ejemplo en la factura electrónica y otras necesidades de comprobación del estado se envio.

Aparte de la respuesta de verifactu puedes posteriormente comprobar el estado, pero la respuesta te da unos datos que el qr no te lo da.

El quinto parámetro es importante ya que devuelve el importe enviado, cosa que el XML de respuesta no. Esto sirve para cotejar lo enviado con lo facturado, y debe coincidir.

bmfranky 25-10-2024 13:00:56

Cita:

Empezado por CarlosArjonomia (Mensaje 558793)
El quinto parámetro es importante ya que devuelve el importe enviado, cosa que el XML de respuesta no. Esto sirve para cotejar lo enviado con lo facturado, y debe coincidir.

Hola, de momeento y hasta que teoricamente a futuro, todo lo enviado , asi como la respuesta, lo podamos consultar al portal, lo logico no es guargdarse una copia del XML enviado y el de respuesta par apoder comprobar todo eso?

antoine0 25-10-2024 13:09:11

Cita:

Empezado por CarlosArjonomia (Mensaje 558745)
Me da que van a hacer ingeniería social para que todo el mundo pase su QR por el móvil con algún tipo de subvención.

Quieres decir, ¿incitar a denunciar malos contribuyentes? ¿Seria legal esto en España? (denuncia es legal; la cuestión es incitar.)

Interesante idea. Daría la oportunidad para malhechores y empresas de «AI» de montar «aplicaciones para averiguar sus QR», interceptando la llamada a la web de AEAT, recuperando datos de contribuyentes (un poco como ocurrió hace años con los tiquetes de compra con informaciones de tarjetas de crédito; luego se anonimizaron los números).

CarlosArjonomia 25-10-2024 13:15:41

Cita:

Empezado por bmfranky (Mensaje 558794)
Hola, de momeento y hasta que teoricamente a futuro, todo lo enviado , asi como la respuesta, lo podamos consultar al portal, lo logico no es guargdarse una copia del XML enviado y el de respuesta par apoder comprobar todo eso?

Yo lo guardo absolutamente todo en cada registro de facturación. XML enviado, XML recibido, desgloso parámetros del XML recibido y los comparo con los del XML enviado, además de todos los parámetros y estados de la transacción desglosados. Toda comprobación es poca con los de la AEAT.

Mi aplicación es de escritorio con base de datos local. Pues también envío mediante API todo lo anterior a una base de datos ubicada en un servidor para tener yo toda la información por si acaso.

[email protected] 25-10-2024 13:22:14

Cita:

Empezado por CarlosArjonomia (Mensaje 558796)
Yo lo guardo absolutamente todo en cada registro de facturación. XML enviado, XML recibido, desgloso parámetros del XML recibido y los comparo con los del XML enviado, además de todos los parámetros y estados de la transacción desglosados. Toda comprobación es poca con los de la AEAT.

Mi aplicación es de escritorio con base de datos local. Pues también envío mediante API todo lo anterior a una base de datos ubicada en un servidor para tener yo toda la información por si acaso.

Podrías indicar que método usas para desglosar parámetros del XML recibido de AEAT

CarlosArjonomia 25-10-2024 13:33:51

Cita:

Empezado por [email protected] (Mensaje 558797)
Podrías indicar que método usas para desglosar parámetros del XML recibido de AEAT

Soy de VB 6.0 (Carca) y utilizo xmlDoc = New MSXML2.DOMDocument60, aconsejo usar el chatgpt para muchas dudas. Si le indicas buenos prompts te resuelve en el 90% de dudas.

Becario127 25-10-2024 13:43:52

Hola Buenas Tardes,

He visto que en las facturas electrónicas de ejemplo que comparte la AEAT, existe un campo que dice TipoHuella, y quería saber si es algo importante o si alguien sabe algo sobre esto.

Un saludo.

Logan05 25-10-2024 13:56:22

Cita:

Empezado por xevi (Mensaje 558788)
cDataSend := '<?xml version="1.0" encoding="UTF-8"?>'+;
'<soapenv:Envelope xmlns:urn="urn:ec.europa.eu:taxud:vies:services:checkVat:types" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">'+;
'<soapenv:Body>'+;
'<urn:checkVat>'+;
'<urn:countryCode>PAIS</urn:countryCode>'+;
'<urn:vatNumber>VAT</urn:vatNumber>'+;
'</urn:checkVat>'+;
'</soapenv:Body>'+;
'</soapenv:Envelope>'

cUrlService := "http://ec.europa.eu/taxation_customs/vies/services/checkVatService"

Muchas gracias xevi.

Logan05 25-10-2024 14:05:50

Cita:

Empezado por CarlosArjonomia (Mensaje 558798)
Soy de VB 6.0 (Carca) y utilizo xmlDoc = New MSXML2.DOMDocument60, aconsejo usar el chatgpt para muchas dudas. Si le indicas buenos prompts te resuelve en el 90% de dudas.

Ole, no soy el único:)

yo de momento voy muy atrasado, sólo he conseguido el hash y el qr, ahora estoy haciendo mis primeros pinitos (cuando me dejan un rato) con los envíos con MSXML2.DOMDocument60 precisamente.

Neftali [Germán.Estévez] 25-10-2024 14:29:48

Acaban de publicar esto (25/20/2024 14:06):

VERI*FACTU - Actualización esquemas XSD de sistemas VERI*FACTU
----------------------------------------------------------------------------------------------------------
A peticiones de varias empresas desarrolladoras y habiéndose estudiado por parte del DIT-AEAT, se ha modificado levemente la estructura de los esquemas XSD, entendiéndose la necesidad de generar y realizar validaciones registros de facturación de forma independientemente, sin necesidad de incluirlos en un envío para ello. El esquema actual no permitía dicha posibilidad.
El cambio supone tan solo un cambio en el namespace de alguno de los nodos XML que forman parte de los esquemas (Cabecera, RegistroAlta y RegistroAnulacion). Con el cambio realizado los esquemas dan cabida a este requisito y son más fácilmente comprensibles.
También se incluye un cambio en la respuesta de las remisiones en el formato del campo TimestampPresentacion, añadiendo el huso horario de los servidores de la AEAT.
Estos cambios no afectan a la información necesaria para la remisión de registros de facturación, pero puede requerir de algún ajuste en los sistemas informáticos de facturación para poder seguir operando con el sistema VERI*FACTU.


La url es esta, que con el sistema de publicación que tienen, los ficheros estarán por ahí... :confused::confused::confused:
https://www.agenciatributaria.es/AEA...ERI_FACTU.html


Actualizo el mensaje#1

CarlosArjonomia 25-10-2024 15:04:57

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 558802)
Acaban de publicar esto (25/20/2024 14:06):

VERI*FACTU - Actualización esquemas XSD de sistemas VERI*FACTU
----------------------------------------------------------------------------------------------------------
A peticiones de varias empresas desarrolladoras y habiéndose estudiado por parte del DIT-AEAT, se ha modificado levemente la estructura de los esquemas XSD, entendiéndose la necesidad de generar y realizar validaciones registros de facturación de forma independientemente, sin necesidad de incluirlos en un envío para ello. El esquema actual no permitía dicha posibilidad.
El cambio supone tan solo un cambio en el namespace de alguno de los nodos XML que forman parte de los esquemas (Cabecera, RegistroAlta y RegistroAnulacion). Con el cambio realizado los esquemas dan cabida a este requisito y son más fácilmente comprensibles.
También se incluye un cambio en la respuesta de las remisiones en el formato del campo TimestampPresentacion, añadiendo el huso horario de los servidores de la AEAT.
Estos cambios no afectan a la información necesaria para la remisión de registros de facturación, pero puede requerir de algún ajuste en los sistemas informáticos de facturación para poder seguir operando con el sistema VERI*FACTU.


La url es esta, que con el sistema de publicación que tienen, los ficheros estarán por ahí... :confused::confused::confused:
https://www.agenciatributaria.es/AEA...ERI_FACTU.html


Actualizo el mensaje#1

Entiendo que los namespaces de los esquemas tienen que ser dinámicos y no ponerlos de forma estática al generar el xml. Espero que no se les ocurra cambiar "Correcto" por "Escorrecto" en el nodo "EstadoRegistro" por ejemplo.

ermendalenda 25-10-2024 15:05:27

Cita:

Empezado por CarlosArjonomia (Mensaje 558798)
Soy de VB 6.0 (Carca) y utilizo xmlDoc = New MSXML2.DOMDocument60, aconsejo usar el chatgpt para muchas dudas. Si le indicas buenos prompts te resuelve en el 90% de dudas.

Vaya, estuve intentando usarlo y no lo consegui hacer funcionar, si alguna vez puedes poner alguna funcion de envio de ejemplo te lo agradeceria.
Actualmente envio con curl y funciona bien, pero lo mejor es integrarlo.

ermendalenda 25-10-2024 15:13:51

Cita:

Empezado por Becario127 (Mensaje 558799)
Hola Buenas Tardes,

He visto que en las facturas electrónicas de ejemplo que comparte la AEAT, existe un campo que dice TipoHuella, y quería saber si es algo importante o si alguien sabe algo sobre esto.

Un saludo.

Hola Becario, recuerda que esto no es factura electrónica, es VERIFACTU. que es un tipo de reporte de facturas a hacienda. La factura electronica es el intercambio de facturas entre el emisor (El que vende) y receptor (ek que paga).

El TipoHuella es una variable que indica con que tipo de hash estamos calculando el string, ya que hay multiples de tipos de hash, de momento es una tonteria que lo pongan por que solo dan la opcion del tipo SHA256, pero intuyo que en unos años va a haber cambios con estos algoritmos y habrá que calcular con otro tipo de hash, ya que vendrán los ordenadores cuanticos, que previsiblemente, dejaran esos hashes en bragas. de momento no se me ocurre otro motivo de que haya que informar que tipo de huella vas a poner.

Por cierto Becario, si necesitas mas ayuda para el proyecto fin de carrera nos dices. XD.
Saludos

CarlosArjonomia 25-10-2024 15:14:54

Cita:

Empezado por ermendalenda (Mensaje 558804)
Vaya, estuve intentando usarlo y no lo consegui hacer funcionar, si alguna vez puedes poner alguna funcion de envio de ejemplo te lo agradeceria.
Actualmente envio con curl y funciona bien, pero lo mejor es integrarlo.

2. Agregar Referencia a MSXML en Visual Basic 6.0:

Ve a Project > References.
Selecciona "Microsoft XML, v6.0" (o una versión compatible si no tienes la 6.0).


Código:

Dim xmlDoc As MSXML2.DOMDocument60
Dim csvNode As MSXML2.IXMLDOMNode
Dim csvValue As String

' Cargar el XML en un objeto DOMDocument
Set xmlDoc = New MSXML2.DOMDocument60
xmlDoc.async = False

' Asegúrate de que el XML se cargue correctamente
If xmlDoc.loadXML(yourXmlString) Then
    ' Buscar el nodo <tikR:CSV> usando su XPath
    ' Asegúrate de incluir el namespace si es necesario
    xmlDoc.setProperty "SelectionNamespaces", "xmlns:tikR='https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/RespuestaSuministro.xsd'"
    Set csvNode = xmlDoc.selectSingleNode("//tikR:CSV")
   
    ' Verificar si el nodo <tikR:CSV> fue encontrado
    If Not csvNode Is Nothing Then
        ' Obtener el valor del nodo <tikR:CSV>
        csvValue = csvNode.Text
        MsgBox "El valor del CSV es: " & csvValue
    Else
        MsgBox "No se encontró el nodo <tikR:CSV>."
    End If
Else
    MsgBox "Error al cargar el XML."
End If

El envío lo hago mediante:
Código:

Set httpRequest = CreateObject("WinHTTP.WinHTTPRequest.5.1")
Si el moderador considera que no hay que poner códigos que no sean DELPHI, me lo indica.

ermendalenda 25-10-2024 15:18:22

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 558802)
Acaban de publicar esto (25/20/2024 14:06):

VERI*FACTU - Actualización esquemas XSD de sistemas VERI*FACTU
----------------------------------------------------------------------------------------------------------
A peticiones de varias empresas desarrolladoras y habiéndose estudiado por parte del DIT-AEAT, se ha modificado levemente la estructura de los esquemas XSD, entendiéndose la necesidad de generar y realizar validaciones registros de facturación de forma independientemente, sin necesidad de incluirlos en un envío para ello. El esquema actual no permitía dicha posibilidad.
El cambio supone tan solo un cambio en el namespace de alguno de los nodos XML que forman parte de los esquemas (Cabecera, RegistroAlta y RegistroAnulacion). Con el cambio realizado los esquemas dan cabida a este requisito y son más fácilmente comprensibles.
También se incluye un cambio en la respuesta de las remisiones en el formato del campo TimestampPresentacion, añadiendo el huso horario de los servidores de la AEAT.
Estos cambios no afectan a la información necesaria para la remisión de registros de facturación, pero puede requerir de algún ajuste en los sistemas informáticos de facturación para poder seguir operando con el sistema VERI*FACTU.


La url es esta, que con el sistema de publicación que tienen, los ficheros estarán por ahí... :confused::confused::confused:
https://www.agenciatributaria.es/AEA...ERI_FACTU.html


Actualizo el mensaje#1

Si alguno puede traducir donde se produce el cambio, a nivel del xml, se lo agradeceria, ya que yo genero los xlm a pelo y me cuesta muchisimo leer el xsd

ermendalenda 25-10-2024 15:40:20

Cita:

Empezado por CarlosArjonomia (Mensaje 558806)
2. Agregar Referencia a MSXML en Visual Basic 6.0:

Ve a Project > References.
Selecciona "Microsoft XML, v6.0" (o una versión compatible si no tienes la 6.0).


Dim xmlDoc As MSXML2.DOMDocument60
Dim csvNode As MSXML2.IXMLDOMNode
Dim csvValue As String

' Cargar el XML en un objeto DOMDocument
Set xmlDoc = New MSXML2.DOMDocument60
xmlDoc.async = False

' Asegúrate de que el XML se cargue correctamente
If xmlDoc.loadXML(yourXmlString) Then
' Buscar el nodo <tikR:CSV> usando su XPath
' Asegúrate de incluir el namespace si es necesario
xmlDoc.setProperty "SelectionNamespaces", "xmlns:tikR='https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/RespuestaSuministro.xsd'"
Set csvNode = xmlDoc.selectSingleNode("//tikR:CSV")

' Verificar si el nodo <tikR:CSV> fue encontrado
If Not csvNode Is Nothing Then
' Obtener el valor del nodo <tikR:CSV>
csvValue = csvNode.Text
MsgBox "El valor del CSV es: " & csvValue
Else
MsgBox "No se encontró el nodo <tikR:CSV>."
End If
Else
MsgBox "Error al cargar el XML."
End If

El envío lo hago mediante:

Set httpRequest = CreateObject("WinHTTP.WinHTTPRequest.5.1")

Si el moderador considera que no hay que poner códigos que no sean DELPHI, me lo indica.

gracias gracias, lo probaré.

Esperemos que sí. El moderador ha sido flexible, los de vb también aportamos.

novatico 25-10-2024 15:42:35

Cita:

Empezado por ermendalenda (Mensaje 558807)
Si alguno puede traducir donde se produce el cambio, a nivel del xml, se lo agradeceria, ya que yo genero los xlm a pelo y me cuesta muchisimo leer el xsd

Si, lo que han cambiado es que, en algunos nodos pasa de "sum" a "sum1" y viceversa.
Por ejemplo:
- la cabecera antes era "<sum1:Cabecera>" uy ahora es "<sum:Cabecera>"
- "RegistroAlta" justo al reves,

y sigo mirando.

Uno más:
- "<sum:RegistroAnulacion>" pasa a "<sum1:RegistroAnulacion>"


La franja horaria es GMT +2. Ahora son las 14:33:41.

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