Ir para conteúdo
  • Cadastre-se

dev botao

Recommended Posts

  • Consultores
Postado

Olá pessoal,

Conforme prometido no workshop, seguem detalhes da apresentação, utilizando a biblioteca ACBrLibNFe da convenção de chamadas Cdecl, compilando em x64.

  • Baixando a Lib e identificando a versão que será utilizada
  • Configurando o ambiente C#
  • Configurando o ambiente PHP
  • Configurando o ambiente Java com NetBeans

1. Baixando a Lib e identificando a versão que será utilizada

1.1. Localize a biblioteca que deseja e acesse seu link para a página de download

AGV_vUe-xFdARGx8QtIpMBaEzymRdwOC37lGsL3c

1.1.1. Na página seguinte, clique no botão "Download" para baixar o pacote, com a bilioteca e dependências necessárias para sua execução.

AGV_vUeoYeIS9xYLId7aM64dI9JNa6hHauaIjbzU

1.2. Conteúdo do pacote 

1.2.1. bin

  • Pasta onde se encontram as compilações da biblioteca

1.2.2. dep

  • Pasta contendo as dependências, sendo Dlls da OpenSSL, LibXml2, schemas, ini de serviços ou outras eventuais que sejam necessárias

1.2.3. log

  • Contém o log do componente, que é core da biblioteca, e também o log de alterações na biblioteca

1.3. Versões Single Thread e Multi Thread

1.3.1. As Versões Single Thread ficam localizadas na pasta raiz da bin

AGV_vUfhF-Pouk8HUC7IAE47afyon3xyaYTOudFd

1.3.2. As Versões Multi Thread ficam localizadas na pasta MT

AGV_vUftRkqxdB0ADLiz_lehBmkgRNxMYqv6QVCh

1.4. Convenção de chamada: Cdecl ou StdCall ?

* Acesse este link, da documentação da Lib, para maiores detalhes.

2. Configurando o ambiente C#

2.1. Caminho dos programas de exemplo

  • Programas de exemplo em:  ..\trunk2\ACBr\Projetos\ACBrLib\Demos\C#   
  • Pasta Shared - Core compartilhado: ..\trunk2\ACBr\Projetos\ACBrLib\Demos\C#\Shared

2.2. Soluções Single Thread (sem sufixo) ou Multi Thread (com sufixo MT)

  • As soluções Multi Thread possuem o sufixo MT e as Single Thread não possuem sufixo.
  • Dentro da pasta do programa de exemplo, acesse a pasta Demo e selecione a solução que irá utilizar.

AGV_vUdqwjjcOPvu0rB1b8FFks479EWVAlbSmabI

2.3. Plataformas da solução: x86 ou x64

  • Acesse o Gerenciador de Configurações
  • Selecione Novo, em Plataforma da solução ativa, e preencha x86 ou x64, de acordo com a arquitetura que deseja compilar

AGV_vUepULhXE0LTWUMLVoskS2zuZVcDydiIWzZo

2.4. Salvando a biblioteca e as dependências

  • Acesse a pasta bin, x86 ou x64 (de acordo com o que configurou no item 2.3), Debug e crie uma nova pasta ACBrLib
  • Dentro da pasta ACBrLib, crie uma nova pasta x86 ou x64, de acordo com o que configurou no item 2.3

AGV_vUeqHXxyKHZcxmP1XsaM12girIy-lubwH8CZ

2.4.1. Neste novo caminho que foi criado, salve a biblioteca que irá utilizar e suas dependências

AGV_vUeTqmsA1fqhkwdtCHlooNeICS4UM23HBF7w

2.4.2. Atenção para pegar a bibliteca correta da pasta bin, extraída do pacote baixadose for Single Thread, conforme citado no item 1.3

  • Para versão Single Thread, copie a biblioteca das pastas na raiz da bin: ..\pasta extraída do pacote\bin

image.png

  • Para versão Multi Thread, copie a biblioteca das pastas que se encontram dentro de MT: ..\pasta extraída do pacote\bin\MT

AGV_vUd7HGv79IiqPkfevp9_UvPVJJUFEm5s80_X

2.4.3. Faça o mesmo para as dependências, sempre tomando o cuidado de pegar as dlls da arquitetura em que compila a aplicação, conforme o item 2.3

AGV_vUcG-ZHII8OySImABvRmRm46H9Bov4O6wPqw

AGV_vUeFi2NwT3QN_9qh_peqH3D6Ca1c51tO7pOc

2.5. Compile e execute o programa de exemplo

AGV_vUfpdKIjLcUegxyrCexdEA0KOZcJYDgbERDN

2.6. Siga os passos indicados no item 5 para as configurações básicas para execução do programa de exemplo, elas serão as mesmas para todas as linguagens e o programa de exemplo estará pronto para funcionar

AGV_vUfxPTyLZ7MMG8pLewKVzyRG-bFXfSWV0L0r

2.7. NuGet

  • Para todas as bibliotecas do ACBr foram criados pacotes nuget para as classes de alto nível e o core.

2.7.1. Primeiro devemos remover o core e as classes de alto nível da solução

AGV_vUfduMnRMdO2msupQ_bkVgshjqDETYu2Lyby

2.7.2. Acessar o Gerenciador de pacotes do nuget, no menu ferramentas

AGV_vUewPP4HD0gZG7Cay1DV8_nwWS1Ix0yCbcJV

2.7.3. Pesquisar por ACBrLib

  • Selecionar o pacote da bibliteca que vamos instalar
  • Atenção, pois existem pacotes para Single Thread e Multi Thread, sendo o Single Thread sem sufixo e o Multi Thread com o sufixo MT
  • Selecionamos o pacote, à direita a versão e clicamos em instalar
  • Como os pacotes tem dependência do core, automaticamente o core também será instalado

 AGV_vUdHMOimTybkDuYwrX2qYfQWbBhE33-xgH5U

2.7.4. Na janela seguinte, confirmamos a instalação

AGV_vUc9ZuIv8QmOeTZqHvglZy3OYtH8nJ-l1pfD

2.7.5. Caso existam versões mais recentes dos pacotes, serão exibidas na aba "Atualizações"

  • Neste exemplo, a NFe tinha dependêcia a partir de uma versão anterior à atual do core
  • Ao instalar o core, ele foi listado como tendo uma atualização
  • Recomenda-se manter sempre a última versão para obter todos os recursos disponibilizados
  • A opção de atualização será útil também para futuras alterações nas classes de alto nível

AGV_vUedmC6LssMSh-xPAcufZX8BFYxNNwD2yJtx

2.7.6. Os pacotes instalados serão listados na aba "Instalado"

AGV_vUeWV3QRE3oqO7e4ouIczeN-7J8putSOuI6g

2.7.7. Ao compilar a solução, já estará funcionando com os nugets.

AGV_vUcawaPWavcFNav_nuXkgise2E7XjkRwWzt7

3. Configurando o ambiente PHP

3.1. Caminho dos programas de exemplo

  • Programas de exemplo em:  ..\trunk2\ACBr\Projetos\ACBrLib\Demos\PHP  
  • ACBrComum - Funções em comum centralizadas: ..\trunk2\ACBr\Projetos\ACBrLib\Demos\PHP\ACBrComum

3.2. Soluções Single Thread (sem sufixo) ou Multi Thread (com sufixo MT)

  • As soluções Multi Thread possuem o sufixo MT e as Single Thread não possuem sufixo.
  • Dentro da pasta do programa de exemplo, acesse a pasta Demo e selecione a solução que irá utilizar.

3.3. Passo a passo para configurar um ambiente com Php-8 + Apache

  • Caso esteja iniciando no PHP, neste link existe um passo a passo completo ensinando como configurar o ambiente do zero 

AGV_vUc8BEjidV-sPb_Q8plR4gu2UrSPC46rU2aP

3.4. Habilitando o FFI no php.ini

  • Para consumo das bibliotecas do ACBr no PHP, vamos utilizar a extensão FFI
  • Ela foi disponibilizada no PHP a partir da versão 7.4.0, caso esteja com uma versão anterior a esta, será preciso atualizar o PHP
  • Acesse o php.ini, na pasta onde o php foi instalado
  • Remova o comentário da extension=ffi
  • Procure pela seção ffi, remova o comentário de ffi.enable e preencha como true
  • Após salvar o arquivo, reinicie o servidor de internet

AGV_vUdWGUM3lb4y3d0QHf62LamPBsMJ_CYYDiHC

3.5. Verificando FFI no phpinfo()

  • Quando o FFI estiver habilitado, ele será exibido no phpinfo

AGV_vUdvewZRKtjyBmGTf3KqYuy1T-C2TsdvSa71

3.6. Acesse ..\trunk2\ACBr\Projetos\ACBrLib\Demos\PHP e copie as pastas do programa de exemplo que irá utilizar e da ACBrComum para a raiz do seu servidor de internet

AGV_vUctNcOB3d5YUSJ1HzRADw_xhFs6x0H5V7MN

3.7. As pastas dos programas de exemplo já foram enviadas para o SVN com a estrutura de pastas onde devem ser salvas a Lib e as dependências

  • Acesse a pasta MT ou ST, de acordo com o programa de exemplo que irá utilizar
  • Depois ACBrLib
  • E por último a pasta x86 ou x64, dependendoda versão do seu ambiente PHP

AGV_vUefU267YvKOEUnd3wOJSVKe1IGhJbg_lKgv

3.8. Dentro da pasta da arquitetura que selecionou, haverá um arquivo Leia-me instruindo qual a biblioteca que deverá ser salva naquele local

  • Copie a biblioteca e as dependências, conforme instruído nos itens 2.4.2 e 2.4.3
  • Lembrando sempre em tomar cuidado com a versão ST ou MT, conversão de chamadas e arquitetura

AGV_vUdTvbPMy9xTQlGWUuUWcBMN5vxfsvuKy9b3

3.9. Os programas de exemplo possuem uma página única para ST e MT: ACBrNFeBase.php

AGV_vUdsO22qMBmuYvyVxLT8KsvLvYv_rIPSCKb3

3.9.1. Para acessar a versão que deseja, selecione o arquivo com o sufixo desejado

  • ACBrNFeDemoST.php: Para Single Thread
  • ACBrNFeDemoMT.php: Para Multi Thread

AGV_vUdbogYtIAt1Drs9N-P9zmE0ie8RQBQ8BpAQ

3.10. Exemplo acessando a versão Multi Thread

  • Como a pasta do programa de exemplo foi salva na raiz do servidor de internet, acessaremos localhost/NFe/ACBrNFeDemoMT.php
  • Siga os passos indicados no item 5 para as configurações básicas para execução do programa de exemplo, elas serão as mesmas para todas as linguagens e o programa de exemplo estará pronto para funcionar

AGV_vUdepBz9QjIaKBIPXIJOMWv6m38HPVJnM3VY

3.11. Servidor linux sem ambiente gráfico

  • Este item esta sendo analisado e traremos mais informações assim que houver uma resposta

3.11.1. As bibliotecas do ACBr possuem dependência de ambiente gráfico devido ao motor de relatórios utilizado

  • Estamos trabalhando para utilizar somente o FPDF e, com isso, acabar com essa dependência
  • Enquanto isso não acontece, para servidores que não possuem ambiente gráfico, é necessário que seja instalado um emulador, como o XVFB
  • Segue um dos nossos cursos para os usuários PRO onde esse assunto foi abordado

3.11.2. Com o emulador instalado, é necessário incluir a linha a seguir nos fontes antes de carregar a Lib

putenv("DISPLAY=:99");

3.11.3. Isso já foi tratado nas funções da ACBrComum.php

AGV_vUedwOyw2JlkJ94E3X1ZM2oReNjgoB4eAIOY

4. Configurando o ambiente Java com NetBeans

4.1. Caminho dos programas de exemplo

  • Programas de exemplo em:  ..\trunk2\ACBr\Projetos\ACBrLib\Demos\Java  
  • ACBr Common - Core compartilhado: ..\trunk2\ACBr\Projetos\ACBrLib\Demos\Java\ACBr Common

4.2. Projetos Single Thread (sem sufixo) ou Multi Thread (com sufixo MT)

  • As soluções Multi Thread possuem o sufixo MT e as Single Thread não possuem sufixo.
  • Dentro da pasta do programa de exemplo, acesse a pasta Demo e selecione a solução que irá utilizar.

AGV_vUfitFZnAxCQ6L-XNJo-8uMbBlr-_COmFucD

4.3. Abra os projetos ACBr Common e o da pasta Imports que contém os binds dos métodos da bblioteca

AGV_vUcODIzgxAmHZRvalOLqDDDFBZOCJ0kPD2MP

AGV_vUcfxE6TY7qWlA-MNc-fCWvTpy-kt5aujXEc

4.4. Plataformas dos projetos: x86 ou x64

  • Siga os passos nos 3 projetos
  • Botão direito sobre o projeto, Propriedades
  • Acesse Libraries
  • Em Java Plataform, selecione a JDK da arquitetura que irá compilar e confirme

AGV_vUdj9PMUAy5D7uaeDwtylxo0OJkNth2L6X8i

AGV_vUeAvu0fmLNxSvgdt8WRFX_L4HJWZ_woMXUx

4.5. Acesse a pasta do programa de exemplo que carregou

  • Crie a pasta ACBrLib 
  • Dentro de ACBrLib, crie a pasta x86 ou x64 de acordo com a arquitetura que irá compilar

AGV_vUdTV0ckcVSiTaDmAIHwtOcmQXwMT3h8xQYe

  • Diferente das outras linguagens mostradas anteriormente, o java não vai considerar as depedências dessa pasta, então vamos salvar somente a biblioteca

image.png

4.5.1. Para o projeto enxergar a biblioteca, vamos configurar o caminho criado para salvar a dll

  • Acesse as propriedades do projeto do programa de exemplo
  • Em Libraries, do lado direito, na aba Compile, clique no botão com sinal de [ + ], ao lado de Classpath
  • Clique na opção Add JAR/Folder
  • Selecione a pasta x86 ou x64 que foi criada no item anterior

AGV_vUdnx9Qdh6SgA9CICOqAMtmZvWNi5F4215Oz

AGV_vUcbKtaosT3zMpTlRX_6W82arQTYpkZrNLCN

4.6. Compile e execute o programa de exemplo

  • Siga os passos indicados no item 5 para as configurações básicas para execução do programa de exemplo, elas serão as mesmas para todas as linguagens e o programa de exemplo estará pronto para funcionar

AGV_vUfSET_gBuA8Wr01FO75EkfkAZXylsJ_3u-j

5. Configurações básicas para utilização do programa de exemplo

5.1. Na aba Geral, configure a "Pasta dos Logs" e a "Pasta dos Schemas"

* No pacote onde a lib foi baixada, a pasta de schemas da NFe estará disponível em \dep\Schemas\NFe

AGV_vUfPLjhK4FVp7gnWT6rzLbZ3EPtu3pgutrcy

5.2. Na aba Arquivos, configure: "Pasta Arquivos NFe", "Pasta Arquivos Inutilização" e "Pasta Arquivos Evento"

AGV_vUduqTaowiTEI-MJ63JVWiYKhovKw9iorgEz

5.3. Na aba Webservices

  • SSL Type: No momento da criação deste tópico, o padrão utilizado por todos os DFes é TLS1.2, selecione a opção LT_TLSv1_2
  • TimeOut: Configure o padrão 30k, lembrando que este é o limite de tempo de execução da sua chamada, o que quer dizer que será o tempo máximo que a aplicação irá esperar de resposta, caso o serviço responda em menos tempo, o retorno será neste tempo.
  • Salvar envelope SOAP: Contém os envelopes soap enviados para para o serviço consumido e podem ser úteis para análise em casos de eventuais problemas.

AGV_vUcFtvoVPV2TxtCILIYTrEhC8tftG8LVWedy

5.4. Na aba Certificados

5.4.1. Configurando certificado A1

  • Recomendamos sempre a utilização da OpenSSL para certificados A1, pois ela é autossuficiente e não depende de atualizações do Sistema Operacional.
  • Configure a CryptLib e HttpLib como OpenSSL e a XmlSignLib como LibXml2
  • Para utilização do certificado salvo em disco, preencha o caminho do certificado no campo "Caminho" ou para pegar o conteúdo do certificado em um banco de dados, por exemplo, preencha "Dados PFX"
  • Para ambos, preencha a senha do certificado

AGV_vUeKOBCtOw5kflJUaaA0kIi5DkCU1DZp5LTp

 

5.4.2. Configurando certificado A3

  • Lembrando sempre que o certificado A3 é historicamente muito problemático, pois aprensenta problemas com driver, falhas devido a atualizações do Windows e outros.
  • Requer que todas as atualizações do windows estejam em dia
  • Configure a CryptLib como cryWinCrypt, HttpLib como httpWinHttp e a XmlSignLib como xsLibXml2
  • Configure a senha e o Número de Série do certificado

AGV_vUeUNQKB6YZWqbcAVIqrJGWqcFtmMLzZA6zY

5.5. Com essas configurações o programa de exemplo estará pronto para funcionar

AGV_vUfxPTyLZ7MMG8pLewKVzyRG-bFXfSWV0L0r

 

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