OpenAC-Net / OpenAC.Net.NFSe

Biblioteca para emissão e transmissão de NFSe.
MIT License
80 stars 62 forks source link

Nao é possivel informar a serie do certificado no projeto demo #116

Closed Transis-Felipe closed 2 years ago

Transis-Felipe commented 2 years ago

Como não abre a tela para seleção do certificado, não tem como informar ele no projeto demo.

image

Transis-Felipe commented 2 years ago

Se digitar o numero de serie, apaga os campos caminho e senha

image

Transis-Felipe commented 2 years ago

Fiz uma alteracao para permitir informar o numero de serie, veja se tu concorda com o PR https://github.com/OpenAC-Net/OpenAC.Net.NFSe/issues/116

rftd commented 2 years ago

Este comportamento é o correto, não é para informar o certificado e o número de serie. Sim um ou o outro.

Transis-Felipe commented 2 years ago

Como fazer para informar agora, com o .net 6, que não abre mais a selecao de certificado ?

adrbarros commented 2 years ago

image

image

image Clique Duplo sobre o certificado

image Pronto, ta ai o número. Pode ser uma solução para o momento.

rftd commented 2 years ago

Tem como chamar a tela direto no app em .net 6-winforms tbm

Transis-Felipe commented 2 years ago

Pronto, ta ai o número. Pode ser uma solução para o momento.

@adrbarros Concordo contigo, eu fiz um PR https://github.com/OpenAC-Net/OpenAC.Net.NFSe/pull/119 (workaround) para possibilitar digitar manualmente o numero de série, enquanto não estava abrindo a tela para seleção do certificado.

No momento temos esse bug, que não permite executar o projeto demo.

rftd commented 2 years ago

@transis2 não tem bug algum, o que temos no .net framework é apenas uma conveniência, não e obrigação da Biblioteca mostra a tela de seleção de certificados. Como disse basta copiar o código e colocar no demo ou no seu projeto que tu vai ter o mesmo efeito.

var store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
store.Open(OpenFlags.MaxAllowed | OpenFlags.ReadOnly);

var certificates = store.Certificates.Find(X509FindType.FindByTimeValid, DateTime.Now, true)
                           .Find(X509FindType.FindByKeyUsage, X509KeyUsageFlags.DigitalSignature, false);

X509Certificate2Collection certificadosSelecionados;
 certificadosSelecionados = X509Certificate2UI.SelectFromCollection(certificates, "Certificados Digitais",
                        "Selecione o Certificado Digital para uso no aplicativo", X509SelectionFlag.SingleSelection);

var certificado = certificadosSelecionados.Count < 1 ? null : certificadosSelecionados[0];
 txtNumeroSerie.Text = certificado?.GetSerialNumberString() ?? string.Empty;
Transis-Felipe commented 2 years ago

Não estou conseguindo colocar o número de serie. Quando eu seleciono o certificado, ele limpa todos os campos. image