![]() |
![]() |
| 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
|
|||
|
|||
|
Cita:
El problema lo tenia en el formato y la referencia de los nodos, pensaba que al defirnir la url al principio servia para todo el XML., pero veo que hay que definirlas en cada grupo He llegado hasta el ultimo campo : HUELLA donde me indica VALOR O TIPO INCORRECTO DE CAMPO. El formato y valores del mismo es : <Huella xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">8C4F00D6E814A06990BDA2F30CA26CE3 9D8C043767CFA0BD293436238793067A</Huella> Yo creo que esta bien formado, pero me da error. Si teneis un hueco y podeis mirarlo y decirme donde esta el problma, os lo agradecere Un saludo |
|
#2
|
|||
|
|||
|
Cita:
Bueno, el espacio de nombre xmlns está correctamente definido y aunque no es la forma más indicada para esta estructura de ficheros sí deberia funcionar si el resto del xml está correctamente estructurado y con sus espacios de nombres en cada nodo. Habría que revisar el xml xompleto, a ojo se puede más o menos revisar si lo pusieras completo. Nota: es mejor crear etiquetas/prefijos de los espacios de nombres para no tener que reescribir en cada nodo el espacio de nombres del xsd y referenciando con el prefijo ahorras espacio y mejoras la visibilidad del xml. |
|
#3
|
|||
|
|||
|
Cita:
Puedes ampliar un poco la informacion que comentas crear etiquetas/prefijos de los espacios de nombres ??? Podria adjuntar el xml completo, pero me sabe mal por el resto de componente del club Puedo hacertelo llegar por otro lado Gracias |
|
#4
|
|||
|
|||
|
Cita:
Te dejo una prueba de Factura simplificada (Creo que está a la última versión, no he podido comprobar si ha habido modificaciones, estoy un pelin liado estas ultimas semanas) Código PHP:
Si te fijas, en el segundo nodo se definen los prefijos/etiquetas para hacer referencia a los xsd y despues en cada nodo se pone simplemente la etiqueta que corresponda según el nodo, ya que cada nodo puede ser de un esquema(xsd) distinto, aqu'i defino 2 etiquetas "sum" y "sum1" Claro, esto en lenguajes actuales, practicamente no hay ni que saberlo, ya que se define todo muy automático, pero entiendo que estás escribiendo a pelo los xmls. Última edición por ermendalenda fecha: 19-10-2024 a las 10:14:58. |
|
#5
|
|||
|
|||
|
Cita:
Agradecido por tu tiempo. Tomo nota de los prefijos/etiquetas que me indicas y voy a cambiarlo. Tal como entiendes estoy montando a PELO los xmls. He pasado una prueba con el xml que me aadjunta y aleluya HA FUNCIONADO e imagino que ha llegado a la AEAT por la respuesta que me indican de error. Te lo adjunto : <?xml version="1.0" encoding="UTF-8"?> <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> <env:Body><env:Fault><faultcode>env:Server</faultcode> <faultstring>Codigo[20009]. UNSUCCESSFUL EXECUTION CAUSED BY AN UNAVAILABLE RESOURCE. REASON 00C90081, TYPE OF RESOURCE 00000210, AND RESOURCE NAME DBTCCSOR.TSTCCSOR.00000001. SQLCODE=-904, SQLSTATE=57011, DRIVER=4.33.43 </faultstring> </env:Fault> </env:Body> </env:Envelope> Donde puedo averiguar lo que significan estos errores y los pasos a seguir. Gracias Rodrigo |
|
#6
|
|||
|
|||
|
Cita:
Pero con autoafirma.exe si puedes investigar, aunque tun pelin complicado y no se si se ajustará a los tiempos que necesitas para las generaciones. La otra opción es que compras alguna función api/dll para estas cosas, hay un par de ellas que son adaptables a casi cualquier software de desarrollo antiguo Última edición por ermendalenda fecha: 19-10-2024 a las 10:58:48. |
|
#7
|
|||
|
|||
|
Cita:
sURL is string = NoSpace(VERIFACTU_ENDPOINT) sResult is string = "" HTTPCertificate(sCertificadoSeleccionado) IF HTTPRequest(sURL,"","",sRequest) = False THEN Error("ERROR:"+CR+CR+ErrorInfo()) ELSE sResult = HTTPGetResult(httpResult) fSaveText(XTMP+"RESPUESTA ENVIO XML.TXT",sResult) Info("OK HTTPREQUEST",sUbicacion,"",sResult) END Como ves, indico cual es el ENDPOINT : VERIFACTU_ENDPOINT is string = "https://prewww1.aeat.es/wlpl/TIKE-CONT/ws/SistemaFacturacion/VerifactuSOAP" sNombre_del_endpoint_es is string = "SistemaVerifactuPruebas" adjunto el certificado a la peticion y realizo una peticion HTTPREQUEST a la url de hacienda y recibo la respuesta. Esta forma de realizar la peticion la tengo implementada en el SII desde hace años y actualmente esta funcionando perfectamente. Me reitero, gracias por dedicarme tu tiempo, ya que he adelantado mucho, ahora falta interpretar la respuesta de la AEAT Voy a ver el tema de la firma y el hash de la firma Rodrigo |
|
#8
|
||||
|
||||
|
Enviar a pelo xml en c#
Cita:
Cita:
byte[] Program.certificado , esta variable contiene el certificado usado para firmar la conexion string Program.passcertificado, esta variable contiene la clave del certificado [CODE C#] /// <summary> /// Llama a al web service de la AEAT para el VeriFactu seleccionado. /// </summary> /// <param name="url">Url destino.</param> /// <param name="action">Acción a ejecutar.</param> /// <param name="xmlDocument">Documento soap xml.</param> /// <returns>Devuelve la respuesta.</returns> protected static string Call(string url, string action, XmlDocument xmlDocument) { HttpWebRequest webRequest = CreateWebRequest(url, action); X509Certificate2 certificate = new X509Certificate2(Program.certificado, Program.passcertificado); // Aqui se carga el certificado, yo lo almaceno en la base de datos, pero podriai s cargarlo desde un archivo var tiempo = certificate.SubjectName; if (certificate == null) throw new ArgumentNullException( "Certificate is null. Maybe serial number in configuration was wrong."); if (certificate.NotAfter < DateTime.Now) throw new ArgumentNullException( $"Certificate is out of date. NotAfter: {certificate.NotAfter}."); webRequest.ClientCertificates.Add(certificate); using (Stream stream = webRequest.GetRequestStream()) { xmlDocument.Save(stream); } HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse(); string statusDescription = response.StatusDescription; Stream dataStream = response.GetResponseStream(); string responseFromServer; using (StreamReader reader = new StreamReader(dataStream)) { responseFromServer = reader.ReadToEnd(); reader.Close(); dataStream.Close(); response.Close(); } return responseFromServer; } [/code] |
|
#9
|
||||
|
||||
|
Cita:
|
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Hijo de Informáticos | gluglu | Humor | 3 | 13-03-2007 11:05:35 |
| Adictos informaticos ... | Trigger | Humor | 2 | 11-10-2004 12:18:32 |
| Nosotros los Informáticos | Trigger | Humor | 1 | 10-10-2004 14:58:09 |
| Patrón de los Informáticos. | obiwuan | Varios | 20 | 10-09-2003 14:44:54 |
| Chistes Informaticos | jhonny | Humor | 2 | 11-08-2003 21:59:09 |
|