Verificação dos Módulos
Versão do PHP 8.2.27 | OK | mínimo PHP 5.4.0 |
cURL versão 7.76.1 | OK | mínimo cURL 7.22.2 |
OpenSSL versão OpenSSL 3.2.2 4 Jun 2024 | OK | mínimo OpenSSL 1.0 |
DOM versão 2.13.4 | OK | mínimo DOM 2.0.6 |
GD versão enabled | OK | ----- |
SOAP versão enabled | OK | ----- |
ZIP versão 1.21.1 | OK | ----- |
O uso do NFePHP requer vários modulos do PHP para que possa funcionar. Ou seja podem haver problemas no uso da API dependendo do Sistema Operacional e da atualização de cada um dos módulos requeridos.
Alguns problemas conhecidos se referem ao cURL que é usado para a comunicação SOAP, dependendo do S.O. o mesmo pode estar compilado para usar NSS ao invés do OpenSSL que é o padrão. E o NSS tem alguns problemas com o formato PKCS#8 das chaves privadas exportadas pelo PHP.
Outro problema conhecido diz respeito a versão do PHP e também ao cURL. Em alguns casos o PHP não reconhece de forma automática qual é o protocolo de encripatação da conexão (SSLv3, TLSv1, TLSv1.1, etc..) e algumas SEFAZ estão usando vários desses protocolos diferentes. Se o PHP não puder reconhecer o protoclo de forma autonoma, será necessário usar os recursos da API para forçar o uso do protocolo correto, caso a caso.
Portanto é recomendável que seja usado o S.O. mais atualizado possível. Testes foram feitos usando DEBIAN (wheezy e Jessie) e UBUNTU 14.04 LTS em ambos os casos a API funcionou perfeitamente, e usando apenas os pacotes da distribuição sem a necessidade de baixar pacotes de outras fontes ou compila-los de fonte mais atualizada.
Outros modulos podem ser necessários em função dos pacotes usados e instalados via Composer (vide composer.json)
Cadastro do Emitente
Ambiente
Razão Social do Emitente
Nome Fantasia
CNPJ do Emitente
IE do Emitente
IM do Emitente
IE (Subst. Tributário)
CNAE do Emitente
Unidade da Federação
Regime Tributário
Path dos Certificados
Nome do arquivo pfx (Certificado)
Senha do Certificado
Palavra Passe
URL do Site
Token IBPT
CSC - Código de Segurança do Contribuinte (antigo Token)
Identificador do CSC NFCe
Estes campos referen-se a os dados principais do emitente e todos os campos em amarelo são OBRIGATÓRIOS.
Razão Social - indicar a Razão Social do emitente exatamente igual ao seu registro na SEFAZ, alguns simbolos poderão ser substituidos por seus equivalentes em entidades html (ex. &)
Nome Fantasia - indicar o Nome Fantasia do emitente exatamente igual ao seu registro na SEFAZ, alguns simbolos poderão ser substituidos por seus equivalentes em entidades html (ex. &)
Inscrição Estadual - indicar o número de Cadastrado de Contribuintes do ICMS, pode ser informado o literal “ISENTO” para os contribuintes do ICMS isentos de inscrição no Cadastro de Contribuintes de ICMS.
Inscrição Municipal - inidicar o número de Cadastro de Contribuintes do ISSQN, necessário para emissão de NF-e conjugada, com itens de produtos sujeitos ao ICMS e itens de serviços sujeitos ao ISSQN.
Inscrição Estadual do Substituto Tributário - indicar o número de Cadastrado de Contribuintes do ICMS do estado de Destino (Substituto), para quem pretender efetuar vendas interestaduais de mercadorias sujeitas à substituição tributária.
Regime Tributário - selecione a opção de regime tributário em que o emissor atua (MEI - Microempreendedor Individual atua no regime 'Simples Nacional').
CNAE - indicar o Código Nacional de Atividade Econômica principal do emitente, necessário quando a Inscrição Municipal for informada.
CSC - Código de Segurança do Contribuinte, é obrigatório informar para quem deseja emitir NFC-e, é fornecido pelas SEFAZ (ou pode ser gerado através da API se sua SEFAZ possui o serviço por WebService).
Dica: Utilize o site da Receita Federal para verificar os dados cadastrais do CNPJ, clique aqui.
Estrutura de Pastas (Files)
A estrutura de pastas é onde os arquivos xml são salvos, sejam NFe, NFCe, CTe, MDFe, CLe, ou NFSe, bem como todos os arquivos xml relatvos as mensagens da comunicaçao SOAP, tanto as enviadas como as recebidas. Tanto para ambiente de produção como de homologação.
As pastas indicadas devem ser criadas manualmente anteriormente e com permissões pré-configuradas para permitir o acesso de escrita por parte do usuário do servidor web.
Cada pasta desta estrutura tem uma finalidade e podem ou nao estar sendo utilizadas. Em geral sao utilizadas as pastas:
enviadas/aprovadas - XML de documentos aprovados pela SEFAZ (esses arquivos devem ser mantidos por pelo menos 5 anos)
enviadas/denegadas - XML de documentos DENEGADOS pela SEFAZ (esses arquivos devem ser mantidos por pelo menos 5 anos)
recebidas - XML dos documentos recebidos de terceiros (esses arquivos devem ser mantidos por pelo menos 5 anos)
temporarias - XML da comunicação, tanto mensagens enviadas como recebidas.
NOTA: A pasta das temporarias é sem duvida a mais carregada de todas e com certeza irá requerer limpezas periódicas.
Configurações para Impressão
Formato Padrão na impressão
Tamanho do Papel (A4 apenas)
Imprimir o Canhoto
Posição do Logo
Fonte
Impressora
Logo (80x80px ou 160x50px jpg, gif ou png)
Para a impressão dos documentos auxiliares seja para NFe, CTe, MDFe ou CLe, está definido em documentação oficial o uso obrigatório de papel A4 e do tipo de letras "Times" (serifados), isso é fixo e não pode ser mudado.
O formato de impressão seja ele "Portraite" ou "Landscape" é definido também pelo campo <tpImp> do XML, portanto essa definição aqui estabelecida NÃO sobrepõe a especificação contida no XML, e nem é válida para qualquer documento auxiliar.
A impressão de documentos auxiliares da NFC-e deve ser feita em impressoras comum (não fiscal) térmicas, laser ou deskjet de 80 colunas.
Por enquanto a API não envia os dados direto para impressora, e por tanto a DANFCE só é impressa em PDF ou HTML.
Caso não seja informado uma imagem para logo, será usado as imagens padrão para cada tipo de documento NF-e e NFC-e.
O arquivo de configuração "config.json" será salvo na pasta indicada no path e também na pasta "default" do NFePHP, caso não sejas as mesmas.
A ideia por traz do uso do formato json foi permitir de maneira mais facil usar a base de dados pra guardar os dados de configuração para o uso da API, sem ter recorrer a um arquivo mantido em pastas.
Se bem executado isso pode facilitar em muito o uso no mesmo servidor para multiplos clientes, além de prover um grau um pouco maior de segurança.
NOTA: os dados passarão por validações antes da gravação. Caso não atendam as regras os dados serão rejeitados. Mantenha o arquivo config.json em local seguro fora do acesso de intrusos.