Ir para conteúdo
  • Cadastre-se

dev botao

Importar as assinaturas via C#?


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

Recommended Posts

  • Membros Pro

Olá,

 

Baixei o arquivo Cdecl.zip, com a ACBrSAT32.dll versão 0.0.1.0 

ACBr\Projetos\ACBrLib\Demos\Sat\C#\Demo\ACBrLibSat.Demo\bin\Debug\ACBrSAT32.dll 

var ret = ACBrSat.SAT_Inicializar("".ToUTF8(), "".ToUTF8());  

System.DllNotFoundException: 'Não é possível carregar a DLL 'ACBrSAT32.dll': Não foi possível encontrar o módulo especificado. (Exceção de HRESULT: 0x8007007E)'

obs: como gerar as dll?

private const string ACBr = "ACBrSAT32.dll";

private const string ACBr = "ACBrETQ32.dll";

private const string ACBr = "ACBrMail32.dll";

private const string ACBr = "ACBrPosPrinter32.dll";

 

 

Link para o comentário
Compartilhar em outros sites

As dll precisa estar em algum Path do windows ou no mesmo local do executavel no caso na pasta "bin\debug" ou "bin\release", também é necessário as dll do OpenSSL e LibXml2 você encontra as mesma no SVN em "DLLs\LibXml2\x86" e "DLLs\OpenSSL\1.0.2.13\x86", a dll não podem ficar junto do download pois as dll de openssl e libxml2 tem o mesmo nome tanto em x64 como em x86.

Para compilar as dlls vocês precisa.

  1. Baixar os fontes do SVN.
  2. Instalar o Lazarus.
  3. Instalar os componentes ACBr no Lazarus.
  4. Abrir o projeto da lib que você deseja que estarão na pasta "Projetos\ACBrLib\Fontes" dos fontes.

 

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Olá,

Copiei as dll´s acima e ao ativar o sistema mostrou o a tela e mostrou o erro:

// Inicializando a dll
var ret = ACBrSat.SAT_Inicializar("ACBrLib.ini".ToUTF8(), "123456".ToUTF8());
System.ApplicationException: 'Chave não existe no arquivo de configuração'

obs: ACBrLib.ini criado com sucesso!

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Olá,.

Eu estudei os fontes em pascal e em C#, já uso ACBrMonitorPlus, no intuído de apreender e ajudar!

Mais eu queria tirar algumas duvidas!

1) Para eu ter acesso as dll´s (ACBrSAT32.dll, ACBrETQ32.dll", ACBrMail32.dll, ACBrPosPrinter32.dll), é necessário compilar projeto em pascal?

2) Não exite um ACBrStarKit_C# _1.0.0 com "DLLs\LibXml2\x86" e "DLLs\OpenSSL\1.0.2.13\x86" e mais as dll´s acima, com todo ambiente preparado para desenvolvimento com manual?

3) Será possível simplificar o desenvolvimento como no estilo pascal? 

Exemplo:

 ACBrSAT1.EnviarDadosVenda( mVendaEnviar.Text );

if (ACBrSAT1.Resposta.codigoDeRetorno == 6000) {...}

Grato.

Link para o comentário
Compartilhar em outros sites

  1. Não será preciso vai ter os downloads disponíveis no fórum igual temos do ACBrMonitor.
  2. Podemos adicionar as mesma para Download sem problema.
  3. No demo de alto nível tem uma simplificação do uso da lib usando classe em vez de chamada direta da dll, mas o retorno ainda fico no estilo ini do monitor para o pessoal que já trabalha com ele ter um acesso melhor, lembrando que o retorno pode ser em xml, ini e json.
  • Curtir 1

 

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Olá,

Framework simplificado, exemplo SAT:

namespace ACBrFrameWork
{
    public class ACBrSAT32
    {         
        #region Comandos

        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_Ativar(string CNPJ, string cUF);
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_Inicializar();
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_Desinicializar();
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_AssociarAssinatura;
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_AssociarAssinatura(string CNPJ, string Assinatura);
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_Bloquear();
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_Desbloquear();
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_TrocarCodigoAtivacao(string codigoDeAtivacaoOuEmergencia, string opcao, string novoCodigo);
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_ConsultarSAT();
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_ConsultarStatusOperacional();
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_ConsultarNumeroSessao(string NumeroDeSessao);
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_AtualizaSoftware();
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_ComunicarCertificadoICPBRASIL();
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_ExtrairLogs(string CaminhoArquivo);
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_CriarCFe(string ArqINI);
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_CriarEnviarCFe(string ArqINI);
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_EnviarCFe(string ArqXML);
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_CancelarCFe(string ArqXMLVenda);
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_ImprimirExtratoVenda(string ArqXMLVenda, string NomeImpressora);
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_ImprimirExtratoResumido(string ArqXMLVenda, string NomeImpressora);
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_ImprimirExtratoCancelamento(string ArqXMLVenda, string ArqXMLCancelamento, string NomeImpressora);
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_GerarImpressaoFiscalMFe(string cArqXMLVenda, string cNomeImpressora);
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_TesteFimAFim(string ArqXMLVenda);
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_GerarPDFExtratoVenda(string ArqXMLVenda, string NomeArquivo);
        [DllImport("ACBrFrameWork32.dll")]
        public static extern int SAT_SetLogomarca(string nLogo)

        #endregion

        #region Retornos

        [DllImport("ACBrFrameWork32.dll")]
        public static extern string SAT_Arquivo();
        [DllImport("ACBrFrameWork32.dll")]
        public static extern string SAT_CodigoDeRetorno();
        [DllImport("ACBrFrameWork32.dll")]
        public static extern string SAT_NumeroSessao();
        [DllImport("ACBrFrameWork32.dll")]
        public static extern string SAT_ChaveAcesso();
        [DllImport("ACBrFrameWork32.dll")]
        public static extern string SAT_ArquivoXML();
        [DllImport("ACBrFrameWork32.dll")]
        public static extern bool SAT_VendaAprovada();
        [DllImport("ACBrFrameWork32.dll")]
        public static extern bool SAT_VendaCancelada();
        [DllImport("ACBrFrameWork32.dll")]
        public static extern bool SAT_TesteFimConcluido();
        [DllImport("ACBrFrameWork32.dll")]
        public static extern bool SAT_StatusOperacionalConcluido();
        [DllImport("ACBrFrameWork32.dll")]
        public static extern bool SAT_AtivacaoConcluido();
        [DllImport("ACBrFrameWork32.dll")]
        public static extern string SAT_CodigoDeErro();
        [DllImport("ACBrFrameWork32.dll")]
        public static extern string SAT_Mensagem();

        #endregion 

        #region TratarRetorno

        public static string TratarRetorno(int ret) {}

        #endregion

        #region Configuração

        [DllImport("ACBrFrameWork32.dll")]

        public static extern int SAT_ConfigLoad(string ArqINI);
        public static extern int SAT_ConfigSave(string ArqINI);

        #endregion

    }
}

Grato a Equipe ACBr

 

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Olá Rafael,

> Restaurar Pacotes NuGet

Todos os pacotes já estão instalados e não há nada para ser restaurado.
Tempo Decorrido: 00:00:00.0658963
========== Concluído ==========

1>C:\Users\marco\Desktop\ACBr_C#\DemoCSharpSat\Shared\ACBrLib.Core\ACBrLib.Core.csproj(92,5): error : Este projeto faz referência a pacotes do NuGet que não estão presentes neste computador. Use a Restauração de Pacotes do NuGet para baixá-los.  Para obter mais informações, consulte http://go.microsoft.com/fwlink/?LinkID=322105. O arquivo ausente é ..\..\PosPrinter\Demos\packages\Fody.2.0.0\build\portable-net+sl+win+wpa+wp\Fody.targets.

obs: Comando executado Restaurar Pacotes NuGet, mais não encontra o pacote PosPrinter.

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

 Baixei o exemplo e não compilou!

Fiz novamente procedimento de restaurar a NuGet

Todos os pacotes já estão instalados e não há nada para ser restaurado.
Tempo Decorrido: 00:00:00.0575676
========== Concluído ==========

Erro:   Este projeto faz referência a pacotes do NuGet que não estão presentes neste computador. Use a Restauração de Pacotes do NuGet para baixá-los.  Para obter mais informações, consulte http://go.microsoft.com/fwlink/?LinkID=322105. O arquivo ausente é ..\..\PosPrinter\Demos\packages\Fody.2.0.0\build\portable-net+sl+win+wpa+wp\Fody.targets.    ACBrLib.Core   

Procedimentos:

> Para compilar o mesmo basta baixar a versão CDECL da lib e colocar em Import\ACBrLibPosPrinter\Resources.

> ACBrSAT32.dll (copiado para pasta)

obs: Mesmo aviso como na lib anterior!

 


 

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Bom dia Rafael,

> Demo e Classe de Alto de Nivel em C# 20181211

>: Esta biblioteca necessita das dlls do OpenSSL e LibXml2 que se encontram no repositório SVN em "DLLs\LibXml2" e ""DLLs\OpenSSL\1.0.2.13\".

> ACBrSAT32.dll -> StdCall

>>> Perfeito compilou ACBrLibSat -

obs:    Como informar os parâmetros, para start da lib? ->  public ACBrSat(string eArqConfig = "", string eChaveCrypt = "") :

ps: Existe um manual ?

Grato.

sat_init.PNG

Editado por OFF-TI
anexo:Imagem configuração exceção
Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Olá,

Rafael, pesquisando o fonte eu notei o seguinte:

 ACBrMonitorPlus 1.2.0.25

Parâmetro que está funcionando normalmente com SAT:

>>> satDinamico_stdcal

ACBrSAT.Inicializado
NumeroSessao: 373279 - Comando: ConsultarStatusOperacional
NumeroSessao: 373279 - Resposta:373279|10000|Resposta com sucesso|||900009261|DHCP|192.168.000.021|70:51:16:24:61:92|255.255.255.000|192.168.000.003|008.008.008.008|008.008.004.004|CONECTADO|ALTO|4 GB|14 MB|20181212083612|02.02.00|00.07|35181208723218000186599000092610054943431246|35180908723218000186599000092610053604998019|35181208723218000186599000092610054943431246|20180914105654|20181212080336|20160824|20210824|0

namespace ACBrLib.Sat

private class Delegates
{
   [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
    public delegate int SAT_Inicializar(string eArqConfig, string eChaveCrypt);
}

Troquei a ACBrSAT32.dll para versão ->  Cdecl

> Criou automaticamente o arquivo de ACBrLib.ini 

obs: CheckResult igual -3  (System.StackOverflowException: 'Exception of type 'System.StackOverflowException' was thrown.')

Grato.

sat_erro_3.PNG

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Uma coisa é a convenção de chamada da DLL do equipamento SAT e outra a do ACBrLibSAT

A versão da ACBrLibSAT dependerá de como a sua linguagem tem mais aptidão para instância-la... Creio que a classe em alto nível, desenvolvida pelo @Rafael Dias, usa por padrão CDECL...

O ACBrLibSAT, quando inicializada, fará a carga da DLL do Fabricante, para que a mesma fale com o SAT... A configuração de ACBrSAT.Modelo, diz respeito a como a DLL do fabricante foi construida... a grande maioria, usa satDinamico_stdcal , mas alguns como a Gertec e o Emulador de SP usam satDinamico_cdecl .. Usar o modelo errado, pode causar A.V.

  • Curtir 2
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.

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Bom dia Daniel,

Segue a configuração:

Uso: Tanca S@T SDK, versão 2.0.0.0

em anexo arquivo log e ACBrLib.ini (criado automáticamente)

17/12/18 08:52:58:816 - Destravar
17/12/18 08:52:58:822 -    SetRetorno(0, )
17/12/18 08:52:58:829 - LIB_ConfigLerValor(SAT, NomeDLL)
17/12/18 08:52:58:834 -    Valor:, len:0
17/12/18 08:52:58:839 -    SetRetorno(0, )
17/12/18 08:52:58:845 - LIB_ConfigLerValor(SAT, Modelo)
17/12/18 08:52:58:850 -    Valor:0, len:1
17/12/18 08:52:58:855 -    SetRetorno(0, 0)
17/12/18 08:52:58:860 - LIB_ConfigLerValor(SAT, CodigoDeAtivacao)
17/12/18 08:52:58:865 -    Valor:, len:0
17/12/18 08:52:58:870 -    SetRetorno(0, )
17/12/18 08:52:58:875 - LIB_ConfigLerValor(SATConfig, infCFe_versaoDadosEnt)
17/12/18 08:52:58:880 -    Valor:0,07, len:4
17/12/18 08:52:58:885 -    SetRetorno(0, 0,07)
17/12/18 08:52:58:890 - LIB_ConfigLerValor(SATConfig, PaginaDeCodigo)
17/12/18 08:52:58:895 -    Valor:0, len:1
17/12/18 08:52:58:899 -    SetRetorno(0, 0)
17/12/18 08:52:58:904 - LIB_ConfigLerValor(SAT, SignAC)
17/12/18 08:52:58:908 -    Valor:, len:0
17/12/18 08:52:58:913 -    SetRetorno(0, )
17/12/18 08:52:58:919 - LIB_ConfigLerValor(SATConfigArquivos, SalvarCFe)
17/12/18 08:52:58:923 -    Valor:0, len:1
17/12/18 08:52:58:928 -    SetRetorno(0, 0)
17/12/18 08:52:58:940 - LIB_ConfigLerValor(SATConfigArquivos, SalvarEnvio)
17/12/18 08:52:58:945 -    Valor:0, len:1
17/12/18 08:52:58:952 -    SetRetorno(0, 0)
17/12/18 08:52:58:959 - LIB_ConfigLerValor(SATConfigArquivos, SalvarCFeCanc)
17/12/18 08:52:58:966 -    Valor:0, len:1
17/12/18 08:52:58:972 -    SetRetorno(0, 0)
17/12/18 08:52:58:979 - LIB_ConfigLerValor(SATConfigArquivos, SepararPorCNPJ)
17/12/18 08:52:58:984 -    Valor:0, len:1
17/12/18 08:52:58:990 -    SetRetorno(0, 0)
17/12/18 08:52:58:997 - LIB_ConfigLerValor(SATConfigArquivos, SepararPorDia)
17/12/18 08:52:59:003 -    Valor:0, len:1
17/12/18 08:52:59:008 -    SetRetorno(0, 0)
17/12/18 08:52:59:017 - LIB_ConfigLerValor(Extrato, Tipo)
17/12/18 08:52:59:022 -    Valor:0, len:1
17/12/18 08:52:59:027 -    SetRetorno(0, 0)
17/12/18 08:52:59:033 - LIB_ConfigLerValor(Extrato, NumCopias)
17/12/18 08:52:59:038 -    Valor:1, len:1
17/12/18 08:52:59:043 -    SetRetorno(0, 1)
17/12/18 08:52:59:047 - LIB_ConfigLerValor(Extrato, SoftwareHouse)
17/12/18 08:52:59:053 -    SetRetorno(-3, Chave não existe no arquivo de configuração)

===================================================================================================

17/12/18 08:52:59:060 - LIB_UltimoRetorno
17/12/18 08:52:59:065 -    Codigo:-3, Mensagem:Chave n[195][163]o existe no arquivo de configura[195][167][195][163]o

===================================================================================================

obs: S@T TANCA SDK. compatível com a versão ACBrMonitorPLUS 1.2.025

Qualquer coisa me prontifico caso necessário a disponibilizar o terminal para remoto e testes!

ps: Ao mostrar a janela de configuração já mostra a mensagem, será que tenho que configurar editando o arquivo ACBrLib.ini?

Grato.

sat-ini-log.PNG

Editado por OFF-TI
observações
Link para o comentário
Compartilhar em outros sites

  • Fundadores
Em 17/12/2018 at 09:02, OFF-TI disse:

17/12/18 08:52:59:060 - LIB_UltimoRetorno
17/12/18 08:52:59:065 -    Codigo:-3, Mensagem:Chave n[195][163]o existe no arquivo de configura[195][167][195][163]o

Faltou anexar o INI de configuração.. o erro acima, é porque essa chave não existe no INI

Você conseguiu rodar o Demo na sua linguagem ? é bem mais simples iniciar por ele..

  • Curtir 1
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.

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Bom dia Pessoal.

Grato pelo pronto atendimento:

Sim, muito fácil a Equipe ACBr realmente é muito qualificada e tenho certeza que será um sucesso está nova fase!

Segue em anexo arquivo log e ini e demais telas para analise;

obs: Abriu o form de configuração, mais não pode gravar os parametros!!! 

Grato.

 

SAT_DLL_BUG2.PNG

sat_dll_bug1.PNG

ACBrLib.ini

ACBrLibSAT-20181220.log

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Bom dia Rafael.

Apaguei a pasta e montei novamente ambiente 32bit.

Eu baixei o demo do Site, copie ACBrSAT32.dll do ACBrSat (Cdecl) e as dll do OpenSSL e LibXml2. (SVN UpDate)

> S@T SDK TANCA (ok)

> ACBrLibSAT-0.1.0.0 (Cdecl)

> C:\Windows\system32>ver

Microsoft Windows [versão 10.0.17763.195]
(c) 2018 Microsoft Corporation. Todos os direitos reservados.

>>> O mesmo problema:

MDA loaderLock

MDA (Assistente de Depuração Gerenciado) de loaderLock detecta tentativas de executar código gerenciado em um thread que mantém o bloqueio do carregador do sistema operacional Microsoft Windows. Qualquer execução desse tipo é inválida porque pode levar a deadlocks e ao uso de DLLs antes de elas terem sido inicializadas pelo carregador do sistema operacional.

Grato.

SAT_ONLINE.PNG

ACBrLib.ini

ACBrLibSAT-20181221.log

Editado por OFF-TI
Link para o comentário
Compartilhar em outros sites

  • Fundadores

Eu nunca usei o Visual Studio... mas resolvi baixar uma versão communit e testar...

Conseguiu Debugar e rodar a aplicação...

 

image.png

 

Senti falta de botões importantes como o "Consultar SAT" e "Consultar Status Operacional"... e já comuniquei isso ao @Rafael Dias...

Usei o emulador SAT do SEFAZ e consegui comunicação e envio de um CFe...

 

Nossa suspeita é que há alguma mistura de DLLs 32 e 64 em sua máquina... por via das dúvidas, copie as DLLs APENAS na mesma pasta do .EXE, pois lá é o 1o Local que o Windows irá procurar

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.

Link para o comentário
Compartilhar em outros sites

×
×
  • 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.