Ir para conteúdo
  • Cadastre-se

Rafael Chuede

Membros
  • Total de ítens

    21
  • Registro em

  • Última visita

Últimos Visitantes

O bloco dos últimos visitantes está desativado e não está sendo visualizado por outros usuários.

Rafael Chuede's Achievements

  1. Agora o paraná está exigindo essa porcaria de hash csrt até para homologação...
  2. Estou tendo problema para enviar NFE com o csrt cadastrado no site da sefaz, tenho a resposta: cStat:978 Motivo:Hash do CSRT diverge do calculado o hashcsrt gerado no xml é : ZiHliiErI7yqzQMPhlbWLqOvLb0= mas usei esse script python para calcular o hash e obtive o resultado: H8MM+n33A4G7pIM5MxFTbiYDHac= import hashlib import base64 def gerar_hash_csrt(csrt, chave_nfe): # 1. concatena CSRT + chave da NFe dados = (csrt + chave_nfe).encode("utf-8") # 2. calcula SHA1 sha1 = hashlib.sha1(dados).digest() # 3. converte para Base64 hash_csrt = base64.b64encode(sha1).decode("utf-8") return hash_csrt # ===== EXEMPLO ===== csrt = "VCKHBU34HHM115BMPMXBB5WM8QPZ3ZLT6XJQ" chave = "41260303307205000102550010000003451301018538" hash_gerado = gerar_hash_csrt(csrt, chave) print("Hash CSRT:", hash_gerado) Alguem tem alguma ideia do que pode estar acontecendo, se a lib está calculando errado ou eu estou fazendo alguma coisa errada.
  3. no lazbuild é só usar WIDGETSET="nogui". no lazarus IDE não descobri ainda.
  4. Já tentei compilar pelo lazarus IDE selecionando "tipo Widget LCL" como qt6, gtk e NoGUI mas o resultado parece aleatório, as vezes fica sem dependencias de gráficos (qt, gtk) e as vezes fica com. Verifico isso pelo ldd no binario gerado. Tentei pelo lazbuild também, mas não consigo usar o NoGUI. Preciso ficar sem dependencias de qt pois isso faz o programa crashar ao usar juntamente com a biblioteca acbrlibNFe que esta compilada com qt6.
  5. Compilei a versão Console MT da lib consulta CNPJ e está funcionando. Só fico em duvida se conseguirei usar as outras libs ACBr junto futuramente mas obrigado.
  6. Compilei somente a lib consultacnpj usando gtk3 ao inves de qt6 e nao tenho mais o crash... mas preciso que as duas libs sejam compiladas com qt6 o que posso fazer? nem sei por que a lib consultacnpj precisa de qt ou gtk mas enfim
  7. Nesse código o método Versao() está assim: std::string ACBrConsultaCNPJ::Versao() const { CNPJ_Versao method; #if defined(ISWINDOWS) method = reinterpret_cast<CNPJ_Versao>(GetProcAddress(nHandler, "CNPJ_Versao")); #else method = reinterpret_cast<CNPJ_Versao>(dlsym(nHandler, "CNPJ_Versao")); #endif std::string buffer(BUFFER_LEN, '\0'); long len = BUFFER_LEN; const int ret = method(this->libHandler, buffer.data(), &len); CheckResult(ret); return ProcessResult(buffer, len); } Mas ja testei com mais ou menos igual você recomendou: void ACBrConsultaCNPJ::resolveSymbols() { CNPJ_InicializarMT = (CNPJ_InicializarPtr)DLSYM(dllHandle, "CNPJ_Inicializar"); CNPJ_FinalizarMT = (CNPJ_FinalizarPtr) DLSYM(dllHandle, "CNPJ_Finalizar"); CNPJ_VersaoMT = (CNPJ_VersaoPtr) DLSYM(dllHandle, "CNPJ_Versao"); } void ACBrConsultaCNPJ::load(const std::string &libPath, const std::string &iniPath, const std::string &cryptKey) { unload(); dllHandle = DLOPEN(libPath.c_str()); if (!dllHandle) { throw std::runtime_error(std::string("Falha ao carregar ") + libPath + ": " + dlerror()); } resolveSymbols(); int ret = CNPJ_InicializarMT(&cnpjHandle, iniPath.c_str(), cryptKey.c_str()); } std::string ACBrConsultaCNPJ::versao() { if (!cnpjHandle) throw std::runtime_error("ACBrConsultaCNPJ não inicializado."); int bufferSize = 256; std::vector<char> buffer(bufferSize); int ret = CNPJ_VersaoMT(cnpjHandle, buffer.data(), &bufferSize); if (ret != 0) throw std::runtime_error("Erro ao chamar CNPJ_Versao: " + std::to_string(ret)); return std::string(buffer.data()); }
  8. Meu código esta usando as duas libs MT 64 bit com esse codigo simples, o programa da seg fault após exibir a versão. Se eu comentar o construtor de qualquer uma lib a outra funciona sem seg fault. Alguém aqui está usando essas duas libs juntas com c++ no linux? #include "ACBrNFe.h" #include "ACBrConsultaCNPJ.h" #include <iostream> int main(){ ACBrConsultaCNPJ cnpj("cnpj.ini", ""); ACBrNFe nfe("nfe.ini", ""); std::cout << cnpj.Versao() << "\n"; }
  9. Não funcionou, não consigo entender como uma lib interfere na outra sendo que as duas são compiladas separadamente e os pacotes comuns são estaticamente compilado em cada lib. Já tentei usar a ACBrconsultaCNPJ ST junto da NFE MT mas o problema continua.
  10. Sim os handles são definidos na classe, para NFE estou usando as classes do demo, para o consulta CNPJ criei a classe wrapper baseada na NFE. as duas classes funcionam separadamente. Código da classe wrapper CNPJ apenas até a função versao: typedef int (*CNPJ_Inicializar)(void**, const char*, const char*); typedef int (*CNPJ_Finalizar)(void*); typedef int (*CNPJ_Versao)(void*, char*, long*); ACBrConsultaCNPJ::ACBrConsultaCNPJ(std::string eArqConfig, std::string eChaveCrypt) { #if defined(ISWINDOWS) #if defined(ENVIRONMENT32) nHandler = LoadLibraryW(L"ACBrConsultaCNPJ32.dll"); #else nHandler = LoadLibraryW(L"ACBrConsultaCNPJ64.dll"); #endif #else #if defined(ENVIRONMENT32) std::string path = "/usr/lib/libacbrlibconsultacnpj32.so"; #else std::string path = "/usr/lib/libacbrconsultacnpj64.so"; #endif nHandler = dlopen(path.c_str(), RTLD_LAZY); #endif if (!nHandler) throw std::runtime_error("Falha ao carregar biblioteca ACBrLibConsultaCNPJ"); CNPJ_Inicializar method; #if defined(ISWINDOWS) method = reinterpret_cast<CNPJ_Inicializar>(GetProcAddress(nHandler, "CNPJ_Inicializar")); #else method = reinterpret_cast<CNPJ_Inicializar>(dlsym(nHandler, "CNPJ_Inicializar")); #endif if (!method) throw std::runtime_error("Não encontrou função CNPJ_Inicializar na biblioteca"); const int ret = method(&this->libHandler, eArqConfig.c_str(), eChaveCrypt.c_str()); CheckResult(ret); } ACBrConsultaCNPJ::~ACBrConsultaCNPJ() { qDebug() << "~ACBrConsultaCNPJ() chamado"; if (!nHandler) return; CNPJ_Finalizar method; #if defined(ISWINDOWS) method = reinterpret_cast<CNPJ_Finalizar>(GetProcAddress(nHandler, "CNPJ_Finalizar")); #else method = reinterpret_cast<CNPJ_Finalizar>(dlsym(nHandler, "CNPJ_Finalizar")); #endif if (method) method(this->libHandler); #if defined(ISWINDOWS) FreeLibrary(nHandler); #else dlclose(nHandler); #endif qDebug() << "Finalização concluída"; } std::string ACBrConsultaCNPJ::Versao() const { CNPJ_Versao method; #if defined(ISWINDOWS) method = reinterpret_cast<CNPJ_Versao>(GetProcAddress(nHandler, "CNPJ_Versao")); #else method = reinterpret_cast<CNPJ_Versao>(dlsym(nHandler, "CNPJ_Versao")); #endif
  11. As duas libs que estou usando são MT, percebi aqui que só de instanciar as duas ja crasha, estou tentando usar as libs com QT framework e esse código faz crashar o programa, ao tentar escrever alguma coisa no LineEdit(widget TextField do qt): ACBrNFe *nfe = new ACBrNFe("nfe.ini", ""); std::string a = nfe->Versao(); nfe = NULL; ACBrConsultaCNPJ *cnpj = new ACBrConsultaCNPJ("cnpj.ini", "");
  12. Percebi que no linux, meu programa em C++ crasha quando tenho instanciado as duas libs ACBR ConsultaCNPJ e NFE e uso um método qualquer da lib CNPJ, como o Versão(). o Crash só acontece no Linux quando eu instacio a classe das duas libs e uso o método da lib consulta, quando eu uso apenas um método da lib NFE não crasha. Alguma ideia do por que isto pode estar acontecendo?
  13. Obrigado era isso mesmo que eu precisava, por algum motivo passei 50 vezes na documentação e não vi isso.
  14. Boa tarde consegui resolver o problema do crash que não mostrava o erro, era da classe de exemplo que tinha um errinho besta, mas agora eu estou quase conseguindo enviar a nfce mas tenho o erro: "nXMotivo=Total da BC do IBS e da CBS difere da soma dos itens. [vBCIBSCBS informado: 0.00, vBCIBSCBS calculado: 10.00]\ntpAmb=2" e não sei onde adicionar esse total, o erro é so esse mesmo pois quando edito o total em: <IBSCBSTot> <vBCIBSCBS>00.00</vBCIBSCBS> </IBSCBSTot> para 10.00no xml a nfce é autorizada, alguem consegue me ajudar a achar em qual componente do .ini eu devo colocar esse total?
  15. Achei que esses campos IBS/CBS substituiriam o ICMS E PISCOFINS mas ja tentei deixar tudo e continua nao enviando, só envia se retirar os campos relacionados a IBS/CBS.
×
×
  • 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.