Ir para conteúdo
  • Cadastre-se

MarcoCestari

Membros
  • Total de ítens

    5
  • Registro em

  • Última visita

Posts postados por MarcoCestari

  1. 2 horas atrás, Marcos Gerene disse:

    Boa tarde,

    Em  outro post teve um usuário que havia postado uma solução para este problema além de uma DLLs em  C#, porém o post se encaminhou para uma discussão (no bom sentido)  sobre as DLLs em C# e foi "ignorado" a correção feita para o componente já existente, eu até fiz uma pergunta se a correção tinha sido aceita mas não obtive resposta.

    O Post:

    Minha pergunta:

    Hoje pesquisando um pouco sobre o fonte para entender melhor o GNRe acabei lembrando desse detalhe e como tinha um pouco mais de tempo resolvi debugar para ver aonde o erro ocorria e vi que o mesmo ocorre na ACBrDFeCapicomDelphiSoap no evento before post e é um erro "forçado" (pois parte de uma validação que gera um exception).

    Notei que o amigo do post que citei fazia uma alteração nessa unit assim:

    
        // MESTRE SISTEMAS
        if SetCertContext and not InternetSetOption(Data, INTERNET_OPTION_CLIENT_CERT_CONTEXT,
          PCertContext, SizeOf(CERT_CONTEXT)) then
          raise EACBrDFeException.Create('Erro ao ajustar INTERNET_OPTION_CLIENT_CERT_CONTEXT: ' +
                                         IntToStr(GetLastError));
        // MESTRE SISTEMAS


    Joguei as informações e units que foram liberados no post anterior no lugar do que eu tinha aqui para testar, mas não consegui chegar até o ponto que força esse exception.

    Algum dos moderadores poderia me dizer se essas alterações foram analisadas? O que foi sugerido pode ser aproveitado?

     

    Att, Marcos

    Essa alteração é simples, existe alguns webservices que necessitam setar o certificado e outros não. Foi criado a propriedade SetCertContext (Padrão True) para controlar isso. Lembrando que só implementei essa propriedade para funcionar com a libCapicomDelphiSoap (Envio pelo Indy), com a libCapicom é usado a classe TACBrHTTPReqResp para o envio, nessa classe existe a propriedade UseCertificate, que tem a mesma função da propriedade que eu criei, mas que não está sendo usada pelo o que eu vi nos fontes.

    Na NFSe (TNFSeWebService) eu sobrescrevo o método EnviarDados para setar essa propriedade conforme o provedor em uso, pois alguns precisam dela ativa e outros não.

    Eu criei essa propriedade na classe TDFeSSLClass pois ela deve ser usada em todas as formas de envio (Exceto com OpenSSL, que deve controlar isso internamente de uma forma diferente)

  2. Cobrar suporte em um projeto opensource? Só se a pessoa adquiriu o SAC de vocês realmente.

    O suporte em um projeto opensource igual o ACBr não vêm só da "equipe fechada" de vocês, que tem acesso ao SVN. A comunidade é grande, e tem várias pessoas para dar suporte.

    Enfim, não foi só a implementação do Prodam que está nas alterações, caso queira verificar e subir ao SVN outras correções, as alterações estão ai.

    Obrigado.

  3. É em C# conforme mencionei. A mesma pode ser compilada com Mono caso necessite utilizar fora do windows. Eu tinha implementado em delphi usando os componentes da Eldos, mas como é um componente pago, não tem como distribuir.

    Eu também entendo que vocês não podem dar suporte, mas a implementação está ai, para quem quiser e para quem sabe se virar com isso. Não vejo necessidade de vocês darem suporte a tudo que é distribuído, até porque é um projeto opensource e muito grande. A comunidade em si é o suporte para essas implementações mais específicas.

  4. Segue anexo algumas correções e implementações para a NFS-e da Trunk 2.

    Implementado provedor Prodam (Utilizado em Blumenau/SC e São Paulo) - Apenas testado em Blumenau.

    Corrigido o problema de "INTERNET_OPTION_CLIENT_CERT_CONTEXT" ao transmitir a NFS-e de alguns provedores. Foi criado a propriedade "SetCertContext" na classe TDFeSSLClass, por padrão é True, porém na NFS-e essa propriedade é desabilitada conforme o provedor em uso.

    Criado possibilidade de configurar as tags dos xmls no arquivo de configuração, essa alteração foi necessária para a implementação do provedor Prodam. Segue imagem abaixo com o nomes para configuração. Caso essas configurações não existam no arquivo, o padrão que existe hoje será usado.

    564f57fc82aa6_novasconfigs.png.f20e74e45

    Corrigido outros problemas referentes aos provedores SimplISS e Thema.

    O objeto FRetornoNFSe da classe TNFSeWebService passa a ser destruído apenas em seu destructor caso ele tenha sido criado, esse objeto é usado em nosso sistema após realizar as operações da NFS-e, porém essa alteração é específica para a forma em que trabalhamos com o ACBr e não deve ser juntada a principio.

    Em anexo segue todos os fontes e ini's que foram alterados e também a dll para gerar a assinatura do provedor Prodam (Em C#, fontes inclusos).

    Para o correto funcionamento da dll, ela precisa ser registrada com o comando abaixo:

    %SystemRoot%\Microsoft.NET\Framework\v2.0.50727\regasm.exe /codebase /tlb:.\ACBrSignProdam.tlb ACBrSignProdam.dll

     

    As alterações realizadas estão entre os comentários "// MESTRE SISTEMAS".

    ACBrNFSe.rar

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

The popup will be closed in 10 segundos...