Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
    Daniel Gonçalves
    @danielgoncalves
    Não saberia dizer, Raphael. Geralmente existe uma configuração adicional que é feita para o .so (biblioteca linux) do fabricante funcionar adequadamente. Só o suporte deles pra saber exatamente. Eu tenho um Nitere aqui funcionando em um SATHub para desenvolvimento do nosso PDV.
    No Windows nós temos vários modelos diferentes funcionando, normalmente.
    No Linux, também. O único que não rodou no Linux foi o Bematch RB-1000, mas acho que foi mais porque o suporte da Bematech simplesmente ignorou nossas tentativas de contato. Eles não responderam nenhum e-mail nosso (isso foi em 2015). Como praticamente não havia demanda pra Bematech, nós deixamos pra lá.
    Raphael Rodrigues Nogueira
    @rodriguesraphael
    @danielgoncalves eu conversei com pessoal da dimep e realmente tinha problemas no so deles, eu compilei novamente e deu certo
    único problema é que só consegui me comunicar com o device usando sudo
    sabe como permitir essa comunicação sem usar o root? assim eu poderia usar virtualenv
    Daniel Gonçalves
    @danielgoncalves
    @rodriguesraphael Você já tentou adicionar o seu usuário ao grupo dialout (ou ao grupo de acesso dos /dev/tty* de comunicações seriais)? O nome desse grupo varia de distro para distro. Nos Debian-like geralmente é dialout.

    Normalmente isso é feito assim:

    $ sudo usermod -a -G [groupname] [username]

    Raphael Rodrigues Nogueira
    @rodriguesraphael
    vou tentar amanhã, o SAT ficou na empresa
    Raphael Rodrigues Nogueira
    @rodriguesraphael
    @danielgoncalves como eu emito um SATCFE em ambiente de homologação, não encontrei essa informação na documentação, seria usando o SATHUB em modo Debug?
    Daniel Gonçalves
    @danielgoncalves
    @rodriguesraphael Não existe "ambiente de homologação". Você precisa de um equipamento SAT para desenvolvedor, que você adquire diretamente com os fabricantes (pelo menos eu nunca vi em revendedores).
    A alternativa seria usar o emulador SAT (se é que ainda existe). Nunca usei.
    @/all Testes em Python 3.6 passando. Há um branch "py3" no repositório que vocês podem ir acompanhando. Se fizerem testes e quiserem compartilhar, eu agradeço.
    image.png
    Raphael Rodrigues Nogueira
    @rodriguesraphael
    @danielgoncalves já vi sobre o ambiente de homologação
    já recebi um equipamento
    sobre a versão py3
    estou usando no dev aqui
    até agora sem erros
    Raphael Rodrigues Nogueira
    @rodriguesraphael
    aliás @danielgoncalves estou emitindo sem problemas o único problema encontrado até agora foi na geração do qrcode, mas este vi q vc já anotou
    Daniel Gonçalves
    @danielgoncalves
    @rodriguesraphael Obrigado pelo feedback
    Borreli
    @Borreli
    Olá, tudo bem?
    Estou utilizando o módulo a uns meses com um sat desenvolvedor Tanca e nunca tive problemas.
    Porém, ao tentar conectar a um sat desenvolvedor da Control ID, recebi o seguinte erro: ValueError: Procedure probably called with too many arguments (4 bytes in excess)
    Acredito que seja ao ligado a chamada da função da lib deles, mas não sou familiarizado com C.
    Alguém saberia o que posso fazer para conseguir conectar a esse Sat?
    Daniel Gonçalves
    @danielgoncalves

    @Borreli Há um argumento convencao que indica o modelo de chamada da (Standard C ou Windows stdcall). O link [1] é a documentação do argumento (projeto satcfe) e [2] é a constante a ser usada (projeto satcomum). Provavelmente, esse é o problema.

    [1] https://satcfe.readthedocs.io/pt_BR/latest/apidoc/base.html#satcfe.base.BibliotecaSAT.convencao
    [2] https://github.com/base4sistemas/satcomum/blob/master/satcomum/constantes.py#L46

    @Borreli Esse argumento que eu citei (convencao) é da classe satcfe.base.BibliotecaSAT: https://satcfe.readthedocs.io/pt_BR/latest/cliente.html#instanciando-um-cliente-sat
    Daniel Gonçalves
    @danielgoncalves
    @/all Projetos satcfe e satcomum convertidos para Python 3. O primeiro no branch py3 e o segundo no branch master.
    @/all Todas as funções SAT agora estão cobertas por testes :sunglasses:
    Borreli
    @Borreli
    @danielgoncalves Testei com a convecao em Standard C, e ocorreu um erro diferente (satcfe.excecoes.ErroRespostaSATInvalida: Resposta nao possui pipes separando os campos: ""). Eu estou utilizando Python 2.7 x86 no Windows 7 x64. Testei tanto com a DLL disponibilizada no site do fabricante do Sat, quanto com a DLL que vem na pasta do utilitário deles, e as duas resultaram nesse mesmo erro.
    @danielgoncalves Obrigado pela atualização. Pretendo migrar o meu sistema para Python 3 em breve.
    Borreli
    @Borreli
    @danielgoncalves O retorno do função consultar_sat está sendo um unicode vazio
    Daniel Gonçalves
    @danielgoncalves
    @Borreli Você deveria utilizar a classe ClienteSATLocal para acessar as funções. Para retornar um unicode vazio é estranho, me parece que você está usando a classe FuncoesSAT diretamente.
    :point_up: June 26, 2019 11:07 AM Não sei se essa mistura de arquiteturas é o que está provocando problemas no acesso à biblioteca SAT. Eu imagino pelas suas respostas seguintes que funcionou, que mudou o erro (unicode vazio na consultar sat). Não sou especialista no assunto, mas acho que se você está usando Python 32bit então a biblioteca SAT deveria ser 32bit também, mas posso estar errado.
    Borreli
    @Borreli
    @danielgoncalves Eu estou utilizando a classe ClienteSATLocal, exatamente como mostra a documentação. Estou testando tanto no Sat desenvolvedor Tanca, como no Control Id, e o erro ocorre somente no Control Id.
    Borreli
    @Borreli
    @danielgoncalves Também estou utilizando a biblioteca SAT 32bit. A 64bit não é encontrada pelo módulo Win32.
    @danielgoncalves Acredito que pela padronização das DLL de comunicação com o Sat, não deveria ocorrer esse erro (ValueError: Procedure probably called with too many arguments (4 bytes in excess)). Pois todas as funções presentes na DLL devem possuir a assinatura igual ao padrão. Existe a possibilidade das funções da DLL da Control Id possua uma assinatura diferente?
    Daniel Gonçalves
    @danielgoncalves
    :point_up: June 28, 2019 2:36 PM Esse erro "4 bytes in excess" eu vi várias vezes em 2015 quando começamos a receber os equipamentos de desenvolvimento com as bibliotecas. Na época reportamos erros desse tipo nas bibliotecas da Tanca, Dimep e Nitere e eles fizeram ajustes. Fizemos inclusive algumas interações com a Tanca (foram muito legais) e realmente havia um problema nas bibliotecas Linux, que esses fabricantes corrigiram.
    @Borreli Tenta entrar em contato com o fabricante do Control Id pra ver o que eles dizem. Pode ser algum problema de compilação, arquitetura, etc. Geralmente eles tem algum método de ativar um log para ajudar a depurar o problema. Tem que entrar em contato com eles e ter paciência, até corrigir.
    @Borreli Não tivemos sorte com a Bematech. Suporte deles muito burocrático, foi impossível fazer a biblioteca Linux deles rodar. Tenho notícias de vários usuários com Bematech rodando sem problemas no Windows, mas nenhum relato sobre Linux. Eles são míopes para a plataforma.
    Daniel Gonçalves
    @danielgoncalves
    Nós mesmos temos um Bematech RB1000-FI aqui, mas só funciona com a biblioteca Windows.
    Borreli
    @Borreli
    @danielgoncalves Não sabia que era tão comum esses problemas. Legal essa comunicação com os desenvolvedores, pensei que a padronização em si já ajustava tudo.
    Entrei em contato com o suporte da Control Id e atualizo qualquer descoberta, muito obrigado.
    Eu sou super paciente, o problema é o chefe querendo a solução para ontem kkkkk.
    Realmente é chato a fabricante não dar o suporte necessário, isso limita o desenvolvedor e consequentemente quem trabalha com o sistema.
    @danielgoncalves Por não ser familiarizado com C e comunicação com equipamentos, não sei até onde poderei tratar com o suporte deles. Caso tenha interesse, pode entrar em contato com a empresa e solicitar um Sat de desenvolvedor, eles são muito atenciosos e fornecem o equipamento até a homologação.
    Daniel Gonçalves
    @danielgoncalves
    @Borreli OK! Continua reportando a evolução dos contatos aí. Boa sorte
    Borreli
    @Borreli
    @danielgoncalves Claro. Obrigado.
    Raphael Rodrigues Nogueira
    @rodriguesraphael
    Fala Daniel
    Raphael Rodrigues Nogueira
    @rodriguesraphael
    Tem como eu alguma forma de gerar o a assinatura AC para usar/ativar o SAT?
    Daniel Gonçalves
    @danielgoncalves

    @rodriguesraphael Tem sim. O algoritmo é o SHA256 aplicado sobre uma sequencia de 28 digitos: 14 digitos do CNPJ da software house + 14 digitos do CNPJ do estabelecimento emitente. Então fica assim, usando OpenSSL em um terminal linux:

    echo -n 1111111111111122222222222222 | \ openssl dgst -sha256 -sign ~/.path/to/your/private.pem | \ openssl enc -base64 -e

    O arquivo private.pem contém a parte privada do seu certificado (da software house), o mesmo que está no SGR-SAT (lá na SEFAZ)

    Em Python você pode usar subprocess.check_output (por exemplo) para invocar o OpenSSL para gerar o código de vinculação .
    Ou usar uma abstração mais especializada, o que te for mais confortável.
    Só lembrando que essa descrição de como formar a sequência e todos os detalhes estão na ER-SAT. É sempre bom baixar a mais recente e dar uma olhada.
    Daniel Gonçalves
    @danielgoncalves
    @all Acabei de subir o release 2.0 do projeto satcomum. A versão 2.0 desse projeto continua compatível com as versões atuais de satcfe e satextrato, porém ela dá suporte à Python 3. Na verdade ela é um ensaio para o release 2.0 do projeto principal, satcfe, também suportando Python 2 e 3, que deverá estar pronto no máximo em setembro deste ano.