Jump to content

click.png

click.png

click.png

click.png

click.png

click.png

click.png

click.png

click.png

click.png click.png click.png

logo_acbr_paygo.png

TEF ACBr PayGo
Seja um revendedor e ofereça uma solução completa para seu cliente.


Saiba mais

beneficios.png

Importar as assinaturas via C#?


OFF-DEV
  • Este tópico foi criado há 899 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 to comment
Share on other sites

  • Consultores

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.
Consultor SAC ACBr Rafael Dias
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Desenvolvedor ACBrLib.

 

Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

  • Consultores
  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.
  • Like 1
Consultor SAC ACBr Rafael Dias
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Desenvolvedor ACBrLib.

 

Link to comment
Share on other 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 to comment
Share on other sites

  • Consultores

Não esta em homologação pode ser usado em produção.

Esta sua interface em C# está incorreta, tem varias coisas ali que nem se quer existem.

Recomendo muito olhar o demo abaixo.
 

 

  • Like 1
Consultor SAC ACBr Rafael Dias
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Desenvolvedor ACBrLib.

 

Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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

Edited by OFF-TI
anexo:Imagem configuração exceção
Link to comment
Share on other 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 to comment
Share on other 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.

  • Like 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 to comment
Share on other sites

  • Membros Pro

Bom dia Daniel,

Segue a configuração:

Uso: Tanca [email protected] 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: [email protected] 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

Edited by OFF-TI
observações
Link to comment
Share on other 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..

  • Like 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 to comment
Share on other sites

  • Consultores

Acabei de enviar uma nova versão do Demo pois o Antigo estava com as Chaves Antigas de antes do Refactory das impressões, o manual vai estar sendo enviado amanha para download.
 

 

  • Like 1
Consultor SAC ACBr Rafael Dias
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Desenvolvedor ACBrLib.

 

Link to comment
Share on other 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 to comment
Share on other sites

  • Consultores

Olha eu montei uma VM baixei o demo do Site, copie as dll do ACBrSat (Cdecl) e as dll do OpenSSL e LibXml2, e não consegui emular este problema.

Obs: todas as dll foram x86 pois o demo é 32 bits.

 

  • Like 1
Consultor SAC ACBr Rafael Dias
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Desenvolvedor ACBrLib.

 

Link to comment
Share on other 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)

> [email protected] 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

Edited by OFF-TI
Link to comment
Share on other 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 to comment
Share on other sites

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.