![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Si, con el wsdl importer. Los datos que le estoy pasando son reales, o sea, una empresa que está dada de alta en el REDEME y con su certificado. También he probado la modificación en bloque de otras 100 facturas y también funciona.
|
#2
|
||||
|
||||
no se si puedes poner un pequeño ejemplo de como hacerlo. Me estoy volviendo majareta y no consigo ver que es lo que esta mal. Y como puedes ver no soy el único.
|
#3
|
|||
|
|||
pues si. x favor. algo que se pueda descargar mejor.
![]() ¿el certificado que usas es .pfx? ¿y modificar modificas cualquier dato de la factura, hasta el punto de poder cambiar una por otra? ![]() Saludos ! |
#4
|
|||
|
|||
Buenas a todos.
Yo ando liado también con este tema. Es la primera vez que toco los Web Services y puedo estar equivocado en lo que diré a continuación: El proyecto lo estoy realizando en C#, que por lo que he leído hay gente que también lo está haciendo con este lenguaje. Pues bien, yo estoy utilizando HttpWebRequest para lanzar una petición al servidor. De momento he conseguido, con el certificado que me aparezca el mensaje de "Esta URL corresponde a un Web Service". El problema aparece cuando intento enviar el XML con la información y me sale: Error 1304: "No se permite contenido en el prólogo" -> XML no válido o mal formado |
#5
|
|||
|
|||
Hola, os pongo el ejemplo que estoy enviando:
Los cifs los he cambiado, han de ser reales. El certificado que uso es PFX. procedure TForm1.CrearSumLRFacturasEmitidasTest(Var ASumLRFacturasEmitidas:SuministroLRFacturasEmitidas); Var ARegLRFacturasEmitidas:Array_Of_LRfacturasEmitidasType; AFacturasAgrupadas:FacturasAgrupadas; { Array array of IDFacturaAgrupada; } AFacturasRectificadas:FacturasRectificadas; { Array array of IDFacturaRectificada; } ADatosInmueble ![]() ADesgloseIvaDF,ADesgloseIvaDOPS,ADesgloseIvaDOEN ![]() I:Integer; Begin {$REGION 'CABECERA'} ASumLRFacturasEmitidas.Cabecera := CabeceraSii.Create; ASumLRFacturasEmitidas.Cabecera.IDVersionSii:=VersionSiiType(0); ASumLRFacturasEmitidas.Cabecera.Titular:=PersonaFisicaJuridicaESType.Create; ASumLRFacturasEmitidas.Cabecera.Titular.NombreRazon:=xxxxxxxx, S.L'; //ASumLRFacturasEmitidas.Cabecera.Titular.NIFRepresentante:=''; { OPCIONAL } ASumLRFacturasEmitidas.Cabecera.Titular.NIF:='B04xxxxxxx'; ASumLRFacturasEmitidas.Cabecera.TipoComunicacion:=ClaveTipoComunicacionType(0); {$ENDREGION} { BUCLE FACTURAS } SetLength(ARegLRFacturasEmitidas, 101); for I := 0 to 100 do Begin ARegLRFacturasEmitidas[i]:=LRFacturasEmitidasType.Create; {$REGION 'PERIODOIMPOSITIVO'} ARegLRFacturasEmitidas[i].PeriodoImpositivo:=PeriodoImpositivo.Create; ARegLRFacturasEmitidas[i].PeriodoImpositivo.Ejercicio:='2016'; ARegLRFacturasEmitidas[i].PeriodoImpositivo.Periodo:=TipoPeriodoType(11); {$ENDREGION} {$REGION 'IDFACTURA'} ARegLRFacturasEmitidas[i].IDFactura:=IDFacturaExpedidaType.Create; With ARegLRFacturasEmitidas[i].IDFactura do begin IDEmisorFactura:=IDEmisorFactura3.Create; IDEmisorFactura.NIF:='B04xxxxxxx'; NumSerieFacturaEmisor:='16-'+IntToStr(0+I); { Número de la factura del emisor. En caso de asientos resúmenes número inicial de factura } //NumSerieFacturaEmisorResumenFin:='16-1251'; { OPCIONAL. Campo específico para asientos resumen. Se corresponde con el número y serie de la última factura } FechaExpedicionFacturaEmisor:='10-12-2016'; end; {$ENDREGION} {$REGION 'FACTURAEXPEDIDA'} ARegLRFacturasEmitidas[i].FacturaExpedida:=FacturaExpedidaType.Create; ARegLRFacturasEmitidas[i].FacturaExpedida.TipoFactura:=ClaveTipoFacturaType(0); { Clave del tipo de factura } // ARegLRFacturasEmitidas[i].FacturaExpedida.TipoRectificativa:=ClaveTipoRectificativaType(0); { OPCIONAL. Clave del tipo de factura } {$REGION 'FACTURASAGRUPADAS OPCIONAL'} // SetLength(AFacturasAgrupadas, 1); // AFacturasAgrupadas[i]:=IDFacturaARType.Create; // AFacturasAgrupadas[i].NumSerieFacturaEmisor:='FV-500'; // AFacturasAgrupadas[i].FechaExpedicionFacturaEmisor:='15-12-2016'; // // ARegLRFacturasEmitidas[i].FacturaExpedida.FacturasAgrupadas:=AFacturasAgrupadas; {$ENDREGION} {$REGION 'FACTURASRECTIFICADAS OPCIONAL'} // SetLength(AFacturasRectificadas, 1); // AFacturasRectificadas[i]:=IDFacturaARType.Create; // AFacturasRectificadas[i].NumSerieFacturaEmisor:='FV-500'; // AFacturasRectificadas[i].FechaExpedicionFacturaEmisor:='15-12-2016'; // // ARegLRFacturasEmitidas[i].FacturaExpedida.FacturasRectificadas:=AFacturasRectificadas; {$ENDREGION} {$REGION 'IMPORTERECTIFICACION OPCIONAL'} // ARegLRFacturasEmitidas[i].FacturaExpedida.ImporteRectificacion:=DesgloseRectificacionType.Create; // ARegLRFacturasEmitidas[i].FacturaExpedida.ImporteRectificacion.BaseRectificada:='100.10'; {Base imponible de las facturas/factura sustituida } // ARegLRFacturasEmitidas[i].FacturaExpedida.ImporteRectificacion.CuotaRectificada:='10.10'; { Cuota repercutida o soportada de las facturas/factura sustituida } // ARegLRFacturasEmitidas[i].FacturaExpedida.ImporteRectificacion.CuotaRecargoRectificado:='2.00'; { OPCIONAL.Cuota recargo de equivalencia de las facturas/factura sustituida } {$ENDREGION} {$REGION 'FECHAOPERACION OPCIONAL'} // ARegLRFacturasEmitidas[i].FacturaExpedida.FechaOperacion:='05-12-2016'; { OPCIONAL. Fecha en la que se ha realizado la operación siempre que sea diferente a la fecha de expedición } {$ENDREGION} {$REGION 'CLAVE REGIMEN ESPECIAL O TRANSCENDENCIA'} ARegLRFacturasEmitidas[i].FacturaExpedida.ClaveRegimenEspecialOTrascendencia:=IdOperacionesTrascendenciaTributariaType(0); { Clave que identificará el tipo de operación o el régimen especial con transcendencia tributaria } {$ENDREGION} {$REGION 'IMPORTETOTAL'} ARegLRFacturasEmitidas[i].FacturaExpedida.ImporteTotal:='2420.00'; { OPCIONAL ??. Importe total de la factura } {$ENDREGION} {$REGION 'BASE IMPONIBLE A COSTE OPCIONAL'} // ARegLRFacturasEmitidas[i].FacturaExpedida.BaseImponibleACoste:='1210.00'; { OPCIONAL. Para grupos de iva } {$ENDREGION} {$REGION 'DESCRIPCION OPERACION'} ARegLRFacturasEmitidas[i].FacturaExpedida.DescripcionOperacion:='TRANSPORTE'; { Descripción del objeto de la factura } {$ENDREGION} {$REGION 'DATOS INMUEBLE OPCIONAL'} // SetLength(ADatosInmueble, 1); // ADatosInmueble[i]:=DatosInmuebleType.Create; // ADatosInmueble[i].SituacionInmueble:=SituacionInmuebleType(0); { Identificador que especifica la situación del inmueble } // ADatosInmueble[i].ReferenciaCatastral:='XXX123'; { Referencia catastral del inmueble } // // ARegLRFacturasEmitidas[i].FacturaExpedida.DatosInmueble:=ADatosInmueble; {$ENDREGION} {$REGION 'IMPORTE TRANSMISION SUJETO A IVA OPCIONAL'} // ARegLRFacturasEmitidas[i].FacturaExpedida.ImporteTransmisionSujetoAIva:='200.10'; { OPCIONAL. Importe } {$ENDREGION} {$REGION 'EMITIDA POR TERCEROS OPCIONAL'} // ARegLRFacturasEmitidas[i].FacturaExpedida.EmitidaPorTerceros:=EmitidaPorTercerosType(0); { OPCIONAL. Identificador que si aparece con la etiqueta S indica que la factura ha sido emitida por un tercero. } {$ENDREGION} {$REGION 'CONTRAPARTE'} ARegLRFacturasEmitidas[i].FacturaExpedida.Contraparte:=PersonaFisicaJuridicaType.Create; { OPCIONAL ?? } ARegLRFacturasEmitidas[i].FacturaExpedida.Contraparte.NombreRazon:='cliente, S.L'; { Nombre-razón social de la contraparte de la operación(cliente) de facturas expedidas } // ARegLRFacturasEmitidas[i].FacturaExpedida.Contraparte.NIFRepresentante:='1111'; { OPCIONAL. NIF del representante de la contraparte de la operación } ARegLRFacturasEmitidas[i].FacturaExpedida.Contraparte.NIF:='B04xxxxx'; { Identificador del NIF contraparte de la operación (cliente) de facturas expedidas } // ARegLRFacturasEmitidas[i].FacturaExpedida.Contraparte.IDOtro:=IDOtroType.Create; // ARegLRFacturasEmitidas[i].FacturaExpedida.Contraparte.IDOtro.CodigoPais:=CountryType2(0); { OPCIONAL. Código del país asociado contraparte de la operación (cliente) de facturas expedidas } // ARegLRFacturasEmitidas[i].FacturaExpedida.Contraparte.IDOtro.IDType:=PersonaFisicaJuridicaIDTypeType(0); { Clave para establecer el tipo de identificación en el pais de residencia } // ARegLRFacturasEmitidas[i].FacturaExpedida.Contraparte.IDOtro.ID:='B04285870'; { Número de identificación en el país de residencia } {$ENDREGION} {$REGION 'TIPO DESGLOSE'} ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose:=TipoDesglose.Create; {$REGION 'DESGLOSE FACTURA'} ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseFactura:=TipoSinDesgloseType.Create; {$REGION 'SUJETA'} ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseFactura.Sujeta:=SujetaType.Create; {$REGION 'EXENTA'} ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseFactura.Sujeta.Exenta:=Exenta.Create; {$REGION 'CAUSAEXENCION'} ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseFactura.Sujeta.Exenta.CausaExencion:=CausaExencionType(0);{ OPCIONAL. Campo que especifica la causa de la exención en los supuestos que aplique } {$ENDREGION} {$REGION 'BASE IMPONIBLE'} ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseFactura.Sujeta.Exenta.BaseImponible:='2420.00'; { Importe en euros correspondiente a la parte Sujeta / Exenta } {$ENDREGION} {$ENDREGION} {$REGION 'NO EXENTA'} // ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseFactura.Sujeta.NoExenta:=NoExenta.Create; // {$REGION 'TIPO NO EXENTA'} // ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseFactura.Sujeta.NoExenta.TipoNoExenta:=TipoOperacionSujetaNoExe ntaType(0); { Tipo de operación sujeta y no exenta para la diferenciación de inversión de sujeto pasivo } // {$ENDREGION} // {$REGION 'DESGLOSE IVA'} // SetLength(ADesgloseIvaDF, 1); // ADesgloseIvaDF[i]:=DetalleIVA2.Create; // ADesgloseIvaDF[i].TipoImpositivo:='21.0'; { Porcentaje aplicado sobre la Base Imponible para calcular la cuota } // ADesgloseIvaDF[i].BaseImponible:='1000.0'; { Magnitud dineraria sobre la cual se aplica un detertminado tipo impositivo} // ADesgloseIvaDF[i].CuotaRepercutida:='210.0'; { Cuota resultante de aplicar a la base imponible un determinado tipo impositivo} // ADesgloseIvaDF[i].TipoRecargoEquivalencia:='0.0'; { OPCIONAL. Porcentaje asociado en función del tipo de IVA} // ADesgloseIvaDF[i].CuotaRecargoEquivalencia:='0.0'; { OPCIONAL. Cuota resultante de aplicar a la base imponible el tipo de recargo de equivalencia} // ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseFactura.Sujeta.NoExenta.DesgloseIva:=ADesgloseIvaDF; {$ENDREGION} {$ENDREGION} {$ENDREGION} {$REGION 'NO SUJETA'} // ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseFactura.NoSujeta:=NoSujetaType.Create; // ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseFactura.NoSujeta.ImportePorArticulos7_14_Otros:='100'; { Importe en euros si la sujeción es por el art. 7.14, otros } // ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseFactura.NoSujeta.ImporteTAIReglasLocalizacion:='100'; { Importe en euros si la sujeción es por operaciones no sujetas en el TAI por reglas de localización } {$ENDREGION} {$ENDREGION} {$REGION 'DESGLOSE TIPO OPERACION'} // ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion:=TipoConDesgloseType.Create; // // {$REGION 'PRESTACION SERVICIOS'} // ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.PrestacionServicios:=TipoSinDesglosePrestacionTy pe.Create; // // {$REGION 'SUJETA'} // ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.PrestacionServicios.Sujeta:=SujetaType.Create; // {$REGION 'EXENTA'} // ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.PrestacionServicios.Sujeta.Exenta:=Exenta.Create ; // {$REGION 'CAUSAEXENCION'} // ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.PrestacionServicios.Sujeta.Exenta.CausaExencion: =CausaExencionType(0);{ OPCIONAL. Campo que especifica la causa de la exención en los supuestos que aplique } // {$ENDREGION} // {$REGION 'BASE IMPONIBLE'} // ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.PrestacionServicios.Sujeta.Exenta.BaseImponible: ='300.50'; { Importe en euros correspondiente a la parte Sujeta / Exenta } // {$ENDREGION} // {$ENDREGION} // {$REGION 'NO EXENTA'} // ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.PrestacionServicios.Sujeta.NoExenta:=NoExenta.Cr eate; // {$REGION 'TIPO NO EXENTA'} // ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.PrestacionServicios.Sujeta.NoExenta.TipoNoExenta :=TipoOperacionSujetaNoExentaType(0); { Tipo de operación sujeta y no exenta para la diferenciación de inversión de sujeto pasivo } // {$ENDREGION} // {$REGION 'DESGLOSE IVA'} // SetLength(ADesgloseIvaDOPS, 1); // ADesgloseIvaDOPS[i]:=DetalleIVA2.Create; // ADesgloseIvaDOPS[i].TipoImpositivo:='21.0'; { Porcentaje aplicado sobre la Base Imponible para calcular la cuota } // ADesgloseIvaDOPS[i].BaseImponible:='1000.0'; { Magnitud dineraria sobre la cual se aplica un detertminado tipo impositivo} // ADesgloseIvaDOPS[i].CuotaRepercutida:='210.0'; { Cuota resultante de aplicar a la base imponible un determinado tipo impositivo} // ADesgloseIvaDOPS[i].TipoRecargoEquivalencia:='0.0'; { OPCIONAL. Porcentaje asociado en función del tipo de IVA} // ADesgloseIvaDOPS[i].CuotaRecargoEquivalencia:='0.0'; { OPCIONAL. Cuota resultante de aplicar a la base imponible el tipo de recargo de equivalencia} // ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.PrestacionServicios.Sujeta.NoExenta.DesgloseIva: =ADesgloseIvaDOPS; // {$ENDREGION} // {$ENDREGION} // {$ENDREGION} // // {$REGION 'NO SUJETA'} // ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.PrestacionServicios.NoSujeta:=NoSujetaType.Creat e; // ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.PrestacionServicios.NoSujeta.ImportePorArticulos 7_14_Otros:='100'; { Importe en euros si la sujeción es por el art. 7.14, otros } // ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.PrestacionServicios.NoSujeta.ImporteTAIReglasLoc alizacion:='100'; { Importe en euros si la sujeción es por operaciones no sujetas en el TAI por reglas de localización } // {$ENDREGION} // {$ENDREGION} // // {$REGION 'ENTREGA'} // ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.Entrega:=TipoSinDesgloseType.Create; // // {$REGION 'SUJETA'} // ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.Entrega.Sujeta:=SujetaType.Create; // {$REGION 'EXENTA'} // ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.Entrega.Sujeta.Exenta:=Exenta.Create; // {$REGION 'CAUSAEXENCION'} // ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.Entrega.Sujeta.Exenta.CausaExencion:=CausaExenci onType(0);{ OPCIONAL. Campo que especifica la causa de la exención en los supuestos que aplique } // {$ENDREGION} // {$REGION 'BASE IMPONIBLE'} // ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.Entrega.Sujeta.Exenta.BaseImponible:='300.50'; { Importe en euros correspondiente a la parte Sujeta / Exenta } // {$ENDREGION} // {$ENDREGION} // {$REGION 'NO EXENTA'} // ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.Entrega.Sujeta.NoExenta:=NoExenta.Create; // {$REGION 'TIPO NO EXENTA'} // ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.Entrega.Sujeta.NoExenta.TipoNoExenta:=TipoOperac ionSujetaNoExentaType(0); { Tipo de operación sujeta y no exenta para la diferenciación de inversión de sujeto pasivo } // {$ENDREGION} // {$REGION 'DESGLOSE IVA'} // SetLength(ADesgloseIvaDOEN, 1); // ADesgloseIvaDOEN[i]:=DetalleIVA2.Create; // ADesgloseIvaDOEN[i].TipoImpositivo:='21.0'; { Porcentaje aplicado sobre la Base Imponible para calcular la cuota } // ADesgloseIvaDOEN[i].BaseImponible:='1000.0'; { Magnitud dineraria sobre la cual se aplica un detertminado tipo impositivo} // ADesgloseIvaDOEN[i].CuotaRepercutida:='210.0'; { Cuota resultante de aplicar a la base imponible un determinado tipo impositivo} // ADesgloseIvaDOEN[i].TipoRecargoEquivalencia:='0.0'; { OPCIONAL. Porcentaje asociado en función del tipo de IVA} // ADesgloseIvaDOEN[i].CuotaRecargoEquivalencia:='0.0'; { OPCIONAL. Cuota resultante de aplicar a la base imponible el tipo de recargo de equivalencia} // ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.Entrega.Sujeta.NoExenta.DesgloseIva:=ADesgloseIv aDOEN; // {$ENDREGION} // {$ENDREGION} // {$ENDREGION} // // {$REGION 'NO SUJETA'} // ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.Entrega.NoSujeta:=NoSujetaType.Create; // ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.Entrega.NoSujeta.ImportePorArticulos7_14_Otros:= '100'; { Importe en euros si la sujeción es por el art. 7.14, otros } // ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.Entrega.NoSujeta.ImporteTAIReglasLocalizacion:=' 100'; { Importe en euros si la sujeción es por operaciones no sujetas en el TAI por reglas de localización } // {$ENDREGION} // // // {$ENDREGION} // // {$ENDREGION} // // // // {$ENDREGION} ASumLRFacturasEmitidas.RegistroLRFacturasEmitidas:=ARegLRFacturasEmitidas; {$ENDREGION} End; End; |
#6
|
|||
|
|||
Cita:
|
#7
|
||||
|
||||
Francisco1973 lo primero gracias. Justo lo que necesitamos es la forma de enviar no la de construir el xml.
|
#8
|
|||
|
|||
Hola, como envio:
defWSDL:='https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroFactEmitidas.wsdl'; defSvc:='siiService'; defPrt:='SuministroFactEmitidasPruebas'; HTTPRIO1.WSDLLocation:=defWSDL; HTTPRIO1.Service:=defSvc; HTTPRIO1.Port:=defPrt; CrearSumLRFacturasEmitidasTest(Peticion); Resultado:=GetsiiSOAP(true,'',HTTPRIO1).SuministroLRFacturasEmitidas(Peticion); Y el certificado: (es necesario tener registrado capicom.dll y la unidad CAPICOM_TLB procedure TForm1.HTTPRIO1HTTPWebNode1BeforePost(const HTTPReqResp: THTTPReqResp;Data: Pointer); var Store : IStore; Certs : ICertificates; Cert : ICertificate2; CertContext : ICertContext; PCertContext : PCCERT_CONTEXT; V : OleVariant; const INTERNET_OPTION_CLIENT_CERT_CONTEXT = 84; begin V:=NombreCertificado; { subject del certificado instalado: Nombre de la empresa } Store := CoStore.Create; Store.Open(CAPICOM_CURRENT_USER_STORE, 'MY',CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED ); Certs:=Store.Certificates.Find(CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME,V,False ); { Buscar certificado por nombre } if Certs.Count > 0 then begin Cert:=IInterface(Certs.Item[1]) as ICertificate2; CertContext:=Cert as ICertContext; CertContext.Get_CertContext(Integer(PCertContext)); if InternetSetOption(Data,INTERNET_OPTION_CLIENT_CERT_CONTEXT,PCertContext,Sizeof(CERT_CONTEXT)) = False then begin ShowMessage( 'Internet SSL certificate. Something went wrong' ); end; end; end; |
#9
|
|||
|
|||
gracias Francisco1973
ese código funciona perfecto. saludos ! |
#10
|
|||
|
|||
Cita:
Código:
var PCertContext : PCCERT_CONTEXT; Y en: Código:
if InternetSetOption(Data,INTERNET_OPTION_CLIENT_CERT_CONTEXT,PCertContext,Sizeof(CERT_CONTEXT)) = False then begin ShowMessage( 'Internet SSL certificate. Something went wrong' ); end; end; ¿Me faltará poner algún USES o algo? Gracias y un saludo. |
#11
|
|||
|
|||
Cita:
![]() Gracias! |
#12
|
|||
|
|||
Hola angelhorse,
Yo tambien estoy haciendo este tema en VB.net (muy similar a c#), pero no consigo crear bien el archivo XML Parto de la base de que el archivo XML a generar debe seguir el modelo cuyo ejemplo hay en SII_Descripcion_ServicioWeb_v0.5_es_es.pdf en apartado 8.1.1.1.Ejemplo mensaje de XML de alta. Yo siguiendo las directrices de los compañeros de Delphi he adaptado su codigo (usando el ejemplo de seccion_31 que colgo WebServices AEAT Berlin_3.rar. Lo hago usando este codigo (solo pongo parte) Dim i As Long Dim ASuministroLRFacturasEmitidas As SuministroLRFacturasEmitidas Dim ARegistroLRFacturasEmitidas() As LRfacturasEmitidasType '=========================================================================== 'generacion info factura/s emitidas---------------------------------------------------------------- ASuministroLRFacturasEmitidas = New SuministroLRFacturasEmitidas() ASuministroLRFacturasEmitidas.Cabecera = New CabeceraSii() 'DATOS Cabecera-------------------------------------------------------------------------- ASuministroLRFacturasEmitidas.Cabecera.IDVersionSii = ClienteSII1.VersionSiiType.Item05 '0.5 version actual del SII ASuministroLRFacturasEmitidas.Cabecera.Titular = New PersonaFisicaJuridicaESType() 'Nombre del presentador ASuministroLRFacturasEmitidas.Cabecera.Titular.NombreRazon = "Empresa XXX" 'el NIF del presentador (DEBE COINCIDIR CON EL CERTIFICADO SELECCIONADO) ASuministroLRFacturasEmitidas.Cabecera.Titular.NIF = "A84532501" 'Tipo de comunicacion: ' A0 - ALTA ' A1- MODIFICACION ' A4- MODIFICACION REGIMEN VIAJEROS ASuministroLRFacturasEmitidas.Cabecera.TipoComunicacion = ClaveTipoComunicacionType.A0 Etc. etc. El problema es que no encuentro la forma de agregar la cabecera: <?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope .....> <soapenv:Header/> Ademas en las etiquetas no hay forma de ponerle el namespace sii o siiLR Que es imprescindible. La pregunta es por tanto ¿Estoy usando el metodo adecuado y hay pasos que desconozco ¿ o deberia generear el XML manualmente a base de ir concatenado trozos de cadena y despues guardarlo como archivo? ¿Cómo lo has hecho tu? Gracias de antemano por cualquier info que pueda dar luz al tema |
#13
|
|||
|
|||
Hola,
Me estreno en el foro, yo estoy desarrollando con VB/C# Os pego como lo hago yo para subir facturas emitidas, esta todo de prueba: Tengo un bucle For para simular la generación varias facturas, me conecto sin problema y recibo resultado de cada uno de los registros. Dim MensajeError As String = "" Dim MensajeAcierto As String = "" Dim sFactura As String = "" Dim sRutaCert As String = "" ' Dim Mails As New LNclsMail Dim decodedBytes As Byte() decodedBytes = Convert.FromBase64String(My.Settings.ClaveCertificado) Dim sClaveCert As String sClaveCert = Encoding.UTF8.GetString(decodedBytes) 'Obtener certificado desde fichero p12 sRutaCert = System.AppDomain.CurrentDomain.BaseDirectory() & My.Settings.NombreCertificado cert = New System.Security.Cryptography.X509Certificates.X509Certificate2(sRutaCert, sClaveCert) 'Se llama a la clase siiService, creada a partir del WS y cambiando el inherits por : Microsoft.Web.Services3.WebServicesClientProtocol Dim webserviceProxy As New siiFacturasEmitidas webserviceProxy.ClientCertificates.Add(cert) Dim signatureToken As X509SecurityToken = GetSecurityToken() Dim requestContext As SoapContext = webserviceProxy.RequestSoapContext requestContext.Security.Tokens.Add(signatureToken) Dim sig As New MessageSignature(signatureToken) requestContext.Security.Timestamp.TtlInSeconds = 60 requestContext.Security.Elements.Add(sig) Dim testC As New SuministroLRFacturasEmitidas Dim cab As New CabeceraSii Dim fac As New LRfacturasEmitidasType Dim resul As RespuestaLRFEmitidasType Dim perso As New PersonaFisicaJuridicaESType perso.NIF = "XXXXXXXXX" perso.NombreRazon = "Empresa de pruebas" cab.Titular = perso cab.TipoComunicacion = "0" testC.Cabecera = cab For i = 20 To 30 Dim fras As New LRfacturasEmitidasType Dim perio As New RegistroSiiPeriodoImpositivo perio.Ejercicio = 2015 perio.Periodo = "01" fras.PeriodoImpositivo = perio Dim idfra As New IDFacturaExpedidaType Dim empresa As New IDFacturaExpedidaTypeIDEmisorFactura Dim cver As New VersionSiiType cab.IDVersionSii = cver.Item05 empresa.NIF = "XXXXXXXXXXX" idfra.IDEmisorFactura = empresa idfra.NumSerieFacturaEmisor = i + 10 idfra.FechaExpedicionFacturaEmisor = "15-01-2015" fras.IDFactura = idfra Dim fraexp As New FacturaExpedidaType fraexp.TipoFactura = "1" fraexp.ClaveRegimenEspecialOTrascendencia = "01" fraexp.ImporteTotal = "26.70" fraexp.DescripcionOperacion = "Compra xxxxxxxxx" fras.FacturaExpedida = fraexp Dim persona As New PersonaFisicaJuridicaType persona.NombreRazon = "Empresa yyyyyyy" persona.NIFRepresentante = "94235500B" Dim contrap As New PersonaFisicaJuridicaType contrap = persona Dim sujeta As New SujetaType Dim sujetanoexenta As New SujetaTypeNoExenta Dim detalleiva As New DetalleIVAEmitidaType Dim tpdesglose As New TipoSinDesgloseType Dim desglose As New FacturaExpedidaTypeTipoDesglose sujetanoexenta.TipoNoExenta = sujetanoexenta.TipoNoExenta.S1 ReDim sujetanoexenta.DesgloseIVA(0) detalleiva.TipoImpositivo = "21" detalleiva.BaseImponible = "22.07" detalleiva.CuotaRepercutida = "4.63" detalleiva.TipoRecargoEquivalencia = 0 detalleiva.CuotaRecargoEquivalencia = 0 sujetanoexenta.DesgloseIVA(0) = detalleiva sujeta.NoExenta = sujetanoexenta tpdesglose.Sujeta = sujeta desglose.Item = tpdesglose fraexp.TipoDesglose = desglose Dim cfra As New LRConsultaEmitidasType Dim cfil As New LRFiltroEmitidasType Dim ccla As New IDFacturaExpedidaBCType Dim cempr As New IDFacturaExpedidaBCTypeIDEmisorFactura Dim ccab As New CabeceraConsultaSii Dim cper As New PersonaFisicaJuridicaUnicaESType Dim cperio As New RegistroSiiPeriodoImpositivo Dim cperio2 As New RegistroSiiPeriodoImpositivo ccla.FechaExpedicionFacturaEmisor = "15-01-2015" cempr.NIF = "XXXXXXXXX" ccla.IDEmisorFactura = cempr ccla.NumSerieFacturaEmisor = "1" cfil.ClavePaginacion = ccla cperio.Ejercicio = 2015 cperio2.Ejercicio = 2015 cperio2.Periodo = "01" cfil.PeriodoImpositivo = cperio2 cfra.FiltroConsulta = cfil cfra.FiltroConsulta.ClavePaginacion = ccla ReDim Preserve testC.RegistroLRFacturasEmitidas(i) testC.RegistroLRFacturasEmitidas(i) = fras Next i resul = webserviceProxy.SuministroLRFacturasEmitidas(testC) |
#14
|
|||
|
|||
SIIHacienda
Cita:
Yo lo he hecho a base de XElements (Estructura XML) y Strings. Te digo más o menos como lo he hecho (Que supongo que no será la forma más óptima pero es como se me ha ocurrido) Para poner los prefijos de Sii, SiiLR y demás he usado esto: public static XNamespace NAMESPACE = @"*/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroLR.xsd"; Para crear los nodos XElement con sus prefijos: XElement root = new XElement(NAMESPACE + "SuministroLRFacturasEmitidas"); Para poner la cabecera yo he usado esto: XElement Envelope = new XElement(soapenv + "Envelope", new XAttribute(XNamespace.Xmlns + "soapenv", @"*schemas.xmlsoap.org/soap/envelope/"), new XAttribute(XNamespace.Xmlns + "siiLR", @"*/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroLR.xsd"), new XAttribute(XNamespace.Xmlns + "sii", @"*/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd")); XElement Header = new XElement(soapenv + "Header"); Envelope.Add(Header); String file = Utilidades.CreateXMLFile(Envelope, i, "Alta Facturas Emitidas"); Mi Utilidades.CreateXMLFile: XmlTextWriter writer = new XmlTextWriter(archivoPath, Encoding.UTF8); //Con esto de aquí le pones la primera línea esa "<?xml version="1.0" encoding="UTF-8"?>" writer.WriteStartDocument(); writer.Formatting = Formatting.Indented; xml.WriteTo(writer); writer.Flush(); writer.Close(); Espero haberte ayudado. P.D. donde pongo * me refiero a una enlace (No me deja copiarlos tal cual) xD |
#15
|
|||
|
|||
Cita:
|
#16
|
|||
|
|||
Resultado id
Hola , buenos días.
Grácias a todos los que están aportando en este foro, me está sirviendo muchísimo. Tengo entendido que cuando se hace la presentación, en la respuesta se devuelve un ID (número identificativo), que es una especie de número justificante de dicho envío. La intención es la de guardar dicho ID en el envio general o en cada factura presentada, por si después es necesaria hacer alguna gestión con la AEAT. ¿ Alguién me puede decir como acceder/localizar dicho número ?, he estado repasando el .pas de SuministroFacEmitidas , pero no lo encuentro. Un saludo.. |
#17
|
|||
|
|||
Cita:
|
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
TICKET BAI (TicketBAI); Nuevo sistema de la Agencia Tributaria del Pais Vasco | keys | Internet | 4192 | Hace 18 Horas 16:28:07 |
AEAT envio de datos vía Webservice problemas con WSDL | CelsoO | Internet | 11 | 09-10-2019 20:03:41 |
webService Soap de la Administración Digital Española notific@ | apicito | Internet | 3 | 31-01-2017 11:25:28 |
Error en Webservice funcion envio de sms | webmasterplc | Delphi para la web | 5 | 25-07-2013 20:10:29 |
Problemas con envío de XML a un WebService | davidvamo | Internet | 1 | 13-02-2007 15:49:20 |
![]() |
|