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 16-02-2017
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.234
Poder: 24
keys Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 16-02-2017
Avatar de seccion_31
seccion_31 seccion_31 is offline
Miembro
 
Registrado: ene 2017
Posts: 472
Poder: 10
seccion_31 Va por buen camino
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? (conservando su numero y fecha)

Saludos !
Responder Con Cita
  #3  
Antiguo 16-02-2017
angelhorse angelhorse is offline
Registrado
NULL
 
Registrado: feb 2017
Posts: 5
Poder: 0
angelhorse Va por buen camino
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
Responder Con Cita
  #4  
Antiguo 16-02-2017
Francisco1973 Francisco1973 is offline
Miembro
 
Registrado: abr 2008
Posts: 10
Poder: 0
Francisco1973 Va por buen camino
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; }
ADatosInmuebleatosInmueble; {Array array of DetalleInmueble; }
ADesgloseIvaDF,ADesgloseIvaDOPS,ADesgloseIvaDOENesgloseIVA; {Array array of DetalleIVA2; }
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;
Responder Con Cita
  #5  
Antiguo 16-02-2017
CMB CMB is offline
Miembro
 
Registrado: ene 2017
Posts: 349
Poder: 10
CMB Va por buen camino
Cita:
Empezado por angelhorse Ver Mensaje
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
Repasa cuidadosamente la estructura de tu XML, especialmente las primeras líneas. Algo está mal. Ese mensaje sale cuando envías un fichero con defectos de formato. En casos extremos, si mandas un XML con un contenido absurdo, por ejemplo, "dummy" y nada más, es justamente esa la respuesta que te dan.
Responder Con Cita
  #6  
Antiguo 16-02-2017
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.234
Poder: 24
keys Va por buen camino
Francisco1973 lo primero gracias. Justo lo que necesitamos es la forma de enviar no la de construir el xml.
Responder Con Cita
  #7  
Antiguo 16-02-2017
Francisco1973 Francisco1973 is offline
Miembro
 
Registrado: abr 2008
Posts: 10
Poder: 0
Francisco1973 Va por buen camino
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;
Responder Con Cita
  #8  
Antiguo 17-02-2017
Avatar de seccion_31
seccion_31 seccion_31 is offline
Miembro
 
Registrado: ene 2017
Posts: 472
Poder: 10
seccion_31 Va por buen camino
gracias Francisco1973

ese código funciona perfecto.

saludos !
Responder Con Cita
  #9  
Antiguo 17-02-2017
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.234
Poder: 24
keys Va por buen camino
Podeis subir un ejemplo completo en un proyecto delphi.

Gracias.
Responder Con Cita
  #10  
Antiguo 18-08-2022
nincillo nincillo is offline
Miembro
 
Registrado: may 2017
Posts: 190
Poder: 10
nincillo Va por buen camino
Cita:
Empezado por Francisco1973 Ver Mensaje
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;
Siento revivir este post tan antiguo, pero estoy intentando utilizarlo el D2007 y no consigo compilarlo porque me da error en:
Código:
var
PCertContext : PCCERT_CONTEXT;
No reconoce 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;
No reconoce CERT_CONTEXT.

¿Me faltará poner algún USES o algo?

Gracias y un saludo.
Responder Con Cita
  #11  
Antiguo 18-08-2022
Javierus Javierus is offline
Miembro
 
Registrado: jun 2017
Posts: 119
Poder: 10
Javierus Va por buen camino
Yo lo uso en D2007, y tengo en el uses la unidad wcrypt2.pas, que puedes encontrar aquí:
https://github.com/delphiunderground/eid-mw-sdk-delphi
Responder Con Cita
  #12  
Antiguo 16-02-2017
angelhorse angelhorse is offline
Registrado
NULL
 
Registrado: feb 2017
Posts: 5
Poder: 0
angelhorse Va por buen camino
Cita:
Empezado por CMB Ver Mensaje
Repasa cuidadosamente la estructura de tu XML, especialmente las primeras líneas. Algo está mal. Ese mensaje sale cuando envías un fichero con defectos de formato. En casos extremos, si mandas un XML con un contenido absurdo, por ejemplo, "dummy" y nada más, es justamente esa la respuesta que te dan.
Sí, de hecho he mandado el mensaje al foro y me he puesto a repasarlo y era eso. Estaba cogiendo datos que no debía y de ahí el error. Ahora ya solamente salen errores típicos que anuncia Hacienda.

Gracias!
Responder Con Cita
  #13  
Antiguo 27-02-2017
jlegido jlegido is offline
Miembro
NULL
 
Registrado: feb 2017
Posts: 17
Poder: 0
jlegido Va por buen camino
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
Responder Con Cita
  #14  
Antiguo 28-02-2017
batuzail batuzail is offline
Miembro
 
Registrado: feb 2017
Posts: 73
Poder: 10
batuzail Va por buen camino
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)
Responder Con Cita
  #15  
Antiguo 28-02-2017
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.671
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Bienvenido a clubdelphi, como siempre aconsejamos a los nuevos, no olvides leer nuestra guía de estilo, gracias por tu colaboración


Recuerda poner los tags al código fuente, ejemplo:



Gracias
Responder Con Cita
  #16  
Antiguo 28-02-2017
jlegido jlegido is offline
Miembro
NULL
 
Registrado: feb 2017
Posts: 17
Poder: 0
jlegido Va por buen camino
Cita:
Empezado por batuzail Ver Mensaje
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)

Hola batuzail,
Hay 3 formas de crear el xml a enviar a AEAT-SII:
-forma1: mediante cadenas de texto concatenadas
-forma2: usando XmlReader, XmlWriter y otras clases asociadas
-forma3: usando las clases generadas al crear el proxy con wsdl.exe en .NET.

Yo estoy trabajando en la forma 3 y mi codigo es muy parecido al tuyo (el tuyo es mas elegante y compacto), pero en ambos casos tenemos un problema sin resolver, que es poner el elemento raiz, o sea:
<soapenv:Envelope xmlns:soapenv="...//schemas.xmlsoap.org/soap/envelope/" xmlns:siiLR="...://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroLR.xsd" xmlns:sii="...://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd">

Y ademas que todas las etiquetas tienen que llevar su espacio de nombres y su nombre, por ejemplo:
<siiLR:SuministroLRFacturasEmitidas>
<sii:Cabecera>
<sii:IDVersionSii>
Etc.
Al menos según los ejemplos que pone Hacienda en el pdf “ SII_Descripcion_ServicioWeb_v0.5_es_es.pdf”, en el apartado 8.1.1.1.Ejemplo mensaje de XML de alta, por lo que entiendo que sera obligatorio

Yo he cogido tu codigo y le he añadido antes de la ultima linea, las siguientes lineas para ver el xml generaro
'ANEXO/INCISO: Serializacion a XML
'forma 1: por Consola en Ventana Resultados
Código Delphi [-]
      Dim ser As System.Xml.Serialization.XmlSerializer
      ser = New System.Xml.Serialization.XmlSerializer(testC.GetType())
      ser.Serialize(Console.Out, testC)
      resul = webserviceProxy.SuministroLRFacturasEmitidas(testC)
el resultado aparece en la ventana Resultados y podras ver que no tiene la cabecera que piden, ni las etiquetas cumplen con el disñeo <espacioNombres:nombreEtiqueta>

No se si lo que digo es correcto o no importa, aunque yo creo que si. Voy a seguir investigando, dentro de la forma 3 a ver si lo consigo. Si descubres algo, ya diras.

Otra duda gorda:
Yo tengo la clase siiService tal que asi
Código Delphi [-]
Partial Public Class siiService
    Inherits System.Web.Services.Protocols.SoapHttpClientProtocol
Pero tu dices que hay que cambiarla a esto 
Partial Public Class siiService
    Inherits Microsoft.Web.Services3.WebServicesClientProtocol
¿Por que? ¿cual es la utilidad o ventaja?

Muchas gracias por tu aporte y tu info

Última edición por jlegido fecha: 28-02-2017 a las 19:03:17. Razón: Por que han sido borrados dos partes del codigo
Responder Con Cita
  #17  
Antiguo 27-03-2017
jcaceres121 jcaceres121 is offline
Registrado
NULL
 
Registrado: mar 2017
Posts: 1
Poder: 0
jcaceres121 Va por buen camino
Hola.
Aunque se que este club es de Delphi, estoy intentando crear una solución en Java para el problema. Tengo alguna experiencia con Java y ninguna con webservices.
He visto tu código .NET, que es quizá lo más parecido a Java que he encontrado por ahí, pero me surgen dudas.
Lamento no haber encontrado ningún foro de Java y por eso me veo obligado a preguntar aquí.
Os comento mi situación.
Tengo ya creado una objeto SuministroLRFacturasEmitidas (supongo que correctamente) que contiene una factura de ejemplo, y también tengo un objeto X509Certificate con un certificado obtenido a partir de un fichero .PFX.
Entiendo que sólo me quedaría invocar a los métodos necesarios para enviar el objeto y recibir la respuesta, pero no se como.
Si alguien pudiera ayudarme, estaría muy agradecido. levo muchas horas con esto y no avanzo.
Gracias
Responder Con Cita
  #18  
Antiguo 02-03-2017
angelhorse angelhorse is offline
Registrado
NULL
 
Registrado: feb 2017
Posts: 5
Poder: 0
angelhorse Va por buen camino
SIIHacienda

Cita:
Empezado por jlegido Ver Mensaje
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
Buenas!
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
Responder Con Cita
  #19  
Antiguo 02-03-2017
jlegido jlegido is offline
Miembro
NULL
 
Registrado: feb 2017
Posts: 17
Poder: 0
jlegido Va por buen camino
Cita:
Empezado por angelhorse Ver Mensaje
Buenas!
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
Hola angelhorse,
Si, muchas gracias,me ha sido util tu codigo. Yo tenia ya algo parecido hecho con XmlWriter.
De todas formas , me faltaria saber que contiene la variable soapenv, que tu pones en varias partes del codigo, p.e.
Código:
XElement Header = new XElement(soapenv + "Header");
Otra duda, dado que tu generas el xml de esta forma, ¿ como lo envias a AEAT ?, usando un metodo HttpRequest o Serializar y usas las clases generadas mediante wsdl.exe, enviandolo asi

Código:
  resul = proxy.SuministroLRFacturasEmitidas(AsuminstroFacturasEmitidas)
Gracias de nuevo.
Responder Con Cita
  #20  
Antiguo 12-03-2017
jlegido jlegido is offline
Miembro
NULL
 
Registrado: feb 2017
Posts: 17
Poder: 0
jlegido Va por buen camino
Cita:
Empezado por angelhorse Ver Mensaje
Buenas!
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

Hola angelhorse,

Estoy siguiendo un metodo parecido al tuyo, es decir lo hago en VB.Net, pero generando el archivo xml de forma manual (es decir son uso objetos generados al importa la referencia al servicio web).
Bueno el tema es que creo tener todo bien pero estoy en un atasco del que no puedo salir y ando ya desesperado, creo que tu me puedes echar un cable.
Tengo el archivo xml correcto y bien formado y con datos reales
Tengo un certificado (en archivo .pfx) correcto y verificado (he hecho envios de otra forma y funciona)
Al final la empresa ha decidido hacerlo todo sin usar los objetos generados al importar la referencia al servicio web, es decir que no tengo un objeto de tipo SuministroLRFacturasEmitidas con el que hacer las usuales lineas:
Código:
     Dim resul As RespuestaLRFEmitidasType
         resul = proxy.SuministroLRFacturasEmitidas(testC)
lo que uso es un objeto System.Net.HttpWebRequest, con el siguiente codigo

Código:
   Dim req As System.Net.HttpWebRequest
      Dim url As String = "*://www7.aeat.es/wlpl/SSII-FACT/ws/fe/SiiFactFEV1SOAP"
      'inicializar propiedades request--------------------------------
      req = HttpWebRequest.Create(url)
      req.Headers.Add("SOAP:Action")
      req.ContentType = "text/xml;charset=""utf-8"""
      req.Accept = "text/xml"
      req.Method = "POST"
      Dim soapEnvelopeXml As XmlDocument = New XmlDocument()
      'cargar xml desde archivo
      Dim filename As String = "h:\facturaEmitidaMODEL1_1_1.xml"
      soapEnvelopeXml.Load(filename)

      'certificado---------------------------------------------------
      Dim cert As System.Security.Cryptography.X509Certificates.X509Certificate2
      Dim sRutaCert As String = "H:\Certificado.pfx"
      Dim sClaveCert As String = "xy123"
      cert = New System.Security.Cryptography.X509Certificates.X509Certificate2(sRutaCert, sClaveCert)
      req.ClientCertificates.Add(cert)

      'recoger respuesta 1-----------------------------------------
      Dim resp As WebResponse = req.GetResponse()
      Dim reader As StreamReader = New StreamReader(resp.GetResponseStream())
      Dim soapResult As String = reader.ReadToEnd()
Y aqui es donde me quedo totalmente atascado, me da un mensaje super largo, del cual solo posteo lo inicial, que es:

Código:
<?xml version="1.0" encoding="UTF-8"?><env:Envelope xmlns:env="*://schemas.xmlsoap.org/soap/envelope/"><env:Body><env:Fault><faultcode>env:Client</faultcode><faultstring>Codigo[1304].Fin prematuro del archivo. (-1,-1)</faultstring><detail><callstack>XML no válido o mal formado
Pero por mas que repaso y repaso no veo que el xml no sea valido o este mal formado y sobre el “Fin prematuro de archivo” no he encontrado nada de anda en internet.
¿Qué codigo usas tu para enviarlo?

Muchas gracias por tu ayuda
Saludos

P.D. donde pongo * me refiero a una enlace (No me deja copiarlos tal cual) xD[/quote]
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
TICKET BAI (TicketBAI); Nuevo sistema de la Agencia Tributaria del Pais Vasco keys Internet 4530 Hace 6 Días 14:09:59
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


La franja horaria es GMT +2. Ahora son las 01:58:50.


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