Ver Mensaje Individual
  #18  
Antiguo 23-12-2011
David Gonzalez David Gonzalez is offline
Registrado
 
Registrado: mar 2008
Posts: 4
Reputación: 0
David Gonzalez Va por buen camino
Cita:
Empezado por ruedabeat2003 Ver Mensaje
Creo que deberiamos crear un Hilo con respecto al COVE, no crees. En algun momento del desarrollo me dedique a crear el archivo XML(antes de tener acceso al URL:WSDL) pero despues de importar el WSDL, me dí cuenta que tengo que mis llamadas al WebService me piden un objeto. Objeto que estoy a punto de terminar, solo me falta solventar un problema de asignacion a variables de tipo TXSDecimal. Estamos en contacto.
Completamente de acuerdo si bien es como el cfd no es tan extenso ni parecido pues en el caso del cfd los webservices de los pac si se "adjunta" el xml. vaya el tema si amerita un hilo.

con respecto a lo del uso de los txs yo le hice asi:

Código Delphi [-]
function EnviarCoveTest(Rio : THTTPRIO):string;
var
  peticion: solicitarRecibirCoveServicio2; // esto es un array of
  mcias : Array_Of_Mercancia;
  descs_mcias : Array_Of_DescripcionMercancia;
  Respuesta: solicitarRecibirCoveServicioResponse;
  MySecHdr : Security;
//  UserNameTkn : UserNameToken;
//  RIO: THTTPRIO;
begin
  // crear un cove de prueba y mandarlo
  SetLength(peticion,1);
//  peticion := solicitarRecibirCoveServicio2.Create(nil);
  peticion[0]:= comprobantes.Create;
  with peticion[0] do
  begin
    peticion[0].tipoIdentificador := RecibirCoveService.TipoIdentificador._1; // tipo enumerado
    identificacion := 'GWT921026L97';
//    fechaExpedicion.AsDate :=  StrToDate('2011-11-15');
    fechaExpedicion := TXSDate.Create;
    fechaExpedicion.Year := 2011;
    fechaExpedicion.Month := 11;
    fechaExpedicion.Day :=  15;
    certificadoOrigen := RecibirCoveService.CertificadoOrigen._1;
    numeroExportadorConfiable := '9876';
    observaciones := 'Prueba Registro COVE';
    rfcConsulta := 'GWT921026L97';
    subdivision := RecibirCoveService.subdivision._0;
    tipoFiguraAduanal := RecibirCoveService.tipoFiguraAduanal._2;
    curp := 'RIEF700309MTLVSR07';
    correoElectronico := 'juan.garces@softtek.com';
      firmaElectronica:= RecibirCoveService.FirmaElectronica.Create;
      firmaElectronica.certificado := '3082053130820419a00302010202143230303031303030303030313030303033383932300d06092a864886f70d010105050  03082016f3118301606035504030c0f412e432e2064652070727565626173312f302d060355040a0c26536572766963696f2  064652041646d'+
        '696e69737472616369c3b36e205472696275746172696131383036060355040b0c2f41646d696e69737472616369c3b36e2  0646520536567757269646164206465206c6120496e666f726d616369c3b36e3129302706092a864886f70d01090116'+
        '1a617369736e657440707275656261732e7361742e676f622e6d783126302406035504090c1d41762e20486964616c676f2  037372c20436f6c2e20477565727265726f310e300c06035504110c053036333030310b3009060355040613024d583119301  706035504080c10446973747269746f2046656465726'+
        '16c3112301006035504070c09436f796f6163c3a16e31153013060355042d130c5341543937303730314e4e333132303006  092a864886f70d0109020c23526573706f6e7361626c653a2048c3a963746f72204f726e656c6173204172636967613'+
        '01e170d3131313131313231343030385a170d3134303230383231343030385a3081ab311b30190603550403131247525550  4f20575443205341204445204356311b301906035504291312475255504f20575443205341204445204356311b3019060355  040a1312475255504f205'+
        '75443205341204445204356310b3009060355040613024d5831253023060355042d131c4757543932313032364c3937202f  2048454754373631303033345332311e301c06035504051315202f20484547543736313030334d4446524e4e303930819f30  0d06092a864886f70d01'+
        '0101050003818d0030818902818100bfef4412e9ade576384f855f57499279ce80e0089ae58bd11d4fe3335664f0132a57e  6b62482596cf9c485f6ddb233c5d0623e31e7eb9117bf67a8ab7e9b6cc7fea6494fcaed27d1fb8fd79de07e25c57017b5867  5f03472665432f88830199'+
        '877fc2d49e5ab052ab4e28de16f88d04888ba1c12a7c90cb83a35620029049b630203010001a382010830820104300c0603  551d130101ff04023000300b0603551d0f0404030203d8301106096086480186f84201010404030205a0301d0603551d0e04  160414df932f757aa03f2'+
        '16d90a4105a26488fc0ac94f1302e0603551d1f042730253023a021a01f861d687474703a2f2f706b692e7361742e676f62  2e6d782f7361742e63726c303306082b0601050507010104273025302306082b060105050730018617687474703a2f2f6f63  73702e7361742e676f622e6'+
        'd782f301f0603551d23041830168014eb597d04229a538d9e711aa0589629f539e0a0c530100603551d2004093007300506  032a0304301d0603551d250416301406082b0601050507030406082b06010505070302300d06092a864886f70d0101050500  03820101007caad3f33fef'+
        '9cc6eaf4a4d74921513c8ac4b1a408bdbf08774833926d48c3236f7f433016410e54a97a9d5242a38435cca272f647f15d0  85ac9c1421630ec2a1ee1c229bdf225b52867dd07491e3282e314793acf83f8ee90bd95a7c8dec2dc311f7223f4a136f4dbe  d93f0c8424776557d7a53bc8'+
        '9be2ec491a4f207002f1f065636e32497b8ea5bfa10ab2ee134838fec84cf5671cc6130718479a6597284be710e8b46a384  a1d548867900de4e98bb59568a8119461d3e013507b97ee89ed3736c1d7bbccfb72f530d7cd339b0e0c6ecbd71a5fa0ff3a6  a0199cc31467506be9f25d774'+
        '00e892b14724e754b39d5e86343b006c90b51b05e3e42ba8afdec';   // se obtiene del certificado
      firmaElectronica.cadenaOriginal := '|1|GWT921026L97|345|0|0|2011-11-15|1|9876|1|RIEF700309MTLVSR07|GWT921026L97|Prueba Registro COVE|1|GWT921026L97|VERA|RAMIREZ|ALEJANDRO|CAPRICORNIO|78|78|UNIDAD MORELOS 3A SECCION|MEXICO|543|TULTITLAN|MEXICO|MEX|54935|1|GWT921026L97|MUNOZ|GODINEZ|'+
        'RUBEN|ZSENZONTLE|23|24|PRADOS DE ECATEPEC|TICOMAN|123|COACALCO|MEXICO|MEX|55546|COMPUTADORAS|5|100|5000|500000|50000000|HP|2345|A-12|CADE-657835-MDF67546|';  // se obtiene de los datos
      firmaElectronica.firma := '7185aebe52ca51d9d60a97ac88da9a6a6de1222bdc7b26524a191702bcbe34f9dababbf3ea08f14638c73d340b3db9ac727  a5084abf84cd6d9dbbb102be5b6b998c906c82f43a4df6a9ee2138629c4505bd553aa7be9656b8b8ac618dc8b35b5bf56a9f  1f'+
        '774f7b42379ca16c02b2f17804fe32809f4451379692d97957a56c0';  // se obtiene de la cadena original

    // datos de encabezado del comprobante
    numeroFacturaOriginal := '345';
    emisor := RecibirCoveService.emisor.Create;
    emisor.tipoIdentificador := RecibirCoveService.TipoIdentificador._1;
    emisor.identificacion := 'GWT921026L97';
    emisor.apellidoPaterno := 'VERA';
    emisor.apellidoMaterno := 'RAMIREZ';
    emisor.nombre := 'ALEJANDRO';
      emisor.Domicilio := RecibirCoveService.Domicilio.Create;
      emisor.Domicilio.calle := 'CAPRICORNIO';
      emisor.Domicilio.numeroExterior := '78';
      emisor.Domicilio.numeroInterior := '78';
      emisor.Domicilio.colonia := 'UNIDAD MORELOS 3A SECCION';
      emisor.domicilio.localidad := 'MEXICO';
      emisor.domicilio.referencia := '543';
      emisor.domicilio.municipio := 'TULTITLAN';
      emisor.domicilio.entidadFederativa := 'MEXICO';
      emisor.domicilio.pais := 'MEX';
      emisor.domicilio.codigPostal := '54935';

    destinatario := RecibirCoveService.destinatario.Create;
    destinatario.tipoIdentificador := RecibirCoveService.TipoIdentificador._1;
    destinatario.identificacion := 'GWT921026L97';
    destinatario.apellidoPaterno := 'MUNOZ';
    destinatario.apellidoMaterno := 'GODINEZ';
    destinatario.nombre := 'RUBEN';

      destinatario.Domicilio := RecibirCoveService.Domicilio.Create;
      destinatario.Domicilio.calle := 'ZSENZONTLE';
      destinatario.Domicilio.numeroExterior := '23';
      destinatario.Domicilio.numeroInterior := '23';
      destinatario.Domicilio.colonia := 'PRADOS DE ECATEPEC';
      destinatario.domicilio.localidad := 'TICOMAN';
      destinatario.domicilio.referencia := '123';
      destinatario.domicilio.municipio := 'COACALCO';
      destinatario.domicilio.entidadFederativa := 'MEXICO';
      destinatario.domicilio.pais := 'MEX';
      destinatario.domicilio.codigPostal := '55546';

    // iterar por las partidas de la factura
       SetLength(mcias,1);
       mcias[0] := RecibirCoveService.Mercancia.Create;
       mcias[0].descripcionGenerica := 'COMPUTADORAS';
       mcias[0].claveUnidad := RecibirCoveService.UnidadMedida._5;
       mcias[0].cantidad := RecibirCoveService.cantidad.Create;
       mcias[0].cantidad.DecimalString := '100';
       mcias[0].valorUnitario := RecibirCoveService.valorUnitario.Create;
       mcias[0].valorUnitario.DecimalString := '5000';
       mcias[0].valorTotal := RecibirCoveService.valorTotal.Create;
       mcias[0].valorTotal.DecimalString := '500000';
       mcias[0].valorDolares := RecibirCoveService.valorDolares.Create;
       mcias[0].valorDolares.DecimalString := '50000000';

       SetLength(descs_mcias,1);
       descs_mcias[0] := RecibirCoveService.DescripcionMercancia.Create;

       // iterar por las descripciones especificas
         descs_mcias[0].marca := 'HP';
         descs_mcias[0].modelo := '2345';
         descs_mcias[0].subModelo := 'A-12';
         descs_mcias[0].numeroSerie := 'CADE-657835-MDF67546';
         mcias[0].descripionesEspecificas := descs_mcias;
       mercancias := mcias;
  end;
  // una vez llenado hay que enviarlo
//  RIO := THTTPRIO.Create(nil);

//  RIO.HTTPWebNode.UserName := 'GWT921026L97';
//  RIO.HTTPWebNode.Password := '2eSBtD+Go01Kaka4YoLqrsvDWrP1AZn1nFZTQmT/3S7EFZVD5Pvju09ybA5nwMCK';

  MySecHdr := Security.Create;
  MySecHdr.UsernameToken := UsernameToken.Create;
  MySecHdr.UsernameToken.UserName := 'GWT921026L97';
  MySecHdr.UsernameToken.Password := '2eSBtD+Go01Kaka4YoLqrsvDWrP1AZn1nFZTQmT/3S7EFZVD5Pvju09ybA5nwMCK';

//  UserNameTkn := UserNameToken.Create;
//  UserNameTkn.UserName := 'GWT921026L97';
//  UserNameTkn.Password := '2eSBtD+Go01Kaka4YoLqrsvDWrP1AZn1nFZTQmT/3S7EFZVD5Pvju09ybA5nwMCK';

  Rio.SOAPHeaders.Send(MySecHdr);

  Respuesta := GetIReceptor(False,'',RIO).RecibirCove(peticion);

  Result := 'NumeroOp  : ' + Respuesta.numeroDeOperacion + #10#13;
  Result := 'HoraRecep : ' + DateTimeToStr(Respuesta.horaRecepcion.AsDateTime) + #10#13;
  Result := 'Mensaje   : ' + Respuesta.mensajeInformativo;

end;

La cosa "rara" es la del header que se tiene que agregar aparte MySecHdr : Security; eso lo defini en la unidad que genera el webservice del sig modo:

Código Delphi [-]
  UserNameToken = class //(TSOAPHeader)
  private
    FUserName: String;
    FPassword: String;
  published
    property UserName : string read FUserName write FUserName;
    property Password : string read FPassword write FPassword;
  end;

  Security = class(TSOAPHeader)
  private
    FUserNameToken: UserNameToken;
  published
    function ObjectToSOAP(RootNode, ParentNode: IXMLNode;
      const ObjConverter: IObjConverter; const Name, URI: InvString;
      ObjConvOpts: TObjectConvertOptions; out RefID: InvString): IXMLNode; override;
    property UserNameToken: UserNameToken read FUserNameToken write FUserNameToken;
  end;


Si me genera un xml "normalito" y lo transmite pero vucem me lo rechaza por que le faltan un monton de "adornos" attributos adicionales y prefijos de namespaces, de hecho la funcion esa que ves en la clase security a la que el hago override es donde estoy intentando que me genere al menos en ese nodo el rollo tal y como lo pide el vucem.

Los datos que vez son los de uno de los ejemplos (primero quiero resolver esta parte antes de aventarme a lo demas)

Saludos

David
Responder Con Cita