Ver Mensaje Individual
  #2  
Antiguo 13-09-2024
delphiGar delphiGar is offline
Miembro
 
Registrado: ago 2024
Posts: 182
Reputación: 2
delphiGar Va por buen camino
Cita:
Empezado por newtron Ver Mensaje
Gracias compañero. ¿Tendrías algún ejemplo que pudieras mostrar?


Saludos.
Te digo lo mismo que a pararegistrarme hay que añadir la opcion soSenduntype para no tener problemas, lo puse al contrario.

Te pongo un ejemplo:

Código Delphi [-]
var
    Factura             : RegistroFacturaType;
    RefId, Swdsl: string;
    MyXML, parentXML : TXMLDocument;
    ARootNode,newNode, AParentode : IXMLNode;  
begin

  Factura := RegistroFacturaType.Create;

  Factura.RegistroAlta   := RegistroFacturacionAltaType.Create;

  // Rellenas todo lo de la Factura

     MyXML := TXMLDocument.Create(Application);
    parentXML := TXMLDocument.Create( Application );

    MyXML.Active := True;
    MyXML.Version:='1.0';
    MyXML.Encoding:='utf-8';

    parentXML.Active := True;
    parentXML.Version:='1.0';
    parentXML.Encoding:='utf-8';


    ARootNode := MyXML.CreateNode('RegistroAlta');
    AParentode := parentXML.CreateNode('RegistroAlta');

     var MOPToSoapDomConvert : TOPtoSOAPDomConvert;
    MOPToSoapDomConvert := TOPtoSOAPDomConvert.Create(Application);

    MOPToSoapDomConvert.Encoding := 'utf-8';

    MOPToSoapDomConvert.Options :=
    [
    TSOAPConvertOption.soXXXXHdr,
    TSOAPConvertOption.soDontSendEmptyNodes,
    TSOAPConvertOption.soUTF8InHeader,
    TSOAPConvertOption.soSendUntyped,
    TSOAPConvertOption.soSendMultiRefObj,
    //TSOAPConvertOption.soSendMultiRefArray,
    TSOAPConvertOption.soTryAllSchema,
    TSOAPConvertOption.soRootRefNodesToBody,
    TSOAPConvertOption.soCacheMimeResponse,
    TSOAPConvertOption.soUTF8EncodeXML,
    TSOAPConvertOption.soSOAP12];


    Swdsl := 'https://prewww2.aeat.es/static_files/common/internet/dep/aplicaciones/es/aeat/tikeV1.0/cont/ws/SistemaFacturacion.wsdl';

    newNode := Factura.RegistroAlta.ObjectToSOAP( ARootNode, AParentode, MOPToSoapDomConvert, 'RegistroAlta',
      Swdsl,'T',[ocoDontPrefixNode,ocoDontPutTypeAttr], RefId  );

     // este newNode lleva el xml limpio
    {
     1.0NIF DE MI EMPRESAF24000622-01-2024F1VENTA MERCADERIASCLIENTE2NIFCLI2ES02NIFCLI201S121,002000,00420,00420,002420,00NIF DE MI EMPRESAF24000522/01/2024b32680a7b029d07a809fd10f052c322305b86cb80116250ce7db441b8ac3421eEMPRESA INFORMATICANIF INFORMATICAES02PROGRAMA DE GESTION111SN12024-09-13T10:54:49.560+02:0001ff1cbd3a05a119f57109a650dc84e9e9df4bcd541394ea4d71612fadb4c8078e
}

// logicamente esto ya lo puedes firmar, y como te dije va entre los nodos del Regtistro de Alta, cuando lo cargas 
// mediante la funcion SOAPtoObject se rellena con cada cosa y la firma va al nodo 
// yo la firma la hago con Secure BlackBox y lo hago en memoria todo
// si lo haces con Autofirma no te va as alir bien, ya lo comprobe



    // Para cuando tengas que cargarlo seria asi

Factura.RegistroAlta.SOAPToObject(  ARootNode, newNode, MOPToSoapDomConvert);

end;