Ir para conteúdo
  • Cadastre-se

dev botao

Retorno do procedimento StatusServico() com caracteres estranhos


Ver Solução Respondido por antonio.carlos,
  • Este tópico foi criado há 627 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Boa tarde,

Notamos que iria ocorrer uma alteração na URL de consulta para NFCe de Minas Gerais e então resolvemos atualizar a dll ACBrNFe32 e dependências.

Utilizamos a dll versão '.224' localizada em \bin\MT\StdCall

E na chamada do procedimento StatusServico() obtém o retorno : 

"˜é‚&Ñ£\u0003'¸\0\0\0tat=107\r\nCUF=31\r\nDhRecbto=06/03/2023 16:34:11\r\nDhRetorno=\r\nMsg=Servico em operacao\r\nTMed=1\r\nVerAplic=14.5.03-OR3\r\nVersao=4.00\r\nXMotivo=Servico em operacao\r\nXObs=\r\ntpAmb=2\r\n"
 

E ao utilizar a dll com a conveção Cdecl em \bin\MT\Cdecl obtém o retorno: 

"[Status]\r\nCStat=107\r\nCUF=31\r\nDhRecbto=06/03/2023 16:27:14\r\nDhRetorno=\r\nMsg=Servico em operacao\r\nTMed=1\r\nVerAplic=14.5.03-OR3\r\nVersao=4.00\r\nXMotivo=Servico em operacao\r\nXObs=\r\ntpAmb=2\r\n"

 

Está com algum erro a dll de \bin\MT\StdCall? E apenas a atualização da dll com as dependências já resolve a questão da nova URL de consulta ou é necessário também o arquivo ACBrNFeServicos.ini?

 

 

  • Fundadores
Postado

A convenção de chamadas, você define do seu lado, quando faz o "bind" da DLL na sua linguagem...

Uma vez definido, você deve sempre usar a mesma convenção de chamadas, pois usar a DLL com a convenção de chamadas errada, pode causar A.V. ou outros problemas...

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Postado

Entendi, o caso é que sempre utilizamos a convenção de chamadas StdCall em nosso projeto, inclusive a versão que estava rodando sem problemas era a '.198' e o retorno para o método StatusServico é:

"[Status]\r\nCStat=107\r\nCUF=31\r\nDhRecbto=08/03/2023 08:27:53\r\nDhRetorno=\r\nMsg=Servico em operacao\r\nTMed=1\r\nVerAplic=14.5.03-OR3\r\nVersao=4.00\r\nXMotivo=Servico em operacao\r\nXObs=\r\ntpAmb=2\r\n"

Ao saber que iria ocorrer a alteração da URL de consulta para NFCe MG resolvemos atualizar também a dll e dependências e ao utilizar a convenção StdCall da versão '.225' tivemos aquele retorno com aqueles caracteres estranhos no início, ocasionando erro.

Retorno versão '.225' StdCall:

"˜é‚&Ñ£\u0003'¸\0\0\0tat=107\r\nCUF=31\r\nDhRecbto=06/03/2023 16:34:11\r\nDhRetorno=\r\nMsg=Servico em operacao\r\nTMed=1\r\nVerAplic=14.5.03-OR3\r\nVersao=4.00\r\nXMotivo=Servico em operacao\r\nXObs=\r\ntpAmb=2\r\n"

Devido a isso observamos que projetos em C# aceitavam as duas convenções de chamadas e resolvemos fazer um teste também para a convenção Cdecl, e obtivemos o retorno sem os caracteres estranhos.

Em resumo, depois da versão StdCall '.198' que utilizavamos sem ocasionar erro, colocamos a '.218' e em todas versões após essa que testavamos o retorno era com caracteres estranhos.

  • Consultores
  • Solution
Postado
3 horas atrás, Dev Telluria disse:

Em resumo, depois da versão StdCall '.198' que utilizavamos sem ocasionar erro, colocamos a '.218' e em todas versões após essa que testavamos o retorno era com caracteres estranhos.

Ultima versão disponível para download é 0.4.6.227, consegue atualizar e realizar novos testes ? se quiser, pode por favor anexar o seu ACBrLib.ini ? caso tenha informações sensíveis, pode nos enviar por e-mail, [email protected].

O programa exemplo C# disponível em nosso SVN, é utilizado a convenção de chamada em cdecl, fiz a alteração para stdcall e utilizei a ultima versão disponível do ACBrLib:

08/03/23 11:37:33:917 - NFE_StatusServico
08/03/23 11:37:33:933 - Travar
08/03/23 11:37:34:366 -    MoverStringParaPChar. StrLen:184, BufLen:256
08/03/23 11:37:34:374 -    SetRetorno(0, [Status]
CStat=107
CUF=31 ---> MG
DhRecbto=08/03/2023 11:37:35
DhRetorno=
Msg=Servico em operacao
TMed=1
VerAplic=14.5.03-OR3
Versao=4.00
XMotivo=Servico em operacao
XObs=
tpAmb=2
)
08/03/23 11:37:34:374 - Destravar


Por desencargo eu fiz um teste também usando o programa exemplo VB6 que por padrão utiliza a chamada de convenção stdcall:

08/03/23 11:33:16:865 - NFE_StatusServico
08/03/23 11:33:16:867 - Travar
08/03/23 11:33:16:909 -    MoverStringParaPChar. StrLen:206, BufLen:1024
08/03/23 11:33:16:909 -    SetRetorno(0, [Status]
CStat=107
CUF=31 ---> MG
DhRecbto=08/03/2023 11:33:07
DhRetorno=08/03/2023 11:33:07
Msg=Serviço em Operação
TMed=1
VerAplic=W-1.4.85
Versao=4.00
XMotivo=Serviço em Operação
XObs=
tpAmb=2
)
08/03/23 11:33:16:913 - Destravar
)
08/03/23 11:28:00:983 - Destravar


As configurações do meu ACBrLib.ini mantive configuração padrão também:

[Principal]
TipoResposta=0 ---> Formato INI (Padrão)
CodificacaoResposta=0 ---> UTF8 (Padrão)
×
×
  • 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.