Olá Luiz, desculpe não ter respondido. estive ausente do trabalho por uns dias.
infelizmente eu não tenho como efetuar os testes. estou trabalhando literalmente no escuro, só validando o xml, pois ainda não tenho acesso aos dados do cliente. mas realmente precisa passar o cnpj e o hashvalidador no envelope. eu utilizei o método Gera_DadosSenha do ACBr para isso. veja os métodos como ficaram. nem vou passar a unit, pois só fiz o método de envio.
function TProvedorMemory.GeraEnvelopeRecepcionarLoteRPS(URLNS: String;
CabMsg, DadosMsg, DadosSenha: AnsiString): AnsiString;
begin
result := '<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ' +
'xmlns:xsd="http://www.w3.org/2001/XMLSchema" ' +
'xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" ' +
'xmlns:urn="urn:loterpswsdl">' +
'<soapenv:Header/>' +
'<soapenv:Body>' +
'<urn:tm_lote_rps_service.importarLoteRPS ' +
'soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">' +
'<xml xsi:type="xsd:string">'+
DadosMsg+
'</xml>' +
CabMsg +
DadosSenha +
'</urn:tm_lote_rps_service.importarLoteRPS>' +
'</soapenv:Body>' +
'</soapenv:Envelope>';
end;
function TProvedorMemory.Gera_CabMsg(Prefixo2, VersaoLayOut, VersaoDados,
NameSpaceCab: String; ACodCidade: Integer): AnsiString;
begin
Result := '<codMunicipio xsi:type="xsd:string">'+IntToStr(ACodCidade)+'</codMunicipio>';
end;
function TProvedorMemory.Gera_DadosSenha(CNPJ, Senha: String): AnsiString;
begin
Result := '<cnpjPrestador xsi:type="xsd:string">'+CNPJ+'</cnpjPrestador>'+
'<hashValidador xsi:type="xsd:string">'+Senha+'</hashValidador>';
end;