Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 3205 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Senhores,

Já tentei de tudo mas não consigo consultar nfse no servidor de Fortaleza, atualizei todos os componentes, porém o arquivo ISSFortaleza.INI está sem os endereços na secção [SoapAction], tentei de tudo mas não deu certo, na versão anterior à atualização dar tudo certo.

Atualizei os schemas e o sistema aponta para o arquivo Cidades.INI.

segue arquivo em anexo para conferência

Grato pela atenção

ISSFortaleza.INI

  • Consultores
Postado

Boa tarde Souza,

Você fez alterações no arquivo INI que você anexou?

Esse INI é o mesmo que esta disponível junto com o programa exemplo?

Não seção [SoapAction] não tem os endereços pelo simples fato da cidade de Fortaleza se utilizar do provedor Ginfes, mas por um certo capricho da prefeitura realizou algumas alterações nos layout dos envelope e no NameSpace.

Você configurou o componente para que ele realiza a consulta logo após o envio?

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Postado

Ilustre, estou tentando com estas alterações, pois conforme o arquivo original, eu não consigo acessar, sempre obtenho a resposta "The given SOAPAction * does not match an operation.".

  • Consultores
Postado

Souza,

Abra este link:

https://iss.fortaleza.ce.gov.br/grpfor-iss/ServiceGinfesImplService?wsdl

Note que os soapAction das operações é vazio.

No arquivo INI colocamos um " * " para que o componente entenda que foi definido um soapAction para operação, se deixarmos em branco ele levanta uma exceção.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Postado (editado)
23 minutos atrás, Italo Jurisato Junior disse:

Souza,

Abra este link:

https://iss.fortaleza.ce.gov.br/grpfor-iss/ServiceGinfesImplService?wsdl

Note que os soapAction das operações é vazio.

No arquivo INI colocamos um " * " para que o componente entenda que foi definido um soapAction para operação, se deixarmos em branco ele levanta uma exceção.

Ilustre,

 

Não deu certo, depurando o código ele para na linha da unit ACBrDFeSSL:

function TDFeSSL.Enviar(var ConteudoXML: String; const URL: String;
  const SoapAction: String; const MimeType: String): String;
begin
  // Nota: ConteudoXML, DEVE estar em UTF8 //
  Result := FSSLClass.Enviar(ConteudoXML, URL, SoapAction, MimeType);
end;

Valores:

ConteudoXML = pelo que analisei estão corretos os dados da RPS

URL = 'https://iss.fortaleza.ce.gov.br/grpfor-iss/ServiceGinfesImplService'

SoapAction = *

MimeType = 'application/soap+xml'

Poderia está ausente algum arquivo, estava com alguns meses que eu não atualizava os componentes, mas deu tudo certo para a NFe, mas como sempre a Nota de Serviço é mais trabalhosa.

Observação: quando limpei os endereços [SoapAction] apareceu a seguinte mensagem: SoapAction não definido para: TNFSeConsultarNFSeRPS

 

No aguardo

Editado por sousa
Postado (editado)

Ilustre,

Atualizei todos os componentes, deixei na pasta somente os arquivos Cidades.INI e ISSFortaleza.INI. O resultado foi o mesmo, sem comunicação.

Observei que não há pasta Schema nos exemplos do ACBr para "ISSFortaleza", deixei os arquivos do Schema anterior.

Fiz um teste apontando para o provedor GINFES e percebo que houve comunicação, porém não localiza o CNPJ da empresa, apenas um teste, o que reforça a idéia que no arquivo de configuração para o provedor de Fortaleza, falta algo mais.

Gostaria me indicasse alguém que em Fortaleza/Ce conseguiu conexão.

 

Grato pela atenção

Editado por sousa
  • Consultores
Postado

Boa tarde Souza,

Como lhe disse Fortaleza se utiliza do Ginfes mas com algumas diferenças.

Se você abrir a unit ACBrNFSeConfiguracoes, vai descobrir que se o nome do provedor for ISSFortaleza ele troca por Ginfes.

Os Schemas devemos utilizar da pasta Ginfes.

Se você estiver testando com a sua aplicação, incluiu as linhas de configuração do emitente (vide programa exemplo) ?

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Postado

Ilustre,

Fiz alguns ajustes conforme programa exemplo, mas realmente não há comunicação com os componentes atualizados.

Em versão compilada antes da atualização, funciona perfeitamente.

 

Grato

  • Consultores
Postado

Boa noite Souza,

Utilizei um certificado de uma empresa cuja cidade utiliza o Ginfes. e tentei enviar para uma outra cidade que também usa o Ginfes e depois para cidade de Fortaleza.

Ao enviar para uma cidade diferente da empresa o Web Service se recusou a receber o lote.

Cheguei a conclusão que para o Web Service do Ginfes aceitar o lote é necessário efetuar um cadastro.

Lembre-se que para alguns provedores e pelo que sei é o caso do Ginfes existe 2 cadastros, um para a empresa emitir a nota via Site e o outro para emitir via Web Services.

Verifique se o problema não é exatamente esse, ou seja, realizar o cadastro para usar o Web Services.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Postado
Boa tarde,
 
Acredito que em Fortaleza não seja necessário cadastro para usar o WebService, visto que em versão compilada antes da atualização, com os mesmos dados cadastrais, as consultas são realizadas com sucesso.
Gostaria que analisasse o trecho abaixo do procedimento ConsultaNFSeporRps, nas duas versões do componente, pois há diferenças consideráveis.
 
Grato pela atenção.
 
********************************** ANTES DA ATUALIZAÇÃO ***********************************************
function TWebServices.ConsultaNFSeporRps(ANumero, ASerie, ATipo, ACnpj,
  AInscricaoMunicipal: String; const ASenha : String = '';
  const AFraseSecreta : String = ''; const ARazaoSocial: String = ''): Boolean;
begin
 ACnpj := OnlyNumber(ACnpj);
 
 if not ValidarCNPJ(ACnpj) and (Length(ACnpj) = 14) then //Eduardo Silva dos Santos - DRD SISTEMAS, testar somente CNPJ
  raise Exception.Create('CNPJ '+ACnpj+' inválido.');
 
 if not ValidarCPF(ACnpj) and (Length(ACnpj) = 11) then //Eduardo Silva dos Santos - DRD SISTEMAS, testar somente CPF
  raise Exception.Create('CPF '+ACnpj+' inválido.');
 
 Self.ConsNfseRps.Numero             := ANumero;
 Self.ConsNfseRps.Serie              := ASerie;
 Self.ConsNfseRps.Tipo               := ATipo;
 Self.ConsNfseRps.Cnpj               := ACnpj;
 Self.ConsNfseRps.InscricaoMunicipal := AInscricaoMunicipal;
 Self.ConsNfseRps.Senha              := ASenha;
 Self.ConsNfseRps.FraseSecreta       := AFraseSecreta;
 Self.ConsNfseRps.RazaoSocial        := ARazaoSocial;
 
 Result := Self.ConsNfseRps.Executar;
 
 if not (Result)
  then begin
   if Assigned(TACBrNFSe( FACBrNFSe ).OnGerarLog)
    then TACBrNFSe( FACBrNFSe ).OnGerarLog(Self.ConsNfseRps.Msg);
   if Self.ConsNfseRps.Msg <> ''
    then raise Exception.Create(Self.ConsNfseRps.Msg)
    else raise Exception.Create('Erro Desconhecido ao Consultar a NFS-e por RPS!')
  end;
end;
 
********************* APÓS ATUALIZAÇÃO DOS COMPONENTES ********************************
function TWebServices.ConsultaNFSeporRps(ANumero, ASerie, ATipo: String): Boolean;
begin
  FConsNfseRps.FNumeroRps := ANumero;
  FConsNfseRps.FSerie     := ASerie;
  FConsNfseRps.FTipo      := ATipo;
 
  Result := FConsNfseRps.Executar;
 
  if not (Result) then
    FConsNfseRps.GerarException( FConsNfseRps.Msg );
end;
  • Consultores
Postado

Boa tarde Souza,

Se você notar esta faltando na o CNPJ, InscricaoMunicipal, Senha, FraseSecreta e RazaoSocial, correto?

Pois bem todas essas informações agora o componente pega de propriedades de configuração.

Por favor veja o programa exemplo, procure por 6 linhas de configuração que se referem ao Emitente.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

  • 2 semanas depois ...
Postado
Em ‎04‎/‎02‎/‎2016 at 14:01, Italo Jurisato Junior disse:

 

Bom dia  Italo,

Realizei testes com a versão Demo para consultar RPS no WS Fortaleza, fiz todas as configurações necessárias, e coloquei os arquivos INI conforme orientações.

Resposta do WS: The given SOAPAction * does not match an operation

Envio em anexo os arquivos de comunicação.

 

Grato pela atenção

1513UNICA-comp-nfse.xml

1513UNICA-comp-nfse-soap.xml

1513UNICA-con-nfse-rps.xml

1513UNICA-con-nfse-rps-soap.xml

Postado

Ilustre,

 

O teste foi somente de consulta pelo Demo do ACBr.

Em nosso sistema, fazemos a consulta antes do envio, por isso a necessidade do procedimento.

 

Grato

  • Consultores
Postado

Souza,

Como já foi dito a cidade de Fortaleza se utiliza do Ginfes, mas o NameSpace é diferente entre outras coisas mais no layout do envelopamento.

Favor entrar em contato com a prefeitura ou com o Ginfes para saber se no caso de Fortaleza há necessidade de definir o SoapAction, uma vez que por padrão no Ginfes não se defini nada.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Postado

Ilustre Italo,

 

Resolvi o problema modificando o conteúdo de duas Units,

unit ACBrNFSeWebServices

procedure TNFSeGerarLoteRPS.DefinirServicoEAction;
begin
  FPServico := 'GerarLoteRPS';
  //FPSoapAction := '*';
  if (FPConfiguracoes.WebServices.UFCodigo = 23) and (FPConfiguracoesNFSe.Geral.Provedor = proGinfes)
    then FPSoapAction := ''
    else FPSoapAction := '*';
end;

procedure TNFSeEnviarLoteRPS.DefinirServicoEAction;
begin
  FPServico := 'EnviarLoteRPS';
  //FPSoapAction := FPConfiguracoesNFSe.Geral.ConfigSoapAction.Recepcionar;
  if (FPConfiguracoes.WebServices.UFCodigo = 23) and (FPConfiguracoesNFSe.Geral.Provedor = proGinfes)
    then FPSoapAction := ''
    else FPSoapAction := FPConfiguracoesNFSe.Geral.ConfigSoapAction.Recepcionar;
end;

procedure TNFSeEnviarSincrono.DefinirServicoEAction;
begin
  FPServico :=  'NFSeEnviarSincrono';
  //FPSoapAction := FPConfiguracoesNFSe.Geral.ConfigSoapAction.RecSincrono;
  if (FPConfiguracoes.WebServices.UFCodigo = 23) and (FPConfiguracoesNFSe.Geral.Provedor = proGinfes)
    then FPSoapAction := ''
    else FPSoapAction := FPConfiguracoesNFSe.Geral.ConfigSoapAction.RecSincrono;
end;

procedure TNFSeGerarNFSe.DefinirServicoEAction;
begin
  FPServico :=  'NFSeGerarNFSe';
  //FPSoapAction := FPConfiguracoesNFSe.Geral.ConfigSoapAction.Gerar;
  if (FPConfiguracoes.WebServices.UFCodigo = 23) and (FPConfiguracoesNFSe.Geral.Provedor = proGinfes)
    then FPSoapAction := ''
    else FPSoapAction := FPConfiguracoesNFSe.Geral.ConfigSoapAction.Gerar;
end;

procedure TNFSeConsultarSituacaoLoteRPS.DefinirServicoEAction;
begin
  FPServico :=  'NFSeConsSitLoteRPS';
  //FPSoapAction := FPConfiguracoesNFSe.Geral.ConfigSoapAction.ConsSit;
  if (FPConfiguracoes.WebServices.UFCodigo = 23) and (FPConfiguracoesNFSe.Geral.Provedor = proGinfes)
    then FPSoapAction := ''
    else FPSoapAction := FPConfiguracoesNFSe.Geral.ConfigSoapAction.ConsSit;
end;

procedure TNFSeConsultarLoteRPS.DefinirServicoEAction;
begin
  FPServico := 'NFSeConsLote';
  //FPSoapAction := FPConfiguracoesNFSe.Geral.ConfigSoapAction.ConsLote;
  if (FPConfiguracoes.WebServices.UFCodigo = 23) and (FPConfiguracoesNFSe.Geral.Provedor = proGinfes)
    then FPSoapAction := ''
    else FPSoapAction := FPConfiguracoesNFSe.Geral.ConfigSoapAction.ConsLote; 
end;

procedure TNFSeConsultarNfseRPS.DefinirServicoEAction;
begin
  FPServico := 'NFSeConsNfseRPS';
  //FPSoapAction := FPConfiguracoesNFSe.Geral.ConfigSoapAction.ConsNfseRps;
  if (FPConfiguracoes.WebServices.UFCodigo = 23) and (FPConfiguracoesNFSe.Geral.Provedor = proGinfes)
    then FPSoapAction := ''
    else FPSoapAction := FPConfiguracoesNFSe.Geral.ConfigSoapAction.ConsNfseRps; 
end;

procedure TNFSeConsultarNfse.DefinirServicoEAction;
begin
  FPServico := 'NFSeConsNfse';
  //FPSoapAction := FPConfiguracoesNFSe.Geral.ConfigSoapAction.ConsNfse;
  if (FPConfiguracoes.WebServices.UFCodigo = 23) and (FPConfiguracoesNFSe.Geral.Provedor = proGinfes)
    then FPSoapAction := ''
    else FPSoapAction := FPConfiguracoesNFSe.Geral.ConfigSoapAction.ConsNfse; 
end;

procedure TNFSeCancelarNfse.DefinirServicoEAction;
begin
  FPServico := 'NFSeCancNfse';
  //FPSoapAction := FPConfiguracoesNFSe.Geral.ConfigSoapAction.Cancelar;
  if (FPConfiguracoes.WebServices.UFCodigo = 23) and (FPConfiguracoesNFSe.Geral.Provedor = proGinfes)
    then FPSoapAction := ''
    else FPSoapAction := FPConfiguracoesNFSe.Geral.ConfigSoapAction.Cancelar; 
end;

procedure TNFSeSubstituirNFSe.DefinirServicoEAction;
begin
  FPServico := 'NFSeSubNfse';
  //FPSoapAction := FPConfiguracoesNFSe.Geral.ConfigSoapAction.Substituir;
  if (FPConfiguracoes.WebServices.UFCodigo = 23) and (FPConfiguracoesNFSe.Geral.Provedor = proGinfes)
    then FPSoapAction := ''
    else FPSoapAction := FPConfiguracoesNFSe.Geral.ConfigSoapAction.Substituir; 
end;

 

unit ACBrDFeWebService;

procedure TDFeWebService.InicializarServico;
begin
  { Sobrescrever apenas se necessário }
  Clear;

  DefinirURL;
  if URL = '' then
    GerarException( ACBrStr('URL não definida para: ') + ClassName);

  DefinirServicoEAction;
  if Servico = '' then
    GerarException( ACBrStr('Servico não definido para: ')+ ClassName);

  //if SoapAction = '' then
  //  GerarException( ACBrStr('SoapAction não definido para: ') + ClassName);
  if (FPConfiguracoes.WebServices.UFCodigo <> 23) and (SoapAction = '')
    then GerarException( ACBrStr('SoapAction não definido para: ') + ClassName);
   
end;

 

Acredito que as alterações não são as mais adequadas, mas funcionou a comunicação com o WS.

Grato pela atenção

ACBrDFeWebService.pas

ACBrNFSeWebServices.pas

  • Este tópico foi criado há 3205 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...