Para que o NFeasy possa emitir notas com sucesso é preciso que o certificado e a comunicação com o webservice da SEFAZ esteja funcionando corretamente.
Este artigo irá te auxiliar com possíveis problemas de falha na comunicação que podem gerar duplicidade, contingência, entre outros!
Alguns problemas de comunicação ocorrem por falha nos protocolos SSL/TSL, por este motivo é mportante que estas configurações estejam devidamente configuradas.
Estas configurações podem mudar de acordo com a unidade federativa (UF) do emissor, mas de modo geral pode ser feito a configuração abaixo.

Clique em OK.
Em algumas máquinas será necessário habilitar somente o TLS 1.2. |
Certificados vencidos ou duplicados instalados na máquina podem causar problemas de comunicação com a SEFAZ, ou até rejeições.
Verificar o Repositório de Certificados do Windows do Computador;
O Framework.Net instalado no Windows é necessário para o funcionamento correto do NFeasy.
Nas versões superiores ao Windows 7, ele é atualizado conforme atualizações do Windows, não sendo possível desinstalar ou instalar manualmente. Por isso é importante que o Windows esteja devidamente atualizado.
Para saber se a versão mínima do Framework está instalada para rodar o Nfeasy siga os passos abaixo:
Será exibida a mensagem True ou False.
True: Caso a versão mínima esteja instalada corretamente. False: Caso a versão mínima não esteja instalada corretamente |
Caso não esteja instalada a versão mínima, você pode baixar a versão Clicando Aqui ou realizar a atualização pelo Windows Update. |
Caso o Framewrok.Net esteja corrompido, siga os passos abaixo:
Rode os seguintes comandos individualmente:
sfc /scannow |
|---|
Dism /Online /Cleanup-Image /CheckHealth |
Dism /Online /Cleanup-Image /ScanHealth |
Dism /Online /Cleanup-Image /RestoreHealth |
ipconfig /flushdns |
Alguns antivírus podem bloquear o acesso aos webservices da SEFAZ por meio de sistemas desktops, estes bloqueios normalmente são chamados de proteção do HTTPS.
Verifique com seu técnico como prosseguir.
Autor do artigo: esthefany.sup.shop (Não remova esse quadro)Descreva o passo a passo para o cliente seguindo os padrões de escrita de artigos, como:
|
(Não remova esse quadro)Essas informações não se tonam parte do conteúdo em sua nova página, elas ficam ocultas e só aprecem para usuário logado e se o artigo/dica estiver em modo de edição! |
<div id="text-end"></div>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-193974933-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag2(){dataLayer.push(arguments);}
gtag2('js', new Date());
gtag2('config', 'UA-193974933-1');
function gtagevents (action,category) {
console.log(category + ':' + action);
gtag2('event',action,{event_category:category,event_label: document.title});
};
</script>
<script src="https://player.vimeo.com/api/player.js"></script>
<script>
(function(){
// RASTREIO DE USO DO VÍDEO
function gtagvideo(action){
gtagevents(action,'Video')
}
var iframe = document.querySelector('iframe');
var player = new Vimeo.Player(iframe);
var seeking = false;
var priorTime = 0;
var currentTime = 0;
var reportouFinalDoConteudo = false;
// se pausar o play é acionado também.
player.on('play', function(data) {
if(data.seconds == 0){
gtagvideo('video-iniciado');
}
priorTime = data.seconds;
});
player.on('ended', function() {
gtagvideo('video-finalizado');
});
//seeking e timeupdate são disparados juntos, logo o tempo dos 2 é atualizado também. Preciso garantir que a variavel starttime seja atualizada ordenadamente (sempre antes ou após o seeking).
// pra isso preciso setar uma variavel no timeupdate e ler no seeking para garantir a ordem. Se ela estiver false será alterada na próxima iteração.
player.on('seeking', function(data) {
seeking = true;
});
player.on('pause',function(data){
gtagvideo('video-pausado');
});
player.on('timeupdate', function(data) {
if(seeking){
if(currentTime < priorTime){
gtagvideo('video-voltando');
}
if(currentTime > priorTime){
gtagvideo('video-avancando')
}
seeking = false;
}
priorTime = currentTime;
currentTime = data.seconds;
var finalDoConteudo = (data.duration - data.seconds) < 5;
if(finalDoConteudo && !reportouFinalDoConteudo){
gtagvideo('conteudo-finalizado')
reportouFinalDoConteudo = true;
}
});
player.on('fullscreenchange', function() {
gtagvideo('video-fullscreen');
});
})();
</script>
<script>
// RASTREIO DO USO DE AUDIO
(function(){
function gtagaudio(action){
gtagevents(action,'Audio')
}
var audio = document.querySelector("audio");
var seeking = false;
var priorTime = 0;
var currentTime = 0;
audio.addEventListener('play',function(){
if(audio.currentTime == 0){
gtagaudio('audio-iniciado');
}
priorTime = audio.currentTime;
});
audio.addEventListener('ended',function(){
gtagaudio('audio-finalizado');
});
audio.addEventListener('pause',function(){
gtagaudio('audio-pausado');
});
audio.addEventListener('seeking', function(data) {
seeking = true;
});
audio.addEventListener('timeupdate', function(data) {
if(seeking){
if(currentTime < priorTime){
gtagaudio('audio-voltando');
}
if(currentTime > priorTime){
gtagaudio('audio-avancando')
}
seeking = false;
}
priorTime = currentTime;
currentTime = audio.currentTime;
});
})();
</script>
<script>
(function(){
var terminou = false;
//RASTREIO DE LEITURA ATÉ O FINAL DA PÁGINA
document.addEventListener('scroll',() => {
if(document.getElementById('text-end').getBoundingClientRect().top < window.innerHeight){
if(!terminou){
terminou = true;
gtagevents('artigo-lido','Pagina')
}
}else{
terminou = false;
}
});
})();
</script>
|
<div id="text-end"></div>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-19PXZY9EEV"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag3(){dataLayer.push(arguments);}
gtag3('js', new Date());
gtag3('config', 'G-19PXZY9EEV');
function gtagevents (action,category) {
console.log(category + ':' + action);
gtag3('event',action,{event_category:category,event_label: document.title});
};
</script>
<script src="https://player.vimeo.com/api/player.js"></script>
<script>
(function(){
// RASTREIO DE USO DO VÍDEO
function gtagvideo(action){
gtagevents(action,'Video')
}
var iframe = document.querySelector('iframe');
var player = new Vimeo.Player(iframe);
var seeking = false;
var priorTime = 0;
var currentTime = 0;
var reportouFinalDoConteudo = false;
var reportouMetadeAssistido = false;
// se pausar o play é acionado também.
player.on('play', function(data) {
if(data.seconds == 0){
gtagvideo('video-iniciado');
}
priorTime = data.seconds;
});
player.on('ended', function() {
gtagvideo('video-finalizado');
});
//seeking e timeupdate são disparados juntos, logo o tempo dos 2 é atualizado também. Preciso garantir que a variavel starttime seja atualizada ordenadamente (sempre antes ou após o seeking).
// pra isso preciso setar uma variavel no timeupdate e ler no seeking para garantir a ordem. Se ela estiver false será alterada na próxima iteração.
player.on('seeking', function(data) {
seeking = true;
});
player.on('pause',function(data){
gtagvideo('video-pausado');
});
player.on('timeupdate', function(data) {
if(seeking){
if(currentTime < priorTime){
gtagvideo('video-voltando');
}
if(currentTime > priorTime){
gtagvideo('video-avancando')
}
seeking = false;
}
priorTime = currentTime;
currentTime = data.seconds;
var finalDoConteudo = (data.duration - data.seconds) < 5;
if(finalDoConteudo && !reportouFinalDoConteudo){
gtagvideo('video-conteudo-finalizado')
reportouFinalDoConteudo = true;
}
var metadeAssistido = data.seconds > (data.duration/2);
if(metadeAssistido && !reportouMetadeAssistido){
gtagvideo('video-metade-assistido')
reportouMetadeAssistido = true;
}
});
player.on('fullscreenchange', function() {
gtagvideo('video-fullscreen');
});
})();
</script>
<script>
// RASTREIO DO USO DE AUDIO
(function(){
function gtagaudio(action){
gtagevents(action,'Audio')
}
var audio = document.querySelector("audio");
var seeking = false;
var priorTime = 0;
var currentTime = 0;
audio.addEventListener('play',function(){
if(audio.currentTime == 0){
gtagaudio('audio-iniciado');
}
priorTime = audio.currentTime;
});
audio.addEventListener('ended',function(){
gtagaudio('audio-finalizado');
});
audio.addEventListener('pause',function(){
gtagaudio('audio-pausado');
});
audio.addEventListener('seeking', function(data) {
seeking = true;
});
audio.addEventListener('timeupdate', function(data) {
if(seeking){
if(currentTime < priorTime){
gtagaudio('audio-voltando');
}
if(currentTime > priorTime){
gtagaudio('audio-avancando')
}
seeking = false;
}
priorTime = currentTime;
currentTime = audio.currentTime;
});
})();
</script>
<script>
(function(){
const tamanhoDaTela = window.innerHeight;
let terminou = false;
let chegouNaMetade = false;
// se não remover o tamanho da tela do meio da página, o evento só será disparado quando o meio da página estiver acima da área visível.
// fazendo dessa forma assim que o meio da página estiver visível na base da janela o evento será disparado.
const meioDoTexto = (document.getElementById('text-end').getBoundingClientRect().top / 2) - tamanhoDaTela;
//RASTREIO DE LEITURA ATÉ O FINAL DA PÁGINA
document.addEventListener('scroll',() => {
if(document.getElementById('text-end').getBoundingClientRect().top < tamanhoDaTela){
if(!terminou){
terminou = true;
gtagevents('artigo-lido','Pagina')
}
}else{
terminou = false;
}
//RASTREIO DE LEITURA ATÉ O MEIO DA PÁGINA
if(meioDoTexto < window.scrollY) {
if(!chegouNaMetade){
gtagevents('artigo-lido-ate-metade','Pagina');
chegouNaMetade = true;
}
} else {
chegouNaMetade = false;
}
});
})();
</script>
|